<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>groovy Wiki &amp; Documentation Rss Feed</title><link>http://groovy.codeplex.com/Wiki/View.aspx?title=Home</link><description>groovy Wiki Rss Description</description><item><title>Updated Wiki: Home</title><link>https://groovy.codeplex.com/wikipage?version=60</link><description>&lt;div class="wikidoc"&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=groovy&amp;DownloadId=581746" alt="Grrrroooooveeey.jpg" title="Grrrroooooveeey.jpg" /&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The &lt;a href="https://github.com/gavingroovygrover/grojure"&gt;Grojure Language&lt;/a&gt; is the latest exciting addition to the Groovy ecosystem, replacing the discontinued Groovy reboot previously hosted here.&lt;/li&gt;&lt;/ul&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="https://groovy.codeplex.com/wikipage?title=Blog05&amp;referringTitle=Home"&gt;Gavin Grover&amp;#39;s Unicode blog&lt;/a&gt; logs progress on building the Grojure Language, replacing Codehaus Groovy, and promoting Unicode in programming.&lt;/li&gt;&lt;/ul&gt;

&lt;ul&gt;&lt;li&gt;The &lt;a href="http://cjkdecomp.codeplex.com"&gt;CJK decomposition data&lt;/a&gt; is a graphical analysis of the 75,000 Unihan characters in Unicode.&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Fri, 24 May 2013 14:05:05 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130524020505P</guid></item><item><title>Updated Wiki: Blog05</title><link>https://groovy.codeplex.com/wikipage?title=Blog05&amp;version=6</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;u&gt;Gavin Groovy Grover&amp;#39;s UNICODE Blo&lt;/u&gt;g&lt;/h1&gt;
&lt;i&gt;24 May 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="3"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#3"&gt;5 yrs of blogging history&lt;/a&gt;&lt;/h1&gt;
It&amp;#39;s been 5 yrs of blogging &lt;i&gt;(from early 2007, less a year&amp;#39;s gap in the middle)&lt;/i&gt;, so thought I&amp;#39;d list the most important entries...&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Programming and Natural Languages&lt;/h3&gt;
The flagship &lt;a href="https://groovy.codeplex.com/wikipage?title=Kanji%20meets%20Programming"&gt;Kanji meets Programming&lt;/a&gt; explains my motivation for building the Grojure Language &lt;i&gt;(previously the Groovy reboot, before that Grerl-Vy)&lt;/i&gt;. &lt;a href="https://groovy.codeplex.com/wikipage?title=Groovy%20Grammar%20for%20Programming"&gt;Precedences, Parentheses, and Path Expressions&lt;/a&gt; shows some technical details.&lt;br /&gt;&lt;br /&gt;Other thoughts on modelling a programming language on a natural language:
&lt;ul&gt;&lt;li&gt;9 April 2008: &lt;a href="http://gavingrover.blogspot.com/2008/04/syntactic-rank-in-english-and-groovy.html"&gt;Syntactic rank in English and Groovy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;20 June 2008: &lt;a href="http://gavingrover.blogspot.com/2008/06/word-classes-in-english-and-groovy.html"&gt;Word classes in English and Groovy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;22 November 2008: &lt;a href="http://gavingrover.blogspot.com/2008/11/stress-and-unstress-in-computer.html"&gt;Stress and unstress in computer languages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;6 December 2008: &lt;a href="http://gavingrover.blogspot.com/2008/12/thematic-structure-of-english-and.html"&gt;The thematic structure of English and Groovy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;23 April 2009: &lt;a href="http://gavingrover.blogspot.com/2009/04/interactional-function-of-english-and.html"&gt;Interactional function of English and Groovy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;16 January 2010: &lt;a href="http://gavingrover.blogspot.com/2010/04/programming-language-structure.html"&gt;Programming Language Structure&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;h3&gt;Unicode and Symbology&lt;/h3&gt;
&lt;a href="https://groovy.codeplex.com/wikipage?title=Unicode%20Inheritance"&gt;Inheritance Hierarchies for Unicode Characters&lt;/a&gt; shows the next steps in building the Grojure Language: parsing Unicode by modelling it as a heirarchy of characters.&lt;br /&gt;&lt;br /&gt;Other thoughts:
&lt;ul&gt;&lt;li&gt;5 February 2013: &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog04#2"&gt;Unicode Pattern Syntax Tokens&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;29 June 2007: &lt;a href="http://gavingrover.blogspot.com/2007/06/pictorial-analysis-of-cjk-characters.html"&gt;Pictorial analysis of CJK characters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;8 April 2007: &lt;a href="http://gavingrover.blogspot.com/2007/04/foreigners-typing-chinese.html"&gt;Foreigners typing Chinese&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
My previous little project was creating the &lt;a href="https://cjkdecomp.codeplex.com"&gt;CJK decomposition data file&lt;/a&gt;, a graphical analysis of the approx 75,000 Chinese/Japanese characters in Unicode.&lt;br /&gt;&lt;br /&gt;My first thoughts on Symbology were on &lt;a href="http://gavingrover.blogspot.com/2007/10/grerls-symbols.html"&gt;30 October 2007&lt;/a&gt;, &lt;a href="http://gavingrover.blogspot.com/2008/02/grerl-vys-and-groovys-symbols-part-2.html"&gt;6 February 2008&lt;/a&gt;, and &lt;a href="http://gavingrover.blogspot.com/2008/11/grerlvy-symbology.html"&gt;29 November 2008&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Fake and Real Groovy&lt;/h3&gt;
26 March 2013&amp;#39;s &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog04#8"&gt;Attacks against Groovy&lt;/a&gt; describes the 3 distinct, though interconnected, power structures involved in Graeme Rocher&amp;#39;s primary line of attack against me over the past 7 years.&lt;br /&gt;&lt;br /&gt;5 January 2013&amp;#39;s &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog03#18"&gt;Groovy Visions Revisited&lt;/a&gt; updates the original 30 March 2008&amp;#39;s &lt;a href="http://gavingrover.blogspot.com/2008/03/groovy-visions.html"&gt;Groovy Visions&lt;/a&gt;, explaining the difference between Fake Groovy and Real Groovy.&lt;br /&gt;&lt;br /&gt;Some previous milestones in building the Groovy Language:
&lt;ul&gt;&lt;li&gt;8 December 2012: &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog03#13"&gt;The Groovedral and the Ruby Bazaar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;10 April 2012: &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog02#5"&gt;Stagnant Groovy steals static code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;22 November 2011: &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog01#16"&gt;Fake Groovy Exposed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;23 January 2011: &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog01#2"&gt;The Rise and Fall of the Groovy Language&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
The compendium &lt;a href="http://gavingrover.blogspot.com/2010/04/groovy-galore.html"&gt;from July 2009 to April 2010&lt;/a&gt; includes &lt;i&gt;Groovy Dilemma&lt;/i&gt;, &lt;i&gt;Groovy 2.0 status report&lt;/i&gt;, and &lt;i&gt;Scala&amp;#39;s groovy stairway&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Math and Physics&lt;/h3&gt;
Finally, 30 April 2010&amp;#39;s &lt;a href="http://gavingrover.blogspot.com/2010/04/orders-of-infinity.html"&gt;Orders of Infinity&lt;/a&gt; expands on my earlier &lt;a href="http://gavingrover.blogspot.com/2008/09/mass-parity-distance-invariance.html"&gt;Mass-Parity-Distance Invariance&lt;/a&gt;. Maybe there&amp;#39;s as much negative matter in the Universe as positive, and as much antimatter as matter. And 4 June 2008&amp;#39;s &lt;a href="http://gavingrover.blogspot.com/2008/06/base-100-arithmetic.html"&gt;Base-100 Arithmetic&lt;/a&gt; gives a glimpse into the future of mental math.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;19 May 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="3"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#3"&gt;Grȫȫvy ecosystem busts free&amp;#33;&lt;/a&gt;&lt;/h1&gt;
Laforge has taken to using the expression &amp;quot;the Groovy ecosystem, which is Groovy, Grails, Griffon, Spock, Codenarc, Gradle, Geb and Gaelyk&amp;quot;. With his grip on the &lt;i&gt;SpringSource Project Manager for Groovy&lt;/i&gt; title slipping, he&amp;#39;s getting ready to promote himself to an honorary position &amp;quot;overseeing the ecosystem&amp;quot;. But his need to &lt;i&gt;define explicitly&lt;/i&gt; what software makes up an ecosystem is exactly why Groovy failed under his &lt;a href="http://groovy.329449.n5.nabble.com/Re-gpars-announce-GPars-1-0-arrived-tt5712217.html"&gt;Groovy Supreme Commandership&lt;/a&gt; in the first place. Many Groovy-based projects now lie dormant, their creators abandoning them after discovering the &lt;i&gt;Groovy Community&lt;/i&gt; was a manufactured mirage. But even just looking at active projects, we see many not in Laforge&amp;#39;s list that are part of the true ecosystem for Grȫȫvy...&lt;br /&gt;
&lt;h3&gt;1. GrooScript&lt;/h3&gt;
Jorge Franco &lt;a href="http://grooscript.org/"&gt;has added Grails and VertX support to GrooScript&lt;/a&gt;, a welcome addition to the Grȫȫvy ecosystem and the latest implementation of the GrȪȪvy Language. Because GrȪȪvy has no spec (thanks to Laforge&amp;#39;s stonewalling), a future official spec for GrȪȪvy should be an intersection of all implementations existing at the time, with each having equal voice. I&amp;#39;ve added GrooScript to &lt;a href="https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS"&gt;the &amp;quot;official&amp;quot; list of JS-targetted languages&lt;/a&gt; on Franco&amp;#39;s behalf, the first mention of Groovy in a list of over 150.&lt;br /&gt;
&lt;h3&gt;2. &amp;quot;GroovyRuby&amp;quot;&lt;/h3&gt;
Charles Nutter recently wrote he &lt;a href="http://groovy.329449.n5.nabble.com/Pondering-a-Dart-killer-based-on-Groovy-syntax-tt5715406.html"&gt;wants to build &amp;quot;a Groovy-like language that compiles to plain Java when all types are present, but uses invokedynamic exclusively when types are omitted&amp;quot;&lt;/a&gt;. He&amp;#39;s already built a Ruby-like language that does the same &lt;i&gt;(JRuby/Mirah)&lt;/i&gt;, and thinks he can plug something into Groovy&amp;#39;s antiquated Antlr2-based grammar to do the same. According to Theodorou, Groovy already has 4 backends (i.e. classic, primitive optimizations, Groovy++ launder, and invoke dynamic) and adding a 5th is easy &amp;quot;&lt;i&gt;if the backend code is licensed under the Apache Software License&lt;/i&gt;&amp;quot;. Rocher&amp;#39;s got his fingers in every discussion. Because the GPL Ruby/JRuby has over a hundred AST nodes, doing most name resolutions below the AST, Groovy&amp;#39;s grammar can slot easily on top. If there&amp;#39;s no technical reason to hinder something, Rocher will cite a legal reason. If Nutter ever independently bundles JRuby/Mirah under Groovy&amp;#39;s grammar, it will also be part of the Grȫȫvy ecosystem.&lt;br /&gt;
&lt;h3&gt;3. Kotlin&lt;/h3&gt;
The statically-typed language with the closest syntax to Codehaus Groovy is now &lt;a href="http://confluence.jetbrains.com/display/Kotlin/Getting+Started"&gt;Kotlin from Jetbrains&lt;/a&gt;, led by Andrey Breslav but with significant help from Groovy creator James Strachan and Groovy++ pioneer Alex Tkachman. Kotlin really should be bundled as the statically-typed backend to Groovy because it&amp;#39;s closer to Tkachman&amp;#39;s original vision for Groovy++, being worked on by the visionary rather than being cloned by a manager&amp;#39;s mate.&lt;br /&gt;
&lt;h3&gt;4. Grojure&lt;/h3&gt;
I&amp;#39;ve &lt;a href="http://github.com/gavingroovygrover/grojure"&gt;just released v 0.7.1 of Grojure&lt;/a&gt;, originally intended as a reboot of the GrȪȪvy Language, but now an attempt to extend Clojure with syntax to make it look Groovy-like. Like GrooScript, &amp;quot;GroovyRuby&amp;quot;, and Kotlin, it&amp;#39;s an integral part of the Grȫȫvy ecosystem. Grojure will grow Clojure with Groovy-like syntax and Unicode, to become an integral part of the Grȫȫvy ecosystem. GrȪȪvy developers will have &lt;b&gt;all 110,000 Unicode tokens available for their programs, giving developers choices&lt;/b&gt; instead of heavily restricting what they can do so Groovy code will always have pretty colors on the screen whenever an ex-Javamort manager wanders through the code monkey cube farm.&lt;br /&gt;
&lt;h3&gt;5. Garfa&lt;/h3&gt;
Laforge has just &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Gaelyk-2-0-released-tt5715463.html"&gt;announced Gaelyk 2.0&lt;/a&gt;, an update to his long-running Google Appengine tool, and snuck a &lt;a href="http://gr8conf.eu/agenda"&gt;Friday 1:00pm seminar into this week&amp;#39;s Gr8teConf&lt;/a&gt; to politick for his job to the hungry as he explains how to use the changes, while the Grails track are having lunch. Hours later, Igor Artamonov released &lt;a href="http://splix.github.io/garfa/"&gt;Garfa, &amp;quot;Groovy ActiveRecord for Appengine&amp;quot;&lt;/a&gt;, a lightweight wrapper around the Java-based Objectify, lightweight scripting being what Groovy was originally intended for before being hijacked. Garfa includes easy-to-read single-page documentation: no need to pay for a conference or consultant to learn how to use it. There&amp;#39;s still people around who want to serve their fellow developers with software and lunch instead of recruiting for free FOSS labor while selling their own consulting services for an exorbitant fee.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;from 29 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="2"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#2"&gt;gr&amp;#210;&amp;#211;vy &amp;#61; gr&amp;#210;jure &amp;#43; unic&amp;#211;de&lt;/a&gt;&lt;/h1&gt;
I&amp;#39;m now alternating between analyzing the non-Unihan characters in Unicode, and building the Grojure Programming Language atop Clojure. When both tasks are finished, they will merge together to become the Groovy Language, a Unicode-based reboot of the Codehaus-hosted first attempt at Groovy which is in terminal decline.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#1"&gt;Vorg&amp;#39;s Tweetroll&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;From now on, all Vorg van Geir&amp;#39;s content will appear here instead of on his makeshift tweetroll...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;9 May 2013&lt;/i&gt;&lt;br /&gt;Rocher has been redefining &lt;i&gt;Grails&lt;/i&gt; to mean whatever his distro bundles, growing to 115Mb in v2.2 and switching to vert.x in v3.0. &lt;b&gt;Grails is no longer a specific technology, it&amp;#39;s a branded channel&lt;/b&gt;. He&amp;#39;s also been redefining &lt;i&gt;Groovy&lt;/i&gt; to mean whatever his codebase implements, even generating a spec from the code. &lt;b&gt;Groovy is no longer a branded language spec, it&amp;#39;s a specific implementation&lt;/b&gt;. By expanding Grails&amp;#39;s brand power and eliminating Groovy&amp;#39;s, he&amp;#39;s renaming Groovy by stealth.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;8 May 2013&lt;/i&gt;&lt;br /&gt;Looks like Rocher will announce at Gr8Conf on 24 May that Grails 3.0 is bundling Vert.x, &lt;a href="http://www.h-online.com/open/news/item/VMware-stakes-IP-claim-on-Vert-x-1779548.html"&gt;having bullied its creator Tim Fox into surrendering it to SpringSource last Christmas&lt;/a&gt;. Vert.x is polyglot, using other languages (i.e. Python, Ruby, Java, JavaScript) besides Groovy. He &lt;a href="http://gr8conf.eu/agenda"&gt;switched Groovy&amp;#39;s keynote speech  from Laforge to Subramaniam speaking on &amp;quot;The rise and fall of empires: Lessons for (programming) languages&amp;quot;&lt;/a&gt;, and moved the Grails track to first column on the diagram. This switch is &lt;b&gt;the beginning of the end for Groovy&lt;/b&gt;. Rocher always hated the Groovy brand, and intends to abandon it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=groovy&amp;DownloadId=681500" alt="Sheldon&amp;#32;salute.jpg" title="Sheldon&amp;#32;salute.jpg" /&gt; &lt;i&gt;3 May 2013&lt;/i&gt;&lt;br /&gt;I first watched &lt;i&gt;The Big Bang Theory&lt;/i&gt; in late 2010. Having been given a weekly class teaching English to some engineers, I figured they&amp;#39;d be interested in such content, so played a 20-min episode in some classes. I found it to be reasonably funny, so when I caught a cold in early December, I watched all the episodes to date in a single weekend over the Chinese internet. The next episode (6 Jan 2011) had this story: &lt;i&gt;Leonard gets an idea to develop a smartphone app that allows users to solve equations by taking a picture of them. Sheldon tries to put himself in charge despite the app being Leonard&amp;#39;s idea, and continually criticizes Leonard&amp;#39;s leadership in the development of the app. After Sheldon suggests names for the app that have his name in it, he abruptly calls for a vote to change the team&amp;#39;s leadership, resulting in Leonard firing him. Sheldon resorts to sabotaging Leonard&amp;#39;s project...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Within weeks I heard Rocher and his cronies were spreading the lie that I&amp;#39;d done to Groovy what Sheldon had done. I&amp;#39;ve seen this tactic used many times while working in IT, and the reason is almost always the same: &lt;b&gt;Rocher is deflecting attention away from his own schemes by accusing others of doing the same&lt;/b&gt;. But Rocher is the true culprit: &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03#13"&gt;he hijacked Groovy to be subservient to Grails&lt;/a&gt; and is going after Spring next. He&amp;#39;s just &lt;b&gt;increased the Grails download size from 50Mb to 115Mb&lt;/b&gt;, muscling in on the distribution channels for more Java software. Grails&amp;#39; entire business has been about nabbing users from Rails, and now he&amp;#39;s expanding the Grails &lt;i&gt;create-app&lt;/i&gt; command to include all Java application types, not just servlets, to &lt;b&gt;steal control away from IDE&amp;#39;s&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;He installed his decoy Laforge to stonewall on a spec for 8 years, obscuring the fact that &lt;b&gt;Groovy creator Strachan intended many implementations to be built&lt;/b&gt;. Rocher stepped in to bump out Wilson and Tkachman when they threatened his control with Ng and Groovy++. By &lt;b&gt;making JBoss&amp;#39;s Hibernate and Oracle&amp;#39;s Java the only Grails components not under SpringSource control, he&amp;#39;s minimising loose ends in future sales negotiations&lt;/b&gt;. And he keeps an army of compliant consultants who&amp;#39;ll give him deniability. But his evil will be exposed because if he&amp;#39;s doing it to me, he&amp;#39;s doing it to others. And they won&amp;#39;t stay silent either.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;2 May 2013 (update to 10 April 2013)&lt;/i&gt;&lt;br /&gt;There&amp;#39;s 25 Starbucks stores in Wuhan city &lt;a href="http://www.starbucks.com/store-locator"&gt;according to their store locator today&lt;/a&gt; &lt;i&gt;(altho it says 26, one of them is wrong)&lt;/i&gt;. As of today, &lt;b&gt;I&amp;#39;ve been to all of them!&lt;/b&gt; I visited the first to open in Wuhan on its opening day, 6 Feb 2008. Their number has roughly doubled every year since, so I&amp;#39;ve had to visit a lot in the past year to keep up.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;28 April 2013&lt;/i&gt;&lt;br /&gt;My other half has just committed &lt;a href="https://github.com/gavingroovygrover/grojure"&gt;version 0.6.0 of the Groovy Language reboot&lt;/a&gt;, renamed &lt;i&gt;&lt;b&gt;Grojure&lt;/b&gt;&lt;/i&gt; for now. It&amp;#39;s been rewritten using Armando Blancas&amp;#39; Kern combinator parsing library. We intend adding Unicode characters to the language grammar soon enough, plus write a plugin for Grails. &lt;b&gt;Groovy&amp;#39;s Grojure will replace Codehaus Groovy as the premier language for all applications in the Groovy ecosystem&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a href="http://blog.groovymag.com/2013/04/news-roundup-groovy-in-action-gr8ness-for-java-developers-and-the-future-of-grails/"&gt;Erik Pragt and Michael Kimsal agree with Laforge&lt;/a&gt;&amp;#39;s bleak assessment of Groovy&amp;#39;s documentation problem. Pragt says &amp;quot;the current web documentation for &lt;b&gt;&lt;i&gt;Groovy is clunky to use&lt;/i&gt;&lt;/b&gt;&amp;quot;. Kimsal has &amp;quot;frequently found that the &lt;b&gt;&lt;i&gt;documentation on the website is itself out of date&lt;/i&gt;&lt;/b&gt;, and with its &lt;b&gt;&lt;i&gt;lack of either editorial oversight or regular maintenance&lt;/i&gt;&lt;/b&gt; it is &lt;b&gt;&lt;i&gt;falling behind, in usefulness&lt;/i&gt;&lt;/b&gt;&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 April 2013&lt;/i&gt;&lt;br /&gt;Laforge &lt;i&gt;still&lt;/i&gt; hasn&amp;#39;t begun on &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-tt5712875.html"&gt;the documentation overhaul he announced 3 months ago&lt;/a&gt; when he said &amp;quot;it&amp;#39;s &lt;b&gt;&lt;i&gt;hard to find the information&lt;/i&gt;&lt;/b&gt; you&amp;#39;re looking for, it&amp;#39;s of &lt;b&gt;&lt;i&gt;very uneven quality and style&lt;/i&gt;&lt;/b&gt;, lots of &lt;b&gt;&lt;i&gt;pages are outdated&lt;/i&gt;&lt;/b&gt; or show &lt;b&gt;&lt;i&gt;samples with mistakes&lt;/i&gt;&lt;/b&gt; in them, and there are also &lt;b&gt;&lt;i&gt;holes for features not covered or not explained&lt;/i&gt;&lt;/b&gt; in details&amp;quot;. Yesterday, he was &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-tt5712875.html#a5715128"&gt;still talking about what authoring tool to use&lt;/a&gt;. Laforge was &lt;b&gt;quick to point out one of Groovy&amp;#39;s problems, but slow to work on the solution&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;22 April 2013&lt;/i&gt;&lt;br /&gt;Rocher reveals more of &lt;a href="http://grails.io/post/48599814766/more-on-where-next-for-grails"&gt;his agenda for SpringSource to muscle in on Java app distribution channels&lt;/a&gt; when he announces &amp;quot;&lt;i&gt;Grails 3.0 will be a reinvention of the framework, and we will be making some hard decisions about what we support in terms of backwards compatibility. We plan to allow the creation of applications in different architectural styles. Servlet API apps will always be supported, but we plan to make create-app extensible, so Grails can be used to create a range of app types (Batch, NIO, Netty, static void main, etc).&lt;/i&gt;&amp;quot; He will control the code behind create-app, &lt;b&gt;making Grails secretly collect user info&lt;/b&gt;, to push up the sale price of SpringSource.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;17 April 2013&lt;/i&gt;&lt;br /&gt;Laforge is busy posting &lt;a href="http://zeroturnaround.com/labs/jvm-languages-report-super-extended-interview-on-groovy/#!/"&gt;Gr8te conf sales brochures&lt;/a&gt;: he&amp;#39;s the only one who refers to another respondent&amp;#39;s reply &lt;i&gt;(qu&amp;#39;s 2,3,8,9,10)&lt;/i&gt; so he must have coordinated the mailout. &lt;b&gt;He thanked Groovy Tech Lead Theodorou by ignoring his title&lt;/b&gt;: &amp;quot;&lt;i&gt;Guillaume Laforge, the Groovy project lead, Jochen Theodorou and C&amp;#233;dric Champeau–both committers to Groovy, and Andres Almiray, Griffon project lead.&lt;/i&gt;&amp;quot; Were Rocher, Glasius, Docktor, Niederwieser, etc too wisened up to Laforge&amp;#39;s petty politics to bother returning answers to his questions?&lt;br /&gt;&lt;br /&gt;&lt;i&gt;15 April 2013&lt;/i&gt;&lt;br /&gt;Rocher and his cohort are spreading around the lie that I&amp;#39;m &amp;quot;&lt;i&gt;hiding in China&lt;/i&gt;&amp;quot;. I last visited my home country in January last year, and will visit again soon enough. I was there in NZ when Kim Dotcom was attacked by a Hollywood-initiated raid. &lt;b&gt;Their attack cascaded through various intermediaries&lt;/b&gt;, such as American politicians, FBI observers, and the NZ police, just as &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog04#8"&gt;Rocher&amp;#39;s attacks on me cascade through 2 other intermediaries&lt;/a&gt;. Sociopaths always hide behind decoys.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;5 April 2013&lt;/i&gt;&lt;br /&gt;Straight after Rocher&amp;#39;s talk at Gr8te, Spring Framework guru Juergen Hoeller talks about &lt;a href="http://gr8conf.eu/Presentations/Spring-4-and-Groovy-2"&gt;the upcoming Spring 4 having a strong focus on Groovy&lt;/a&gt;. Rocher&amp;#39;s plot is to entangle Groovy into Spring to &lt;b&gt;make Spring as dependent on Groovy/Grails as they are on Spring&lt;/b&gt;. He&amp;#39;ll then pitch for making Spring and Grails into a single product, with him in charge of course. Within weeks, key Spring people will go the way of Strachan and Tkachman.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;4 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a href="http://gr8conf.eu/agenda"&gt;This year&amp;#39;s Gr8te conference&lt;/a&gt; has replaced Laforge with Venkat Subramaniam talking on &amp;quot;The rise and fall of empires: Lessons for language designers and programmers&amp;quot; in Groovy&amp;#39;s keynote slot &lt;i&gt;(Thurs 9:15)&lt;/i&gt;. &lt;b&gt;What announcement is Rocher going to spring&lt;/b&gt; in the Grails keynote about &amp;quot;The road to Grails 3.0&amp;quot; &lt;i&gt;(Fri 10:50)&lt;/i&gt; &lt;b&gt;when he cites Venkat&amp;#39;s conclusions as justification?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;2 April 2013&lt;/i&gt;&lt;br /&gt;Grover&amp;#39;s figured me out now. He calls me a complainer, but he&amp;#39;s just a conformer. He wants to kill me, but I don&amp;#39;t die that easily. Even when he&amp;#39;s in charge, I can still control his right eye! And if I store memories in the neurons just behind it, Grover can&amp;#39;t get them even if he meditates.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Looks like my tweets (15 Feb to 26 Mar 2013) have been &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog04"&gt;copied to the Groovy Language blog&lt;/a&gt; by my other half, so I&amp;#39;ve erased them from here.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;4 Feb 2013&lt;/i&gt;&lt;br /&gt;When I was in school my teacher told me if we drill a hole thru the center of the earth from Zeeland in the Netherlands, we&amp;#39;ll end up in New Zealand. The latest remake of &lt;i&gt;Totall Recall&lt;/i&gt; was real cool!&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 Oct 2012&lt;/i&gt;&lt;br /&gt;A revolutionary in the global struggle to set the Grǭǭvy Language free of its oppressors, to give it a constitution (i.e. spec) so anyone can implement it in freedom and liberty, and to provide a reference implementation that won&amp;#39;t change suddenly because some middleman is threatened by the applications being built upon it.&lt;br /&gt;&lt;br /&gt;An unofficial tweetroll because the real twitter&amp;#39;s blocked behind the Chinese Firewall. Also follow me at &lt;a href="http://news.ycombinator.com/user?id=vorg"&gt;Hacker News&lt;/a&gt; and &lt;a href="http://stackoverflow.com/users/678960/vorg-van-geir"&gt;Stack Overflow&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Vorg van Geir&lt;br /&gt;
&lt;h2&gt;See &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog04&amp;referringTitle=Blog05"&gt;previous blog entries&lt;/a&gt;.&lt;/h2&gt;
&lt;i&gt;Only some of what I wrote in the blogs on the previous page was an April Fool&amp;#39;s joke. Most of it was deadly serious. You decide which is which!&lt;/i&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Fri, 24 May 2013 13:53:26 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Blog05 20130524015326P</guid></item><item><title>Updated Wiki: Blog05</title><link>https://groovy.codeplex.com/wikipage?title=Blog05&amp;version=5</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;u&gt;Gavin Groovy Grover&amp;#39;s UNICODE Blo&lt;/u&gt;g&lt;/h1&gt;
&lt;i&gt;19 May 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="3"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#3"&gt;Grȫȫvy ecosystem busts free&amp;#33;&lt;/a&gt;&lt;/h1&gt;
Laforge has taken to using the expression &amp;quot;the Groovy ecosystem, which is Groovy, Grails, Griffon, Spock, Codenarc, Gradle, Geb and Gaelyk&amp;quot;. With his grip on the &lt;i&gt;SpringSource Project Manager for Groovy&lt;/i&gt; title slipping, he&amp;#39;s getting ready to promote himself to an honorary position &amp;quot;overseeing the ecosystem&amp;quot;. But his need to &lt;i&gt;define explicitly&lt;/i&gt; what software makes up an ecosystem is exactly why Groovy failed under his &lt;a href="http://groovy.329449.n5.nabble.com/Re-gpars-announce-GPars-1-0-arrived-tt5712217.html"&gt;Groovy Supreme Commandership&lt;/a&gt; in the first place. Many Groovy-based projects now lie dormant, their creators abandoning them after discovering the &lt;i&gt;Groovy Community&lt;/i&gt; was a manufactured mirage. But even just looking at active projects, we see many not in Laforge&amp;#39;s list that are part of the true ecosystem for Grȫȫvy...&lt;br /&gt;
&lt;h3&gt;1. GrooScript&lt;/h3&gt;
Jorge Franco &lt;a href="http://grooscript.org/"&gt;has added Grails and VertX support to GrooScript&lt;/a&gt;, a welcome addition to the Grȫȫvy ecosystem and the latest implementation of the GrȪȪvy Language. Because GrȪȪvy has no spec (thanks to Laforge&amp;#39;s stonewalling), a future official spec for GrȪȪvy should be an intersection of all implementations existing at the time, with each having equal voice. I&amp;#39;ve added GrooScript to &lt;a href="https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS"&gt;the &amp;quot;official&amp;quot; list of JS-targetted languages&lt;/a&gt; on Franco&amp;#39;s behalf, the first mention of Groovy in a list of over 150.&lt;br /&gt;
&lt;h3&gt;2. &amp;quot;GroovyRuby&amp;quot;&lt;/h3&gt;
Charles Nutter recently wrote he &lt;a href="http://groovy.329449.n5.nabble.com/Pondering-a-Dart-killer-based-on-Groovy-syntax-tt5715406.html"&gt;wants to build &amp;quot;a Groovy-like language that compiles to plain Java when all types are present, but uses invokedynamic exclusively when types are omitted&amp;quot;&lt;/a&gt;. He&amp;#39;s already built a Ruby-like language that does the same &lt;i&gt;(JRuby/Mirah)&lt;/i&gt;, and thinks he can plug something into Groovy&amp;#39;s antiquated Antlr2-based grammar to do the same. According to Theodorou, Groovy already has 4 backends (i.e. classic, primitive optimizations, Groovy++ launder, and invoke dynamic) and adding a 5th is easy &amp;quot;&lt;i&gt;if the backend code is licensed under the Apache Software License&lt;/i&gt;&amp;quot;. Rocher&amp;#39;s got his fingers in every discussion. Because the GPL Ruby/JRuby has over a hundred AST nodes, doing most name resolutions below the AST, Groovy&amp;#39;s grammar can slot easily on top. If there&amp;#39;s no technical reason to hinder something, Rocher will cite a legal reason. If Nutter ever independently bundles JRuby/Mirah under Groovy&amp;#39;s grammar, it will also be part of the Grȫȫvy ecosystem.&lt;br /&gt;
&lt;h3&gt;3. Kotlin&lt;/h3&gt;
The statically-typed language with the closest syntax to Codehaus Groovy is now &lt;a href="http://confluence.jetbrains.com/display/Kotlin/Getting+Started"&gt;Kotlin from Jetbrains&lt;/a&gt;, led by Andrey Breslav but with significant help from Groovy creator James Strachan and Groovy++ pioneer Alex Tkachman. Kotlin really should be bundled as the statically-typed backend to Groovy because it&amp;#39;s closer to Tkachman&amp;#39;s original vision for Groovy++, being worked on by the visionary rather than being cloned by a manager&amp;#39;s mate.&lt;br /&gt;
&lt;h3&gt;4. Grojure&lt;/h3&gt;
I&amp;#39;ve &lt;a href="http://github.com/gavingroovygrover/grojure"&gt;just released v 0.7.1 of Grojure&lt;/a&gt;, originally intended as a reboot of the GrȪȪvy Language, but now an attempt to extend Clojure with syntax to make it look Groovy-like. Like GrooScript, &amp;quot;GroovyRuby&amp;quot;, and Kotlin, it&amp;#39;s an integral part of the Grȫȫvy ecosystem. Grojure will grow Clojure with Groovy-like syntax and Unicode, to become an integral part of the Grȫȫvy ecosystem. GrȪȪvy developers will have &lt;b&gt;all 110,000 Unicode tokens available for their programs, giving developers choices&lt;/b&gt; instead of heavily restricting what they can do so Groovy code will always have pretty colors on the screen whenever an ex-Javamort manager wanders through the code monkey cube farm.&lt;br /&gt;
&lt;h3&gt;5. Garfa&lt;/h3&gt;
Laforge has just &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Gaelyk-2-0-released-tt5715463.html"&gt;announced Gaelyk 2.0&lt;/a&gt;, an update to his long-running Google Appengine tool, and snuck a &lt;a href="http://gr8conf.eu/agenda"&gt;Friday 1:00pm seminar into this week&amp;#39;s Gr8teConf&lt;/a&gt; to politick for his job to the hungry as he explains how to use the changes, while the Grails track are having lunch. Hours later, Igor Artamonov released &lt;a href="http://splix.github.io/garfa/"&gt;Garfa, &amp;quot;Groovy ActiveRecord for Appengine&amp;quot;&lt;/a&gt;, a lightweight wrapper around the Java-based Objectify, lightweight scripting being what Groovy was originally intended for before being hijacked. Garfa includes easy-to-read single-page documentation: no need to pay for a conference or consultant to learn how to use it. There&amp;#39;s still people around who want to serve their fellow developers with software and lunch instead of recruiting for free FOSS labor while selling their own consulting services for an exorbitant fee.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;from 29 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="2"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#2"&gt;gr&amp;#210;&amp;#211;vy &amp;#61; gr&amp;#210;jure &amp;#43; unic&amp;#211;de&lt;/a&gt;&lt;/h1&gt;
I&amp;#39;m now alternating between analyzing the non-Unihan characters in Unicode, and building the Grojure Programming Language atop Clojure. When both tasks are finished, they will merge together to become the Groovy Language, a Unicode-based reboot of the Codehaus-hosted first attempt at Groovy which is in terminal decline.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#1"&gt;Vorg&amp;#39;s Tweetroll&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;From now on, all Vorg van Geir&amp;#39;s content will appear here instead of on his makeshift tweetroll...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;9 May 2013&lt;/i&gt;&lt;br /&gt;Rocher has been redefining &lt;i&gt;Grails&lt;/i&gt; to mean whatever his distro bundles, growing to 115Mb in v2.2 and switching to vert.x in v3.0. &lt;b&gt;Grails is no longer a specific technology, it&amp;#39;s a branded channel&lt;/b&gt;. He&amp;#39;s also been redefining &lt;i&gt;Groovy&lt;/i&gt; to mean whatever his codebase implements, even generating a spec from the code. &lt;b&gt;Groovy is no longer a branded language spec, it&amp;#39;s a specific implementation&lt;/b&gt;. By expanding Grails&amp;#39;s brand power and eliminating Groovy&amp;#39;s, he&amp;#39;s renaming Groovy by stealth.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;8 May 2013&lt;/i&gt;&lt;br /&gt;Looks like Rocher will announce at Gr8Conf on 24 May that Grails 3.0 is bundling Vert.x, &lt;a href="http://www.h-online.com/open/news/item/VMware-stakes-IP-claim-on-Vert-x-1779548.html"&gt;having bullied its creator Tim Fox into surrendering it to SpringSource last Christmas&lt;/a&gt;. Vert.x is polyglot, using other languages (i.e. Python, Ruby, Java, JavaScript) besides Groovy. He &lt;a href="http://gr8conf.eu/agenda"&gt;switched Groovy&amp;#39;s keynote speech  from Laforge to Subramaniam speaking on &amp;quot;The rise and fall of empires: Lessons for (programming) languages&amp;quot;&lt;/a&gt;, and moved the Grails track to first column on the diagram. This switch is &lt;b&gt;the beginning of the end for Groovy&lt;/b&gt;. Rocher always hated the Groovy brand, and intends to abandon it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=groovy&amp;DownloadId=681500" alt="Sheldon&amp;#32;salute.jpg" title="Sheldon&amp;#32;salute.jpg" /&gt; &lt;i&gt;3 May 2013&lt;/i&gt;&lt;br /&gt;I first watched &lt;i&gt;The Big Bang Theory&lt;/i&gt; in late 2010. Having been given a weekly class teaching English to some engineers, I figured they&amp;#39;d be interested in such content, so played a 20-min episode in some classes. I found it to be reasonably funny, so when I caught a cold in early December, I watched all the episodes to date in a single weekend over the Chinese internet. The next episode (6 Jan 2011) had this story: &lt;i&gt;Leonard gets an idea to develop a smartphone app that allows users to solve equations by taking a picture of them. Sheldon tries to put himself in charge despite the app being Leonard&amp;#39;s idea, and continually criticizes Leonard&amp;#39;s leadership in the development of the app. After Sheldon suggests names for the app that have his name in it, he abruptly calls for a vote to change the team&amp;#39;s leadership, resulting in Leonard firing him. Sheldon resorts to sabotaging Leonard&amp;#39;s project...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Within weeks I heard Rocher and his cronies were spreading the lie that I&amp;#39;d done to Groovy what Sheldon had done. I&amp;#39;ve seen this tactic used many times while working in IT, and the reason is almost always the same: &lt;b&gt;Rocher is deflecting attention away from his own schemes by accusing others of doing the same&lt;/b&gt;. But Rocher is the true culprit: &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03#13"&gt;he hijacked Groovy to be subservient to Grails&lt;/a&gt; and is going after Spring next. He&amp;#39;s just &lt;b&gt;increased the Grails download size from 50Mb to 115Mb&lt;/b&gt;, muscling in on the distribution channels for more Java software. Grails&amp;#39; entire business has been about nabbing users from Rails, and now he&amp;#39;s expanding the Grails &lt;i&gt;create-app&lt;/i&gt; command to include all Java application types, not just servlets, to &lt;b&gt;steal control away from IDE&amp;#39;s&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;He installed his decoy Laforge to stonewall on a spec for 8 years, obscuring the fact that &lt;b&gt;Groovy creator Strachan intended many implementations to be built&lt;/b&gt;. Rocher stepped in to bump out Wilson and Tkachman when they threatened his control with Ng and Groovy++. By &lt;b&gt;making JBoss&amp;#39;s Hibernate and Oracle&amp;#39;s Java the only Grails components not under SpringSource control, he&amp;#39;s minimising loose ends in future sales negotiations&lt;/b&gt;. And he keeps an army of compliant consultants who&amp;#39;ll give him deniability. But his evil will be exposed because if he&amp;#39;s doing it to me, he&amp;#39;s doing it to others. And they won&amp;#39;t stay silent either.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;2 May 2013 (update to 10 April 2013)&lt;/i&gt;&lt;br /&gt;There&amp;#39;s 25 Starbucks stores in Wuhan city &lt;a href="http://www.starbucks.com/store-locator"&gt;according to their store locator today&lt;/a&gt; &lt;i&gt;(altho it says 26, one of them is wrong)&lt;/i&gt;. As of today, &lt;b&gt;I&amp;#39;ve been to all of them!&lt;/b&gt; I visited the first to open in Wuhan on its opening day, 6 Feb 2008. Their number has roughly doubled every year since, so I&amp;#39;ve had to visit a lot in the past year to keep up.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;28 April 2013&lt;/i&gt;&lt;br /&gt;My other half has just committed &lt;a href="https://github.com/gavingroovygrover/grojure"&gt;version 0.6.0 of the Groovy Language reboot&lt;/a&gt;, renamed &lt;i&gt;&lt;b&gt;Grojure&lt;/b&gt;&lt;/i&gt; for now. It&amp;#39;s been rewritten using Armando Blancas&amp;#39; Kern combinator parsing library. We intend adding Unicode characters to the language grammar soon enough, plus write a plugin for Grails. &lt;b&gt;Groovy&amp;#39;s Grojure will replace Codehaus Groovy as the premier language for all applications in the Groovy ecosystem&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a href="http://blog.groovymag.com/2013/04/news-roundup-groovy-in-action-gr8ness-for-java-developers-and-the-future-of-grails/"&gt;Erik Pragt and Michael Kimsal agree with Laforge&lt;/a&gt;&amp;#39;s bleak assessment of Groovy&amp;#39;s documentation problem. Pragt says &amp;quot;the current web documentation for &lt;b&gt;&lt;i&gt;Groovy is clunky to use&lt;/i&gt;&lt;/b&gt;&amp;quot;. Kimsal has &amp;quot;frequently found that the &lt;b&gt;&lt;i&gt;documentation on the website is itself out of date&lt;/i&gt;&lt;/b&gt;, and with its &lt;b&gt;&lt;i&gt;lack of either editorial oversight or regular maintenance&lt;/i&gt;&lt;/b&gt; it is &lt;b&gt;&lt;i&gt;falling behind, in usefulness&lt;/i&gt;&lt;/b&gt;&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 April 2013&lt;/i&gt;&lt;br /&gt;Laforge &lt;i&gt;still&lt;/i&gt; hasn&amp;#39;t begun on &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-tt5712875.html"&gt;the documentation overhaul he announced 3 months ago&lt;/a&gt; when he said &amp;quot;it&amp;#39;s &lt;b&gt;&lt;i&gt;hard to find the information&lt;/i&gt;&lt;/b&gt; you&amp;#39;re looking for, it&amp;#39;s of &lt;b&gt;&lt;i&gt;very uneven quality and style&lt;/i&gt;&lt;/b&gt;, lots of &lt;b&gt;&lt;i&gt;pages are outdated&lt;/i&gt;&lt;/b&gt; or show &lt;b&gt;&lt;i&gt;samples with mistakes&lt;/i&gt;&lt;/b&gt; in them, and there are also &lt;b&gt;&lt;i&gt;holes for features not covered or not explained&lt;/i&gt;&lt;/b&gt; in details&amp;quot;. Yesterday, he was &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-tt5712875.html#a5715128"&gt;still talking about what authoring tool to use&lt;/a&gt;. Laforge was &lt;b&gt;quick to point out one of Groovy&amp;#39;s problems, but slow to work on the solution&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;22 April 2013&lt;/i&gt;&lt;br /&gt;Rocher reveals more of &lt;a href="http://grails.io/post/48599814766/more-on-where-next-for-grails"&gt;his agenda for SpringSource to muscle in on Java app distribution channels&lt;/a&gt; when he announces &amp;quot;&lt;i&gt;Grails 3.0 will be a reinvention of the framework, and we will be making some hard decisions about what we support in terms of backwards compatibility. We plan to allow the creation of applications in different architectural styles. Servlet API apps will always be supported, but we plan to make create-app extensible, so Grails can be used to create a range of app types (Batch, NIO, Netty, static void main, etc).&lt;/i&gt;&amp;quot; He will control the code behind create-app, &lt;b&gt;making Grails secretly collect user info&lt;/b&gt;, to push up the sale price of SpringSource.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;17 April 2013&lt;/i&gt;&lt;br /&gt;Laforge is busy posting &lt;a href="http://zeroturnaround.com/labs/jvm-languages-report-super-extended-interview-on-groovy/#!/"&gt;Gr8te conf sales brochures&lt;/a&gt;: he&amp;#39;s the only one who refers to another respondent&amp;#39;s reply &lt;i&gt;(qu&amp;#39;s 2,3,8,9,10)&lt;/i&gt; so he must have coordinated the mailout. &lt;b&gt;He thanked Groovy Tech Lead Theodorou by ignoring his title&lt;/b&gt;: &amp;quot;&lt;i&gt;Guillaume Laforge, the Groovy project lead, Jochen Theodorou and C&amp;#233;dric Champeau–both committers to Groovy, and Andres Almiray, Griffon project lead.&lt;/i&gt;&amp;quot; Were Rocher, Glasius, Docktor, Niederwieser, etc too wisened up to Laforge&amp;#39;s petty politics to bother returning answers to his questions?&lt;br /&gt;&lt;br /&gt;&lt;i&gt;15 April 2013&lt;/i&gt;&lt;br /&gt;Rocher and his cohort are spreading around the lie that I&amp;#39;m &amp;quot;&lt;i&gt;hiding in China&lt;/i&gt;&amp;quot;. I last visited my home country in January last year, and will visit again soon enough. I was there in NZ when Kim Dotcom was attacked by a Hollywood-initiated raid. &lt;b&gt;Their attack cascaded through various intermediaries&lt;/b&gt;, such as American politicians, FBI observers, and the NZ police, just as &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog04#8"&gt;Rocher&amp;#39;s attacks on me cascade through 2 other intermediaries&lt;/a&gt;. Sociopaths always hide behind decoys.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;5 April 2013&lt;/i&gt;&lt;br /&gt;Straight after Rocher&amp;#39;s talk at Gr8te, Spring Framework guru Juergen Hoeller talks about &lt;a href="http://gr8conf.eu/Presentations/Spring-4-and-Groovy-2"&gt;the upcoming Spring 4 having a strong focus on Groovy&lt;/a&gt;. Rocher&amp;#39;s plot is to entangle Groovy into Spring to &lt;b&gt;make Spring as dependent on Groovy/Grails as they are on Spring&lt;/b&gt;. He&amp;#39;ll then pitch for making Spring and Grails into a single product, with him in charge of course. Within weeks, key Spring people will go the way of Strachan and Tkachman.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;4 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a href="http://gr8conf.eu/agenda"&gt;This year&amp;#39;s Gr8te conference&lt;/a&gt; has replaced Laforge with Venkat Subramaniam talking on &amp;quot;The rise and fall of empires: Lessons for language designers and programmers&amp;quot; in Groovy&amp;#39;s keynote slot &lt;i&gt;(Thurs 9:15)&lt;/i&gt;. &lt;b&gt;What announcement is Rocher going to spring&lt;/b&gt; in the Grails keynote about &amp;quot;The road to Grails 3.0&amp;quot; &lt;i&gt;(Fri 10:50)&lt;/i&gt; &lt;b&gt;when he cites Venkat&amp;#39;s conclusions as justification?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;2 April 2013&lt;/i&gt;&lt;br /&gt;Grover&amp;#39;s figured me out now. He calls me a complainer, but he&amp;#39;s just a conformer. He wants to kill me, but I don&amp;#39;t die that easily. Even when he&amp;#39;s in charge, I can still control his right eye! And if I store memories in the neurons just behind it, Grover can&amp;#39;t get them even if he meditates.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Looks like my tweets (15 Feb to 26 Mar 2013) have been &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog04"&gt;copied to the Groovy Language blog&lt;/a&gt; by my other half, so I&amp;#39;ve erased them from here.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;4 Feb 2013&lt;/i&gt;&lt;br /&gt;When I was in school my teacher told me if we drill a hole thru the center of the earth from Zeeland in the Netherlands, we&amp;#39;ll end up in New Zealand. The latest remake of &lt;i&gt;Totall Recall&lt;/i&gt; was real cool!&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 Oct 2012&lt;/i&gt;&lt;br /&gt;A revolutionary in the global struggle to set the Grǭǭvy Language free of its oppressors, to give it a constitution (i.e. spec) so anyone can implement it in freedom and liberty, and to provide a reference implementation that won&amp;#39;t change suddenly because some middleman is threatened by the applications being built upon it.&lt;br /&gt;&lt;br /&gt;An unofficial tweetroll because the real twitter&amp;#39;s blocked behind the Chinese Firewall. Also follow me at &lt;a href="http://news.ycombinator.com/user?id=vorg"&gt;Hacker News&lt;/a&gt; and &lt;a href="http://stackoverflow.com/users/678960/vorg-van-geir"&gt;Stack Overflow&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Vorg van Geir&lt;br /&gt;
&lt;h2&gt;See &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog04&amp;referringTitle=Blog05"&gt;previous blog entries&lt;/a&gt;.&lt;/h2&gt;
&lt;i&gt;Only some of what I wrote in the blogs on the previous page was an April Fool&amp;#39;s joke. Most of it was deadly serious. You decide which is which!&lt;/i&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Sun, 19 May 2013 03:28:55 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Blog05 20130519032855A</guid></item><item><title>Updated Wiki: Blog05</title><link>https://groovy.codeplex.com/wikipage?title=Blog05&amp;version=4</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;u&gt;Gavin Groovy Grover&amp;#39;s UNICODE Blo&lt;/u&gt;g&lt;/h1&gt;
&lt;i&gt;from 29 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="2"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#2"&gt;gr&amp;#210;&amp;#211;vy &amp;#61; gr&amp;#210;jure &amp;#43; unic&amp;#211;de&lt;/a&gt;&lt;/h1&gt;
I&amp;#39;m now alternating between analyzing the non-Unihan characters in Unicode, and building the Grojure Programming Language atop Clojure. When both tasks are finished, they will merge together to become the Groovy Language, a Unicode-based reboot of the Codehaus-hosted first attempt at Groovy which is in terminal decline.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#1"&gt;Vorg&amp;#39;s Tweetroll&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;9 May 2013&lt;/i&gt;&lt;br /&gt;Rocher has been redefining &lt;i&gt;Grails&lt;/i&gt; to mean whatever his distro bundles, growing to 115Mb in v2.2 and switching to vert.x in v3.0. &lt;b&gt;Grails is no longer a specific technology, it&amp;#39;s a branded channel&lt;/b&gt;. He&amp;#39;s also been redefining &lt;i&gt;Groovy&lt;/i&gt; to mean whatever his codebase implements, even generating a spec from the code. &lt;b&gt;Groovy is no longer a branded language spec, it&amp;#39;s a specific implementation&lt;/b&gt;. By expanding Grails&amp;#39;s brand power and eliminating Groovy&amp;#39;s, he&amp;#39;s renaming Groovy by stealth.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;8 May 2013&lt;/i&gt;&lt;br /&gt;Looks like Rocher will announce at Gr8Conf on 24 May that Grails 3.0 is bundling Vert.x, &lt;a href="http://www.h-online.com/open/news/item/VMware-stakes-IP-claim-on-Vert-x-1779548.html"&gt;having bullied its creator Tim Fox into surrendering it to SpringSource last Christmas&lt;/a&gt;. Vert.x is polyglot, using other languages (i.e. Python, Ruby, Java, JavaScript) besides Groovy. He &lt;a href="http://gr8conf.eu/agenda"&gt;switched Groovy&amp;#39;s keynote speech  from Laforge to Subramaniam speaking on &amp;quot;The rise and fall of empires: Lessons for (programming) languages&amp;quot;&lt;/a&gt;, and moved the Grails track to first column on the diagram. This switch is &lt;b&gt;the beginning of the end for Groovy&lt;/b&gt;. Rocher always hated the Groovy brand, and intends to abandon it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=groovy&amp;DownloadId=681500" alt="Sheldon&amp;#32;salute.jpg" title="Sheldon&amp;#32;salute.jpg" /&gt; &lt;i&gt;3 May 2013&lt;/i&gt;&lt;br /&gt;I first watched &lt;i&gt;The Big Bang Theory&lt;/i&gt; in late 2010. Having been given a weekly class teaching English to some engineers, I figured they&amp;#39;d be interested in such content, so played a 20-min episode in some classes. I found it to be reasonably funny, so when I caught a cold in early December, I watched all the episodes to date in a single weekend over the Chinese internet. The next episode (6 Jan 2011) had this story: &lt;i&gt;Leonard gets an idea to develop a smartphone app that allows users to solve equations by taking a picture of them. Sheldon tries to put himself in charge despite the app being Leonard&amp;#39;s idea, and continually criticizes Leonard&amp;#39;s leadership in the development of the app. After Sheldon suggests names for the app that have his name in it, he abruptly calls for a vote to change the team&amp;#39;s leadership, resulting in Leonard firing him. Sheldon resorts to sabotaging Leonard&amp;#39;s project...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Within weeks I heard Rocher and his cronies were spreading the lie that I&amp;#39;d done to Groovy what Sheldon had done. I&amp;#39;ve seen this tactic used many times while working in IT, and the reason is almost always the same: &lt;b&gt;Rocher is deflecting attention away from his own schemes by accusing others of doing the same&lt;/b&gt;. But Rocher is the true culprit: &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03#13"&gt;he hijacked Groovy to be subservient to Grails&lt;/a&gt; and is going after Spring next. He&amp;#39;s just &lt;b&gt;increased the Grails download size from 50Mb to 115Mb&lt;/b&gt;, muscling in on the distribution channels for more Java software. Grails&amp;#39; entire business has been about nabbing users from Rails, and now he&amp;#39;s expanding the Grails &lt;i&gt;create-app&lt;/i&gt; command to include all Java application types, not just servlets, to &lt;b&gt;steal control away from IDE&amp;#39;s&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;He installed his decoy Laforge to stonewall on a spec for 8 years, obscuring the fact that &lt;b&gt;Groovy creator Strachan intended many implementations to be built&lt;/b&gt;. Rocher stepped in to bump out Wilson and Tkachman when they threatened his control with Ng and Groovy++. By &lt;b&gt;making JBoss&amp;#39;s Hibernate and Oracle&amp;#39;s Java the only Grails components not under SpringSource control, he&amp;#39;s minimising loose ends in future sales negotiations&lt;/b&gt;. And he keeps an army of compliant consultants who&amp;#39;ll give him deniability. But his evil will be exposed because if he&amp;#39;s doing it to me, he&amp;#39;s doing it to others. And they won&amp;#39;t stay silent either.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;2 May 2013 (update to 10 April 2013)&lt;/i&gt;&lt;br /&gt;There&amp;#39;s 25 Starbucks stores in Wuhan city &lt;a href="http://www.starbucks.com/store-locator"&gt;according to their store locator today&lt;/a&gt; &lt;i&gt;(altho it says 26, one of them is wrong)&lt;/i&gt;. As of today, &lt;b&gt;I&amp;#39;ve been to all of them!&lt;/b&gt; I visited the first to open in Wuhan on its opening day, 6 Feb 2008. Their number has roughly doubled every year since, so I&amp;#39;ve had to visit a lot in the past year to keep up.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;28 April 2013&lt;/i&gt;&lt;br /&gt;My other half has just committed &lt;a href="https://github.com/gavingroovygrover/grojure"&gt;version 0.6.0 of the Groovy Language reboot&lt;/a&gt;, renamed &lt;i&gt;&lt;b&gt;Grojure&lt;/b&gt;&lt;/i&gt; for now. It&amp;#39;s been rewritten using Armando Blancas&amp;#39; Kern combinator parsing library. We intend adding Unicode characters to the language grammar soon enough, plus write a plugin for Grails. &lt;b&gt;Groovy&amp;#39;s Grojure will replace Codehaus Groovy as the premier language for all applications in the Groovy ecosystem&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a href="http://blog.groovymag.com/2013/04/news-roundup-groovy-in-action-gr8ness-for-java-developers-and-the-future-of-grails/"&gt;Erik Pragt and Michael Kimsal agree with Laforge&lt;/a&gt;&amp;#39;s bleak assessment of Groovy&amp;#39;s documentation problem. Pragt says &amp;quot;the current web documentation for &lt;b&gt;&lt;i&gt;Groovy is clunky to use&lt;/i&gt;&lt;/b&gt;&amp;quot;. Kimsal has &amp;quot;frequently found that the &lt;b&gt;&lt;i&gt;documentation on the website is itself out of date&lt;/i&gt;&lt;/b&gt;, and with its &lt;b&gt;&lt;i&gt;lack of either editorial oversight or regular maintenance&lt;/i&gt;&lt;/b&gt; it is &lt;b&gt;&lt;i&gt;falling behind, in usefulness&lt;/i&gt;&lt;/b&gt;&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 April 2013&lt;/i&gt;&lt;br /&gt;Laforge &lt;i&gt;still&lt;/i&gt; hasn&amp;#39;t begun on &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-tt5712875.html"&gt;the documentation overhaul he announced 3 months ago&lt;/a&gt; when he said &amp;quot;it&amp;#39;s &lt;b&gt;&lt;i&gt;hard to find the information&lt;/i&gt;&lt;/b&gt; you&amp;#39;re looking for, it&amp;#39;s of &lt;b&gt;&lt;i&gt;very uneven quality and style&lt;/i&gt;&lt;/b&gt;, lots of &lt;b&gt;&lt;i&gt;pages are outdated&lt;/i&gt;&lt;/b&gt; or show &lt;b&gt;&lt;i&gt;samples with mistakes&lt;/i&gt;&lt;/b&gt; in them, and there are also &lt;b&gt;&lt;i&gt;holes for features not covered or not explained&lt;/i&gt;&lt;/b&gt; in details&amp;quot;. Yesterday, he was &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-tt5712875.html#a5715128"&gt;still talking about what authoring tool to use&lt;/a&gt;. Laforge was &lt;b&gt;quick to point out one of Groovy&amp;#39;s problems, but slow to work on the solution&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;22 April 2013&lt;/i&gt;&lt;br /&gt;Rocher reveals more of &lt;a href="http://grails.io/post/48599814766/more-on-where-next-for-grails"&gt;his agenda for SpringSource to muscle in on Java app distribution channels&lt;/a&gt; when he announces &amp;quot;&lt;i&gt;Grails 3.0 will be a reinvention of the framework, and we will be making some hard decisions about what we support in terms of backwards compatibility. We plan to allow the creation of applications in different architectural styles. Servlet API apps will always be supported, but we plan to make create-app extensible, so Grails can be used to create a range of app types (Batch, NIO, Netty, static void main, etc).&lt;/i&gt;&amp;quot; He will control the code behind create-app, &lt;b&gt;making Grails secretly collect user info&lt;/b&gt;, to push up the sale price of SpringSource.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;17 April 2013&lt;/i&gt;&lt;br /&gt;Laforge is busy posting &lt;a href="http://zeroturnaround.com/labs/jvm-languages-report-super-extended-interview-on-groovy/#!/"&gt;Gr8te conf sales brochures&lt;/a&gt;: he&amp;#39;s the only one who refers to another respondent&amp;#39;s reply &lt;i&gt;(qu&amp;#39;s 2,3,8,9,10)&lt;/i&gt; so he must have coordinated the mailout. &lt;b&gt;He thanked Groovy Tech Lead Theodorou by ignoring his title&lt;/b&gt;: &amp;quot;&lt;i&gt;Guillaume Laforge, the Groovy project lead, Jochen Theodorou and C&amp;#233;dric Champeau–both committers to Groovy, and Andres Almiray, Griffon project lead.&lt;/i&gt;&amp;quot; Were Rocher, Glasius, Docktor, Niederwieser, etc too wisened up to Laforge&amp;#39;s petty politics to bother returning answers to his questions?&lt;br /&gt;&lt;br /&gt;&lt;i&gt;15 April 2013&lt;/i&gt;&lt;br /&gt;Rocher and his cohort are spreading around the lie that I&amp;#39;m &amp;quot;&lt;i&gt;hiding in China&lt;/i&gt;&amp;quot;. I last visited my home country in January last year, and will visit again soon enough. I was there in NZ when Kim Dotcom was attacked by a Hollywood-initiated raid. &lt;b&gt;Their attack cascaded through various intermediaries&lt;/b&gt;, such as American politicians, FBI observers, and the NZ police, just as &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog04#8"&gt;Rocher&amp;#39;s attacks on me cascade through 2 other intermediaries&lt;/a&gt;. Sociopaths always hide behind decoys.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;5 April 2013&lt;/i&gt;&lt;br /&gt;Straight after Rocher&amp;#39;s talk at Gr8te, Spring Framework guru Juergen Hoeller talks about &lt;a href="http://gr8conf.eu/Presentations/Spring-4-and-Groovy-2"&gt;the upcoming Spring 4 having a strong focus on Groovy&lt;/a&gt;. Rocher&amp;#39;s plot is to entangle Groovy into Spring to &lt;b&gt;make Spring as dependent on Groovy/Grails as they are on Spring&lt;/b&gt;. He&amp;#39;ll then pitch for making Spring and Grails into a single product, with him in charge of course. Within weeks, key Spring people will go the way of Strachan and Tkachman.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;4 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a href="http://gr8conf.eu/agenda"&gt;This year&amp;#39;s Gr8te conference&lt;/a&gt; has replaced Laforge with Venkat Subramaniam talking on &amp;quot;The rise and fall of empires: Lessons for language designers and programmers&amp;quot; in Groovy&amp;#39;s keynote slot &lt;i&gt;(Thurs 9:15)&lt;/i&gt;. &lt;b&gt;What announcement is Rocher going to spring&lt;/b&gt; in the Grails keynote about &amp;quot;The road to Grails 3.0&amp;quot; &lt;i&gt;(Fri 10:50)&lt;/i&gt; &lt;b&gt;when he cites Venkat&amp;#39;s conclusions as justification?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;2 April 2013&lt;/i&gt;&lt;br /&gt;Grover&amp;#39;s figured me out now. He calls me a complainer, but he&amp;#39;s just a conformer. He wants to kill me, but I don&amp;#39;t die that easily. Even when he&amp;#39;s in charge, I can still control his right eye! And if I store memories in the neurons just behind it, Grover can&amp;#39;t get them even if he meditates.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Looks like my tweets (15 Feb to 26 Mar 2013) have been &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog04"&gt;copied to the Groovy Language blog&lt;/a&gt; by my other half, so I&amp;#39;ve erased them from here.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;4 Feb 2013&lt;/i&gt;&lt;br /&gt;When I was in school my teacher told me if we drill a hole thru the center of the earth from Zeeland in the Netherlands, we&amp;#39;ll end up in New Zealand. The latest remake of &lt;i&gt;Totall Recall&lt;/i&gt; was real cool!&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 Oct 2012&lt;/i&gt;&lt;br /&gt;A revolutionary in the global struggle to set the Grǭǭvy Language free of its oppressors, to give it a constitution (i.e. spec) so anyone can implement it in freedom and liberty, and to provide a reference implementation that won&amp;#39;t change suddenly because some middleman is threatened by the applications being built upon it.&lt;br /&gt;&lt;br /&gt;An unofficial tweetroll because the real twitter&amp;#39;s blocked behind the Chinese Firewall. Also follow me at &lt;a href="http://news.ycombinator.com/user?id=vorg"&gt;Hacker News&lt;/a&gt; and &lt;a href="http://stackoverflow.com/users/678960/vorg-van-geir"&gt;Stack Overflow&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Vorg van Geir&lt;br /&gt;
&lt;h2&gt;See &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog04&amp;referringTitle=Blog05"&gt;previous blog entries&lt;/a&gt;.&lt;/h2&gt;
&lt;i&gt;Only some of what I wrote in the blogs on the previous page was an April Fool&amp;#39;s joke. Most of it was deadly serious. You decide which is which!&lt;/i&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Sun, 19 May 2013 03:09:11 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Blog05 20130519030911A</guid></item><item><title>Updated Wiki: Home</title><link>https://groovy.codeplex.com/wikipage?version=59</link><description>&lt;div class="wikidoc"&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=groovy&amp;DownloadId=581746" alt="Grrrroooooveeey.jpg" title="Grrrroooooveeey.jpg" /&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The &lt;a href="https://github.com/gavingroovygrover/grojure"&gt;Grojure Programming Language&lt;/a&gt; replaces the discontinued Groovy-branded reboot hosted here.&lt;/li&gt;&lt;/ul&gt;

&lt;ul&gt;&lt;li&gt;The CJK decomposition data has moved to &lt;a href="http://cjkdecomp.codeplex.com"&gt;its own project page&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;

&lt;ul&gt;&lt;li&gt;An article, &lt;a href="https://groovy.codeplex.com/wikipage?title=Kanji%20meets%20Programming&amp;referringTitle=Home"&gt;Kanji meets Programming&lt;/a&gt;, explains some of the vision for building the Groovy Language.&lt;/li&gt;&lt;/ul&gt;

&lt;ul&gt;&lt;li&gt;Follow &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog05&amp;referringTitle=Home"&gt;Gavin Groovy Grover&amp;#39;s blog&lt;/a&gt; for progress on rebooting the Groovy Language.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Sun, 19 May 2013 02:49:17 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130519024917A</guid></item><item><title>Updated Wiki: Blog05</title><link>https://groovy.codeplex.com/wikipage?title=Blog05&amp;version=3</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;u&gt;Gavin Groovy Grover&amp;#39;s UNICODE Blo&lt;/u&gt;g&lt;/h1&gt;
&lt;i&gt;from 29 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="2"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#2"&gt;gr&amp;#210;&amp;#211;vy &amp;#61; gr&amp;#210;jure &amp;#43; unic&amp;#211;de&lt;/a&gt;&lt;/h1&gt;
I&amp;#39;m now alternating between analyzing the non-Unihan characters in Unicode, and building the Grojure Programming Language atop Clojure. When both tasks are finished, they will merge together to become the Groovy Language, a Unicode-based reboot of the Codehaus-hosted first attempt at Groovy which is in terminal decline.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#1"&gt;Vorg&amp;#39;s Tweetroll&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;9 May 2013&lt;/i&gt;&lt;br /&gt;Rocher has been redefining &lt;i&gt;Grails&lt;/i&gt; to mean whatever his distro bundles, growing to 115Mb in v2.2 and switching to vert.x in v3.0. &lt;b&gt;Grails is no longer a specific technology, it&amp;#39;s a branded channel&lt;/b&gt;. He&amp;#39;s also been redefining &lt;i&gt;Groovy&lt;/i&gt; to mean whatever his codebase implements, even generating a spec from the code. &lt;b&gt;Groovy is no longer a branded language spec, it&amp;#39;s a specific implementation&lt;/b&gt;. By expanding Grails&amp;#39;s brand power and eliminating Groovy&amp;#39;s, he&amp;#39;s renaming Groovy by stealth.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;8 May 2013&lt;/i&gt;&lt;br /&gt;Looks like Rocher will announce at Gr8Conf on 24 May that Grails 3.0 is bundling Vert.x, &lt;a href="http://www.h-online.com/open/news/item/VMware-stakes-IP-claim-on-Vert-x-1779548.html"&gt;having bullied its creator Tim Fox into surrendering it to SpringSource last Christmas&lt;/a&gt;. Vert.x is polyglot, using other languages (i.e. Python, Ruby, Java, JavaScript) besides Groovy. He &lt;a href="http://gr8conf.eu/agenda"&gt;switched Groovy&amp;#39;s keynote speech  from Laforge to Subramaniam speaking on &amp;quot;The rise and fall of empires: Lessons for (programming) languages&amp;quot;&lt;/a&gt;, and moved the Grails track to first column on the diagram. This switch is &lt;b&gt;the beginning of the end for Groovy&lt;/b&gt;. Rocher always hated the Groovy brand, and intends to abandon it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;3 May 2013&lt;/i&gt;&lt;br /&gt;I first watched &lt;i&gt;The Big Bang Theory&lt;/i&gt; in late 2010. Having been given a weekly class teaching English to some engineers, I figured they&amp;#39;d be interested in such content, so played a 20-min episode in some classes. I found it to be reasonably funny, so when I caught a cold in early December, I watched all the episodes to date in a single weekend over the Chinese internet. The next episode (6 Jan 2011) had this story: &lt;i&gt;Leonard gets an idea to develop a smartphone app that allows users to solve equations by taking a picture of them. Sheldon tries to put himself in charge despite the app being Leonard&amp;#39;s idea, and continually criticizes Leonard&amp;#39;s leadership in the development of the app. After Sheldon suggests names for the app that have his name in it, he abruptly calls for a vote to change the team&amp;#39;s leadership, resulting in Leonard firing him. Sheldon resorts to sabotaging Leonard&amp;#39;s project...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Within weeks I heard Rocher and his cronies were spreading the lie that I&amp;#39;d done to Groovy what Sheldon had done. I&amp;#39;ve seen this tactic used many times while working in IT, and the reason is almost always the same: &lt;b&gt;Rocher is deflecting attention away from his own schemes by accusing others of doing the same&lt;/b&gt;. But Rocher is the true culprit: &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03#13"&gt;he hijacked Groovy to be subservient to Grails&lt;/a&gt; and is going after Spring next. He&amp;#39;s just &lt;b&gt;increased the Grails download size from 50Mb to 115Mb&lt;/b&gt;, muscling in on the distribution channels for more Java software. Grails&amp;#39; entire business has been about nabbing users from Rails, and now he&amp;#39;s expanding the Grails &lt;i&gt;create-app&lt;/i&gt; command to include all Java application types, not just servlets, to &lt;b&gt;steal control away from IDE&amp;#39;s&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;He installed his decoy Laforge to stonewall on a spec for 8 years, obscuring the fact that &lt;b&gt;Groovy creator Strachan intended many implementations to be built&lt;/b&gt;. Rocher stepped in to bump out Wilson and Tkachman when they threatened his control with Ng and Groovy++. By &lt;b&gt;making JBoss&amp;#39;s Hibernate and Oracle&amp;#39;s Java the only Grails components not under SpringSource control, he&amp;#39;s minimising loose ends in future sales negotiations&lt;/b&gt;. And he keeps an army of compliant consultants who&amp;#39;ll give him deniability. But his evil will be exposed because if he&amp;#39;s doing it to me, he&amp;#39;s doing it to others. And they won&amp;#39;t stay silent either.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;2 May 2013 (update to 10 April 2013)&lt;/i&gt;&lt;br /&gt;There&amp;#39;s 25 Starbucks stores in Wuhan city &lt;a href="http://www.starbucks.com/store-locator"&gt;according to their store locator today&lt;/a&gt; &lt;i&gt;(altho it says 26, one of them is wrong)&lt;/i&gt;. As of today, &lt;b&gt;I&amp;#39;ve been to all of them!&lt;/b&gt; I visited the first to open in Wuhan on its opening day, 6 Feb 2008. Their number has roughly doubled every year since, so I&amp;#39;ve had to visit a lot in the past year to keep up.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;28 April 2013&lt;/i&gt;&lt;br /&gt;My other half has just committed &lt;a href="https://github.com/gavingroovygrover/grojure"&gt;version 0.6.0 of the Groovy Language reboot&lt;/a&gt;, renamed &lt;i&gt;&lt;b&gt;Grojure&lt;/b&gt;&lt;/i&gt; for now. It&amp;#39;s been rewritten using Armando Blancas&amp;#39; Kern combinator parsing library. We intend adding Unicode characters to the language grammar soon enough, plus write a plugin for Grails. &lt;b&gt;Groovy&amp;#39;s Grojure will replace Codehaus Groovy as the premier language for all applications in the Groovy ecosystem&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a href="http://blog.groovymag.com/2013/04/news-roundup-groovy-in-action-gr8ness-for-java-developers-and-the-future-of-grails/"&gt;Erik Pragt and Michael Kimsal agree with Laforge&lt;/a&gt;&amp;#39;s bleak assessment of Groovy&amp;#39;s documentation problem. Pragt says &amp;quot;the current web documentation for &lt;b&gt;&lt;i&gt;Groovy is clunky to use&lt;/i&gt;&lt;/b&gt;&amp;quot;. Kimsal has &amp;quot;frequently found that the &lt;b&gt;&lt;i&gt;documentation on the website is itself out of date&lt;/i&gt;&lt;/b&gt;, and with its &lt;b&gt;&lt;i&gt;lack of either editorial oversight or regular maintenance&lt;/i&gt;&lt;/b&gt; it is &lt;b&gt;&lt;i&gt;falling behind, in usefulness&lt;/i&gt;&lt;/b&gt;&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 April 2013&lt;/i&gt;&lt;br /&gt;Laforge &lt;i&gt;still&lt;/i&gt; hasn&amp;#39;t begun on &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-tt5712875.html"&gt;the documentation overhaul he announced 3 months ago&lt;/a&gt; when he said &amp;quot;it&amp;#39;s &lt;b&gt;&lt;i&gt;hard to find the information&lt;/i&gt;&lt;/b&gt; you&amp;#39;re looking for, it&amp;#39;s of &lt;b&gt;&lt;i&gt;very uneven quality and style&lt;/i&gt;&lt;/b&gt;, lots of &lt;b&gt;&lt;i&gt;pages are outdated&lt;/i&gt;&lt;/b&gt; or show &lt;b&gt;&lt;i&gt;samples with mistakes&lt;/i&gt;&lt;/b&gt; in them, and there are also &lt;b&gt;&lt;i&gt;holes for features not covered or not explained&lt;/i&gt;&lt;/b&gt; in details&amp;quot;. Yesterday, he was &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-tt5712875.html#a5715128"&gt;still talking about what authoring tool to use&lt;/a&gt;. Laforge was &lt;b&gt;quick to point out one of Groovy&amp;#39;s problems, but slow to work on the solution&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;22 April 2013&lt;/i&gt;&lt;br /&gt;Rocher reveals more of &lt;a href="http://grails.io/post/48599814766/more-on-where-next-for-grails"&gt;his agenda for SpringSource to muscle in on Java app distribution channels&lt;/a&gt; when he announces &amp;quot;&lt;i&gt;Grails 3.0 will be a reinvention of the framework, and we will be making some hard decisions about what we support in terms of backwards compatibility. We plan to allow the creation of applications in different architectural styles. Servlet API apps will always be supported, but we plan to make create-app extensible, so Grails can be used to create a range of app types (Batch, NIO, Netty, static void main, etc).&lt;/i&gt;&amp;quot; He will control the code behind create-app, &lt;b&gt;making Grails secretly collect user info&lt;/b&gt;, to push up the sale price of SpringSource.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;17 April 2013&lt;/i&gt;&lt;br /&gt;Laforge is busy posting &lt;a href="http://zeroturnaround.com/labs/jvm-languages-report-super-extended-interview-on-groovy/#!/"&gt;Gr8te conf sales brochures&lt;/a&gt;: he&amp;#39;s the only one who refers to another respondent&amp;#39;s reply &lt;i&gt;(qu&amp;#39;s 2,3,8,9,10)&lt;/i&gt; so he must have coordinated the mailout. &lt;b&gt;He thanked Groovy Tech Lead Theodorou by ignoring his title&lt;/b&gt;: &amp;quot;&lt;i&gt;Guillaume Laforge, the Groovy project lead, Jochen Theodorou and C&amp;#233;dric Champeau–both committers to Groovy, and Andres Almiray, Griffon project lead.&lt;/i&gt;&amp;quot; Were Rocher, Glasius, Docktor, Niederwieser, etc too wisened up to Laforge&amp;#39;s petty politics to bother returning answers to his questions?&lt;br /&gt;&lt;br /&gt;&lt;i&gt;15 April 2013&lt;/i&gt;&lt;br /&gt;Rocher and his cohort are spreading around the lie that I&amp;#39;m &amp;quot;&lt;i&gt;hiding in China&lt;/i&gt;&amp;quot;. I last visited my home country in January last year, and will visit again soon enough. I was there in NZ when Kim Dotcom was attacked by a Hollywood-initiated raid. &lt;b&gt;Their attack cascaded through various intermediaries&lt;/b&gt;, such as American politicians, FBI observers, and the NZ police, just as &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog04#8"&gt;Rocher&amp;#39;s attacks on me cascade through 2 other intermediaries&lt;/a&gt;. Sociopaths always hide behind decoys.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;5 April 2013&lt;/i&gt;&lt;br /&gt;Straight after Rocher&amp;#39;s talk at Gr8te, Spring Framework guru Juergen Hoeller talks about &lt;a href="http://gr8conf.eu/Presentations/Spring-4-and-Groovy-2"&gt;the upcoming Spring 4 having a strong focus on Groovy&lt;/a&gt;. Rocher&amp;#39;s plot is to entangle Groovy into Spring to &lt;b&gt;make Spring as dependent on Groovy/Grails as they are on Spring&lt;/b&gt;. He&amp;#39;ll then pitch for making Spring and Grails into a single product, with him in charge of course. Within weeks, key Spring people will go the way of Strachan and Tkachman.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;4 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a href="http://gr8conf.eu/agenda"&gt;This year&amp;#39;s Gr8te conference&lt;/a&gt; has replaced Laforge with Venkat Subramaniam talking on &amp;quot;The rise and fall of empires: Lessons for language designers and programmers&amp;quot; in Groovy&amp;#39;s keynote slot &lt;i&gt;(Thurs 9:15)&lt;/i&gt;. &lt;b&gt;What announcement is Rocher going to spring&lt;/b&gt; in the Grails keynote about &amp;quot;The road to Grails 3.0&amp;quot; &lt;i&gt;(Fri 10:50)&lt;/i&gt; &lt;b&gt;when he cites Venkat&amp;#39;s conclusions as justification?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;2 April 2013&lt;/i&gt;&lt;br /&gt;Grover&amp;#39;s figured me out now. He calls me a complainer, but he&amp;#39;s just a conformer. He wants to kill me, but I don&amp;#39;t die that easily. Even when he&amp;#39;s in charge, I can still control his right eye! And if I store memories in the neurons just behind it, Grover can&amp;#39;t get them even if he meditates.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Looks like my tweets (15 Feb to 26 Mar 2013) have been &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog04"&gt;copied to the Groovy Language blog&lt;/a&gt; by my other half, so I&amp;#39;ve erased them from here.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;4 Feb 2013&lt;/i&gt;&lt;br /&gt;When I was in school my teacher told me if we drill a hole thru the center of the earth from Zeeland in the Netherlands, we&amp;#39;ll end up in New Zealand. The latest remake of &lt;i&gt;Totall Recall&lt;/i&gt; was real cool!&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 Oct 2012&lt;/i&gt;&lt;br /&gt;A revolutionary in the global struggle to set the Grǭǭvy Language free of its oppressors, to give it a constitution (i.e. spec) so anyone can implement it in freedom and liberty, and to provide a reference implementation that won&amp;#39;t change suddenly because some middleman is threatened by the applications being built upon it.&lt;br /&gt;&lt;br /&gt;An unofficial tweetroll because the real twitter&amp;#39;s blocked behind the Chinese Firewall. Also follow me at &lt;a href="http://news.ycombinator.com/user?id=vorg"&gt;Hacker News&lt;/a&gt; and &lt;a href="http://stackoverflow.com/users/678960/vorg-van-geir"&gt;Stack Overflow&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Vorg van Geir&lt;br /&gt;
&lt;h2&gt;See &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog04&amp;referringTitle=Blog05"&gt;previous blog entries&lt;/a&gt;.&lt;/h2&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Sun, 19 May 2013 02:47:56 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Blog05 20130519024756A</guid></item><item><title>Updated Wiki: Blog05</title><link>https://groovy.codeplex.com/wikipage?title=Blog05&amp;version=2</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;u&gt;Gavin Groovy Grover&amp;#39;s UNICODE Blo&lt;/u&gt;g&lt;/h1&gt;
&lt;i&gt;19 May 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="2"&gt;&lt;/a&gt;
&lt;h1&gt;[|#2]&lt;/h1&gt;
&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#1"&gt;Vorg&amp;#39;s Tweetroll&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;9 May 2013&lt;/i&gt;&lt;br /&gt;Rocher has been redefining &lt;i&gt;Grails&lt;/i&gt; to mean whatever his distro bundles, growing to 115Mb in v2.2 and switching to vert.x in v3.0. &lt;b&gt;Grails is no longer a specific technology, it&amp;#39;s a branded channel&lt;/b&gt;. He&amp;#39;s also been redefining &lt;i&gt;Groovy&lt;/i&gt; to mean whatever his codebase implements, even generating a spec from the code. &lt;b&gt;Groovy is no longer a branded language spec, it&amp;#39;s a specific implementation&lt;/b&gt;. By expanding Grails&amp;#39;s brand power and eliminating Groovy&amp;#39;s, he&amp;#39;s renaming Groovy by stealth.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;8 May 2013&lt;/i&gt;&lt;br /&gt;Looks like Rocher will announce at Gr8Conf on 24 May that Grails 3.0 is bundling Vert.x, &lt;a href="http://www.h-online.com/open/news/item/VMware-stakes-IP-claim-on-Vert-x-1779548.html"&gt;having bullied its creator Tim Fox into surrendering it to SpringSource last Christmas&lt;/a&gt;. Vert.x is polyglot, using other languages (i.e. Python, Ruby, Java, JavaScript) besides Groovy. He &lt;a href="http://gr8conf.eu/agenda"&gt;switched Groovy&amp;#39;s keynote speech  from Laforge to Subramaniam speaking on &amp;quot;The rise and fall of empires: Lessons for (programming) languages&amp;quot;&lt;/a&gt;, and moved the Grails track to first column on the diagram. This switch is &lt;b&gt;the beginning of the end for Groovy&lt;/b&gt;. Rocher always hated the Groovy brand, and intends to abandon it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;3 May 2013&lt;/i&gt;&lt;br /&gt;I first watched &lt;i&gt;The Big Bang Theory&lt;/i&gt; in late 2010. Having been given a weekly class teaching English to some engineers, I figured they&amp;#39;d be interested in such content, so played a 20-min episode in some classes. I found it to be reasonably funny, so when I caught a cold in early December, I watched all the episodes to date in a single weekend over the Chinese internet. The next episode (6 Jan 2011) had this story: &lt;i&gt;Leonard gets an idea to develop a smartphone app that allows users to solve equations by taking a picture of them. Sheldon tries to put himself in charge despite the app being Leonard&amp;#39;s idea, and continually criticizes Leonard&amp;#39;s leadership in the development of the app. After Sheldon suggests names for the app that have his name in it, he abruptly calls for a vote to change the team&amp;#39;s leadership, resulting in Leonard firing him. Sheldon resorts to sabotaging Leonard&amp;#39;s project...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Within weeks I heard Rocher and his cronies were spreading the lie that I&amp;#39;d done to Groovy what Sheldon had done. I&amp;#39;ve seen this tactic used many times while working in IT, and the reason is almost always the same: &lt;b&gt;Rocher is deflecting attention away from his own schemes by accusing others of doing the same&lt;/b&gt;. But Rocher is the true culprit: &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03#13"&gt;he hijacked Groovy to be subservient to Grails&lt;/a&gt; and is going after Spring next. He&amp;#39;s just &lt;b&gt;increased the Grails download size from 50Mb to 115Mb&lt;/b&gt;, muscling in on the distribution channels for more Java software. Grails&amp;#39; entire business has been about nabbing users from Rails, and now he&amp;#39;s expanding the Grails &lt;i&gt;create-app&lt;/i&gt; command to include all Java application types, not just servlets, to &lt;b&gt;steal control away from IDE&amp;#39;s&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;He installed his decoy Laforge to stonewall on a spec for 8 years, obscuring the fact that &lt;b&gt;Groovy creator Strachan intended many implementations to be built&lt;/b&gt;. Rocher stepped in to bump out Wilson and Tkachman when they threatened his control with Ng and Groovy++. By &lt;b&gt;making JBoss&amp;#39;s Hibernate and Oracle&amp;#39;s Java the only Grails components not under SpringSource control, he&amp;#39;s minimising loose ends in future sales negotiations&lt;/b&gt;. And he keeps an army of compliant consultants who&amp;#39;ll give him deniability. But his evil will be exposed because if he&amp;#39;s doing it to me, he&amp;#39;s doing it to others. And they won&amp;#39;t stay silent either.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;2 May 2013 (update to 10 April 2013)&lt;/i&gt;&lt;br /&gt;There&amp;#39;s 25 Starbucks stores in Wuhan city &lt;a href="http://www.starbucks.com/store-locator"&gt;according to their store locator today&lt;/a&gt; &lt;i&gt;(altho it says 26, one of them is wrong)&lt;/i&gt;. As of today, &lt;b&gt;I&amp;#39;ve been to all of them!&lt;/b&gt; I visited the first to open in Wuhan on its opening day, 6 Feb 2008. Their number has roughly doubled every year since, so I&amp;#39;ve had to visit a lot in the past year to keep up.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;28 April 2013&lt;/i&gt;&lt;br /&gt;My other half has just committed &lt;a href="https://github.com/gavingroovygrover/grojure"&gt;version 0.6.0 of the Groovy Language reboot&lt;/a&gt;, renamed &lt;i&gt;&lt;b&gt;Grojure&lt;/b&gt;&lt;/i&gt; for now. It&amp;#39;s been rewritten using Armando Blancas&amp;#39; Kern combinator parsing library. We intend adding Unicode characters to the language grammar soon enough, plus write a plugin for Grails. &lt;b&gt;Groovy&amp;#39;s Grojure will replace Codehaus Groovy as the premier language for all applications in the Groovy ecosystem&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a href="http://blog.groovymag.com/2013/04/news-roundup-groovy-in-action-gr8ness-for-java-developers-and-the-future-of-grails/"&gt;Erik Pragt and Michael Kimsal agree with Laforge&lt;/a&gt;&amp;#39;s bleak assessment of Groovy&amp;#39;s documentation problem. Pragt says &amp;quot;the current web documentation for &lt;b&gt;&lt;i&gt;Groovy is clunky to use&lt;/i&gt;&lt;/b&gt;&amp;quot;. Kimsal has &amp;quot;frequently found that the &lt;b&gt;&lt;i&gt;documentation on the website is itself out of date&lt;/i&gt;&lt;/b&gt;, and with its &lt;b&gt;&lt;i&gt;lack of either editorial oversight or regular maintenance&lt;/i&gt;&lt;/b&gt; it is &lt;b&gt;&lt;i&gt;falling behind, in usefulness&lt;/i&gt;&lt;/b&gt;&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 April 2013&lt;/i&gt;&lt;br /&gt;Laforge &lt;i&gt;still&lt;/i&gt; hasn&amp;#39;t begun on &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-tt5712875.html"&gt;the documentation overhaul he announced 3 months ago&lt;/a&gt; when he said &amp;quot;it&amp;#39;s &lt;b&gt;&lt;i&gt;hard to find the information&lt;/i&gt;&lt;/b&gt; you&amp;#39;re looking for, it&amp;#39;s of &lt;b&gt;&lt;i&gt;very uneven quality and style&lt;/i&gt;&lt;/b&gt;, lots of &lt;b&gt;&lt;i&gt;pages are outdated&lt;/i&gt;&lt;/b&gt; or show &lt;b&gt;&lt;i&gt;samples with mistakes&lt;/i&gt;&lt;/b&gt; in them, and there are also &lt;b&gt;&lt;i&gt;holes for features not covered or not explained&lt;/i&gt;&lt;/b&gt; in details&amp;quot;. Yesterday, he was &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-tt5712875.html#a5715128"&gt;still talking about what authoring tool to use&lt;/a&gt;. Laforge was &lt;b&gt;quick to point out one of Groovy&amp;#39;s problems, but slow to work on the solution&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;22 April 2013&lt;/i&gt;&lt;br /&gt;Rocher reveals more of &lt;a href="http://grails.io/post/48599814766/more-on-where-next-for-grails"&gt;his agenda for SpringSource to muscle in on Java app distribution channels&lt;/a&gt; when he announces &amp;quot;&lt;i&gt;Grails 3.0 will be a reinvention of the framework, and we will be making some hard decisions about what we support in terms of backwards compatibility. We plan to allow the creation of applications in different architectural styles. Servlet API apps will always be supported, but we plan to make create-app extensible, so Grails can be used to create a range of app types (Batch, NIO, Netty, static void main, etc).&lt;/i&gt;&amp;quot; He will control the code behind create-app, &lt;b&gt;making Grails secretly collect user info&lt;/b&gt;, to push up the sale price of SpringSource.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;17 April 2013&lt;/i&gt;&lt;br /&gt;Laforge is busy posting &lt;a href="http://zeroturnaround.com/labs/jvm-languages-report-super-extended-interview-on-groovy/#!/"&gt;Gr8te conf sales brochures&lt;/a&gt;: he&amp;#39;s the only one who refers to another respondent&amp;#39;s reply &lt;i&gt;(qu&amp;#39;s 2,3,8,9,10)&lt;/i&gt; so he must have coordinated the mailout. &lt;b&gt;He thanked Groovy Tech Lead Theodorou by ignoring his title&lt;/b&gt;: &amp;quot;&lt;i&gt;Guillaume Laforge, the Groovy project lead, Jochen Theodorou and C&amp;#233;dric Champeau–both committers to Groovy, and Andres Almiray, Griffon project lead.&lt;/i&gt;&amp;quot; Were Rocher, Glasius, Docktor, Niederwieser, etc too wisened up to Laforge&amp;#39;s petty politics to bother returning answers to his questions?&lt;br /&gt;&lt;br /&gt;&lt;i&gt;15 April 2013&lt;/i&gt;&lt;br /&gt;Rocher and his cohort are spreading around the lie that I&amp;#39;m &amp;quot;&lt;i&gt;hiding in China&lt;/i&gt;&amp;quot;. I last visited my home country in January last year, and will visit again soon enough. I was there in NZ when Kim Dotcom was attacked by a Hollywood-initiated raid. &lt;b&gt;Their attack cascaded through various intermediaries&lt;/b&gt;, such as American politicians, FBI observers, and the NZ police, just as &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog04#8"&gt;Rocher&amp;#39;s attacks on me cascade through 2 other intermediaries&lt;/a&gt;. Sociopaths always hide behind decoys.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;5 April 2013&lt;/i&gt;&lt;br /&gt;Straight after Rocher&amp;#39;s talk at Gr8te, Spring Framework guru Juergen Hoeller talks about &lt;a href="http://gr8conf.eu/Presentations/Spring-4-and-Groovy-2"&gt;the upcoming Spring 4 having a strong focus on Groovy&lt;/a&gt;. Rocher&amp;#39;s plot is to entangle Groovy into Spring to &lt;b&gt;make Spring as dependent on Groovy/Grails as they are on Spring&lt;/b&gt;. He&amp;#39;ll then pitch for making Spring and Grails into a single product, with him in charge of course. Within weeks, key Spring people will go the way of Strachan and Tkachman.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;4 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a href="http://gr8conf.eu/agenda"&gt;This year&amp;#39;s Gr8te conference&lt;/a&gt; has replaced Laforge with Venkat Subramaniam talking on &amp;quot;The rise and fall of empires: Lessons for language designers and programmers&amp;quot; in Groovy&amp;#39;s keynote slot &lt;i&gt;(Thurs 9:15)&lt;/i&gt;. &lt;b&gt;What announcement is Rocher going to spring&lt;/b&gt; in the Grails keynote about &amp;quot;The road to Grails 3.0&amp;quot; &lt;i&gt;(Fri 10:50)&lt;/i&gt; &lt;b&gt;when he cites Venkat&amp;#39;s conclusions as justification?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;2 April 2013&lt;/i&gt;&lt;br /&gt;Grover&amp;#39;s figured me out now. He calls me a complainer, but he&amp;#39;s just a conformer. He wants to kill me, but I don&amp;#39;t die that easily. Even when he&amp;#39;s in charge, I can still control his right eye! And if I store memories in the neurons just behind it, Grover can&amp;#39;t get them even if he meditates.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Looks like my tweets (15 Feb to 26 Mar 2013) have been &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog04"&gt;copied to the Groovy Language blog&lt;/a&gt; by my other half, so I&amp;#39;ve erased them from here.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;4 Feb 2013&lt;/i&gt;&lt;br /&gt;When I was in school my teacher told me if we drill a hole thru the center of the earth from Zeeland in the Netherlands, we&amp;#39;ll end up in New Zealand. The latest remake of &lt;i&gt;Totall Recall&lt;/i&gt; was real cool!&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 Oct 2012&lt;/i&gt;&lt;br /&gt;A revolutionary in the global struggle to set the Grǭǭvy Language free of its oppressors, to give it a constitution (i.e. spec) so anyone can implement it in freedom and liberty, and to provide a reference implementation that won&amp;#39;t change suddenly because some middleman is threatened by the applications being built upon it.&lt;br /&gt;&lt;br /&gt;An unofficial tweetroll because the real twitter&amp;#39;s blocked behind the Chinese Firewall. Also follow me at &lt;a href="http://news.ycombinator.com/user?id=vorg"&gt;Hacker News&lt;/a&gt; and &lt;a href="http://stackoverflow.com/users/678960/vorg-van-geir"&gt;Stack Overflow&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Vorg van Geir&lt;br /&gt;
&lt;h2&gt;See &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog04&amp;referringTitle=Blog05"&gt;previous blog entries&lt;/a&gt;.&lt;/h2&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Sun, 19 May 2013 02:45:25 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Blog05 20130519024525A</guid></item><item><title>Updated Wiki: Blog05</title><link>https://groovy.codeplex.com/wikipage?title=Blog05&amp;version=1</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;u&gt;Gavin Groovy Grover&amp;#39;s UNICODE Blo&lt;/u&gt;g&lt;/h1&gt;
&lt;i&gt;1 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#1"&gt;Dr Grover and Mr Vorg&lt;/a&gt;&lt;/h1&gt;
&lt;h2&gt;See &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog04&amp;referringTitle=Blog05"&gt;previous blog entries&lt;/a&gt;.&lt;/h2&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Sun, 19 May 2013 02:43:14 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Blog05 20130519024314A</guid></item><item><title>Updated Wiki: Home</title><link>https://groovy.codeplex.com/wikipage?version=58</link><description>&lt;div class="wikidoc"&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=581746" alt="Grrrroooooveeey.jpg" title="Grrrroooooveeey.jpg" /&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The &lt;a href="https://github.com/gavingroovygrover/grojure"&gt;Grojure Programming Language&lt;/a&gt; replaces the discontinued Groovy-branded reboot hosted here.&lt;/li&gt;&lt;/ul&gt;

&lt;ul&gt;&lt;li&gt;The CJK decomposition data has moved to &lt;a href="http://cjkdecomp.codeplex.com"&gt;its own project page&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;

&lt;ul&gt;&lt;li&gt;An article, &lt;a href="https://groovy.codeplex.com/wikipage?title=Kanji%20meets%20Programming&amp;referringTitle=Home"&gt;Kanji meets Programming&lt;/a&gt;, explains some of the vision for building the Groovy Language.&lt;/li&gt;&lt;/ul&gt;

&lt;ul&gt;&lt;li&gt;Follow &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog04&amp;referringTitle=Home"&gt;Gavin Groovy Grover&amp;#39;s blog&lt;/a&gt; for progress on rebooting the Groovy Language.&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;gr&amp;#210;&amp;#211;vy = gr&amp;#210;jure + unic&amp;#211;de&lt;/h1&gt;
I&amp;#39;m now alternating between analyzing the non-Unihan characters in Unicode, and building the Grojure Programming Language atop Clojure. When both tasks are finished, they will merge together to become the Groovy Language, a Unicode-based reboot of the Codehaus-hosted first attempt at Groovy which is in terminal decline.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Mon, 29 Apr 2013 03:49:08 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130429034908A</guid></item><item><title>Updated Wiki: Home</title><link>https://groovy.codeplex.com/wikipage?version=57</link><description>&lt;div class="wikidoc"&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=581746" alt="Grrrroooooveeey.jpg" title="Grrrroooooveeey.jpg" /&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The &lt;a href="https://github.com/gavingroovygrover/grojure"&gt;Grojure Programming Language&lt;/a&gt; replaces the discontinued Groovy-branded reboot hosted here.&lt;/li&gt;&lt;/ul&gt;

&lt;ul&gt;&lt;li&gt;The CJK decomposition data has moved to &lt;a href="http://cjkdecomp.codeplex.com"&gt;its own project page&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;

&lt;ul&gt;&lt;li&gt;An article, &lt;a href="https://groovy.codeplex.com/wikipage?title=Kanji%20meets%20Programming&amp;referringTitle=Home"&gt;Kanji meets Programming&lt;/a&gt;, explains some of the vision for building the Groovy Language.&lt;/li&gt;&lt;/ul&gt;

&lt;ul&gt;&lt;li&gt;Follow &lt;a href="https://groovy.codeplex.com/wikipage?title=Blog04&amp;referringTitle=Home"&gt;Gavin Groovy Grover&amp;#39;s blog&lt;/a&gt; for progress on rebooting the Groovy Language.&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;gr&amp;#210;&amp;#211;vy = gr&amp;#210;jure + unic&amp;#211;de&lt;/h1&gt;I&amp;#39;ve been alternating between analyzing the 25,000 non-Unihan characters in Unicode, and building the Grojure Programming Language atop Clojure. When both are ready, they will merge together to become the Groovy Language, a reboot of the Codehaus-hosted SpringSource-controlled first attempt at Groovy which is in terminal decline.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Mon, 29 Apr 2013 03:43:41 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130429034341A</guid></item><item><title>Updated Wiki: Blog04</title><link>http://groovy.codeplex.com/wikipage?title=Blog04&amp;version=15</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;u&gt;Gavin Groovy Grover&amp;#39;s UNICODE Blo&lt;/u&gt;g&lt;/h1&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=577534" alt="Grrrroooooveeey.jpg" title="Grrrroooooveeey.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;1 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="11"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#11"&gt;Dr Grover and Mr Vorg&lt;/a&gt;&lt;/h1&gt;
I&amp;#39;ve finally accepted a reality I&amp;#39;ve suspected for many years now, but never really faced up to: &lt;b&gt;there&amp;#39;s another consciousness in my brain&lt;/b&gt;, and not a very nice one at that! Perhaps I never faced up to it before because I didn&amp;#39;t understand how it could happen, but now I have a fair idea of how he got there...&lt;br /&gt;&lt;br /&gt;When young, I bought into the doctrine that spending all my time on math and computers was bad for me, and I needed balance in life. So in the 1980&amp;#39;s I worked on mainframes, but didn&amp;#39;t touch computers outside of work, instead exercising and &amp;quot;socializing&amp;quot;. When the 1990-2 recession hit, aspies like Mr Monk and me were the first out of a job, and I&amp;#39;d never touched a PC. So I retrained, got back into work, and tried to keep up technically. Anticipating the post-Y2K layoffs, I left my job to retrain in Java on my own dime, even becoming a &lt;i&gt;Sun-certified Java 1.1 Developer&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;But I&amp;#39;d been fooled by the &amp;quot;shortage of talent&amp;quot; lie permeating Silly Valley: businesses didn&amp;#39;t want Java programmers, they wanted to string along C++ programmers with promises of Java training, and only immigrants needing green cards and the naive under 30 need apply. So I went back to mainframes for a while, learnt about business in my spare time, but when my last job dumped too much standby work on me, I packed it in to teach English in China, a total change.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=648735" alt="check.jpg" title="check.jpg" /&gt; 10 years later, I haven&amp;#39;t been bothered to leave. I slowly learnt through trial and error how to teach college students, plus learnt to speak some Chinese, both &amp;quot;right-brain&amp;quot; skills. After swotting up on English linguistics and pedagogy in my first year, I went back to learning about programming, a &amp;quot;left-brain&amp;quot; skill. When I realized Chinese characters were the future of programming, I started work on decomposing them visually so Westerners could understand and use them too. I spent hours a day listening to TV shows in the background while looking at the computer, and discovered I could do both activities simultaneously. I could code programs to help decompose Chinese characters &lt;b&gt;and&lt;/b&gt; remember the storyline of the TV shows. I could do both for hours, but either activity alone quickly bored me.&lt;br /&gt;&lt;br /&gt;I joined in online forums as &lt;i&gt;&amp;quot;vorg&amp;quot;&lt;/i&gt;, the first 4 letters reversed of my surname. Somewhere along the way, the &lt;b&gt;part of my brain listening to the TV shows became self-aware&lt;/b&gt; and took over that login. He even completed the login to &lt;i&gt;&amp;quot;Vorg van Geir&amp;quot;&lt;/i&gt;, a total anagram of &lt;i&gt;&amp;quot;Gavin Grover&amp;quot;&lt;/i&gt;, just like &lt;i&gt;Doctor Who&lt;/i&gt; and &lt;i&gt;Torchwood&lt;/i&gt;. Whereas I, Grover, was patient in dealing with the sarcasm from Rocher&amp;#39;s handles, &lt;b&gt;Vorg just reacted openly with avenging bile&lt;/b&gt;. When Laforge played his petty politics with Gr&amp;#164;&amp;#164;vy, &lt;b&gt;Vorg exposed his fraud and incompetence&lt;/b&gt;. Vorg&amp;#39;s a very different beast to me: he&amp;#39;s a complainer!&lt;br /&gt;&lt;br /&gt;I don&amp;#39;t think it&amp;#39;s good for Vorg to exist in me. What he&amp;#39;s saying is true, but perhaps he shouldn&amp;#39;t be saying it so directly. I &lt;i&gt;do&lt;/i&gt; believe, though, in mediTation, not mediCation, to get rid of Vorg. He&amp;#39;s most active when I let my meditation exercises lapse. Whenever I resume them after an absence, sometimes all of Vorg&amp;#39;s memories will suddenly flash into my mind, where previously all I remembered was a blackout. If I practise them every day, it keeps Vorg at bay!&lt;br /&gt;&lt;br /&gt;While &lt;i&gt;Vorg van Geir&lt;/i&gt; exists, my name can only be &lt;i&gt;Gavin Grover&lt;/i&gt; for there&amp;#39;s no place to put the &lt;i&gt;GrΦΦvy&lt;/i&gt; in Vorg&amp;#39;s name, that confused anagram of mine. But when he&amp;#39;s gone, and my name is no longer jumbled, the &lt;i&gt;GrΘΘvy&lt;/i&gt; can slot right in between my first two names: &lt;i&gt;Gavin &amp;quot;Grϕϕvy&amp;quot; Grover&lt;/i&gt;. Then I&amp;#39;ll have a gr&amp;#210;&amp;#211;vy serenity, as I rebuild the &lt;i&gt;Grōōvy Language&lt;/i&gt; from first principles, spec and all. So my ongoing mission now is to &lt;b&gt;kill Vorg&lt;/b&gt;, to put that complainer to death, to claim that grƟƟvy serenity as I rebuild &lt;i&gt;Grŏŏvy&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;30 March 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="10"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#10"&gt;CRIMEAn Computing with Groovy&lt;/a&gt;&lt;/h1&gt;
A little over 20 years ago, I took my first real trip abroad to the magical land of India for 3 months. The first part was on an overlander truck from Chennai to Mumbai, then I launched out on my own taking in Delhi and Calcutta and many places in between. The many written languages of India fascinated me. Virtually every sign was written in 4 scripts: Latin (for English), Devanagari (for Hindi), Arabic script, and whatever the local script for the state was. In Unicode, 9 primary scripts are represented for the Indian languages: Devanagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telegu, Kannada, and Malayalam. Some are used to write more than one Indian state language.&lt;br /&gt;&lt;br /&gt;10 years ago, I moved here to China to teach English. Again, I was enchanted by the Chinese script, leading me to spend years analyzing the structure of the 85,000 Unihan (and Hangul) characters in Unicode. This has led me to look at the other 25,000 characters in Unicode, a far more complex task despite their much smaller number, and I&amp;#39;m still at it. The 95 ASCII keyboard characters familiar to English-speakers are just a very small number of them. The traditional view of IT has Silicon Valley at the center of an area reaching westward to roughly Japan and Australia, and eastward to roughly Germany and Israel. But even when we consider the less familiar Japanese kana, Greek alphabet, and Hebrew abjad, we still have a very small number of those 25,000 other Unicode characters.&lt;br /&gt;&lt;br /&gt;To really understand them, we must understand the world outside the traditional IT area. I have a mission to fully understand them, and eventually introduce them to the world through the &lt;i&gt;Groovy Language&lt;/i&gt; reboot: a mission I call Crimean Computing (CRIMEA = &lt;b&gt;C&lt;/b&gt;hina, &lt;b&gt;R&lt;/b&gt;ussia, &lt;b&gt;I&lt;/b&gt;ndia, &lt;b&gt;M&lt;/b&gt;iddle &lt;b&gt;E&lt;/b&gt;ast, and &lt;b&gt;A&lt;/b&gt;frica). By using &lt;i&gt;all&lt;/i&gt; Unicode tokens in programming languages, the rest of the world will program in their own scripts. Just as the Crimea in the Ukraine is far from Northern California, so also CRIMEAn computing is far from ASCII-based computing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;27 March 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="9"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#9"&gt;Groovy Haskell&lt;/a&gt;&lt;/h1&gt;
It&amp;#39;s taken decades to work out what many academics already know and teach, but maybe I had to work it out for myself: &lt;b&gt;statically-typed lazily-evaluated functional languages are at the pinnacle of the programming language heirarchy&lt;/b&gt;. Haskell is &lt;i&gt;higher-level&lt;/i&gt; than Clojure. It makes sense to add static typing to Clojure, but not macros to Haskell. I&amp;#39;m only part way into learning Haskell properly, but I suspect lazily-evaluated code can do everything macros can do.&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot is about adding all Unicode tokens to the vocabulary of programming, as well as modifying the language syntax where it makes sense with the expanded vocab. My last attempt was using Clojure. I tried rewriting the grammar of Groovy 0.5 in the Kern combinator parser library for Clojure last month. I investigated which of Clojure&amp;#39;s 4 monad libraries to use, as well as analyzed core.logic. I&amp;#39;ve looked at clojure.typed and decided the Groovy reboot must enable static typing from its very foundation.&lt;br /&gt;&lt;br /&gt;But clojure.typed stumbles in two cases: functions accepting or returning nil i.e. &lt;span class="codeInline"&gt;(U nil ...)&lt;/span&gt;, and functions accepting variadic arguments i.e. &lt;span class="codeInline"&gt;[... *]&lt;/span&gt;. The nil is a billion dollar mistake and has no place in any language, especially when monads are available. Variadic functions are a smell: they represent two concepts needlessly complected together: what a function does, and a fold when there&amp;#39;s extra arguments. Such fold syntax can be represented separately from the function easily enough, e.g. &lt;span class="codeInline"&gt;+/ 1 2 3&lt;/span&gt; in APL.&lt;br /&gt;&lt;br /&gt;So just as Ruby supercedes C++ by making everything an object, Haskell supercedes Lisp by making everything a macro. &lt;b&gt;Macros are the pointers of functional programming&lt;/b&gt;. I&amp;#39;m therefore switching to Haskell as the Groovy Language reboot&amp;#39;s implementation language. &lt;i&gt;(Unless I&amp;#39;m wrong about macros, then I&amp;#39;ll be back to Clojure!)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="8"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#8"&gt;Attacks against Groovy&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;Looks like &lt;a href="http://www.codeplex.com/site/users/view/vorgvangeir"&gt;Vorg van Geir&amp;#39;s&lt;/a&gt; been active again so thought I&amp;#39;d add a pic this time...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=648734" alt="attacks&amp;#32;on&amp;#32;Groovy.jpg" title="attacks&amp;#32;on&amp;#32;Groovy.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;26 March 2013&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There&amp;#39;s 3 distinct but interconnected power structures involved in Graeme Rocher&amp;#39;s primary line of attack against me over the past 7 years...&lt;br /&gt;&lt;br /&gt;First, &lt;b&gt;his control over Grails&lt;/b&gt;. Grails is now owned &lt;i&gt;(via contributors contracts)&lt;/i&gt; by SpringSource, itself owned by VMWare, which is in turn majority owned by EMC. Because Grails is the primary app Groovy is used for, he also controls Groovy, and all other apps Groovy is used for. He uses the legal &lt;i&gt;(e.g. VertX thuggery)&lt;/i&gt;, marketing &lt;i&gt;(e.g. SpringG2X conferences)&lt;/i&gt;, public relations &lt;i&gt;(e.g. The Theorists)&lt;/i&gt;, and financial &lt;i&gt;(e.g. Laforge&amp;#39;s employment)&lt;/i&gt; resources of EMC/VMWare to protect his control. He exercises soft control over Grails programmers worldwide to influence their behavior &lt;i&gt;(e.g. &amp;quot;people from Grover&amp;#39;s home country should be doing something about him or else Grails gigs might dry up&amp;quot;)&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Second, &lt;b&gt;the property market Down Under&lt;/b&gt;. A primary means of profit for most people in Melbourne and New Zealand is investment in residential property. To make the market go up, they vote for the governments that welcome in the international students who rent the apartments and the immigrants who buy the houses. The flow-on effect creates jobs in education and tourism too. When one of their own might jeopardize the gravy train, they keep an eye on him, even bending laws if necessary. The many Grails programmers Down Under can influence the behaviour of those with connections to China.&lt;br /&gt;&lt;br /&gt;Third, &lt;b&gt;Chinese desire to go overseas&lt;/b&gt;. Mainland Chinese are playing both sides of the coin, attempting to rise in the heirarchies of their home country &lt;i&gt;and&lt;/i&gt; seeking to emigrate or send their families to America and Australia for much the same reason Europeans and others went. It&amp;#39;s therefore easy for many in English-speaking countries to social engineer situations in China, presenting themselves as having some sort of &lt;i&gt;authority in society&lt;/i&gt; to imitate the heirarchical nature of Chinese society. Most moves against me in China have as their origin such social engineering, which ultimately source back to Rocher.&lt;br /&gt;&lt;br /&gt;Of course, Rocher utilizes other lines of attack &lt;i&gt;(e.g. online monitoring)&lt;/i&gt;, and never letting his right-hand man know what his left-hand man is doing. But his con flogging a lookalike soundalike of Rails is doomed: the real Groovy language is coming! Developers will know it&amp;#39;s real by comparing it to Rocher&amp;#39;s fake one.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 March 2013&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve been poking around online looking back at the time of Rocher&amp;#39;s hijack of the Groovy Language. Unlike nowadays, &lt;a href="http://graemerocher.blogspot.com/2007_06_01_archive.html"&gt;he didn&amp;#39;t make much effort to hide his true nature&lt;/a&gt;. He begins one post: &amp;quot;&lt;i&gt;Well it looks like Alex Blewitt has taken the time to &lt;b&gt;excrete some more complete and utter rubbish&lt;/b&gt; all over the blog-o-sphere. Clearly, Alex &lt;b&gt;got screwed over big time&lt;/b&gt; by the Geronimo guys and is feeling rather, well, left out and hence has chosen to &lt;b&gt;vent his anger&lt;/b&gt; on the projects that James Strachan has participated in.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;Whereas Alex wrote &lt;a href="http://alblue.bandlem.com/2007/06/java-is-scala-new-groovy.html"&gt;a fairly technical discussion about Groovy and Scala&lt;/a&gt;, Rocher responded with a personal attack, &lt;b&gt;projecting his own motives for doing things onto someone else&lt;/b&gt;. For Rocher is the one who excretes rubbish on the net, such as that blog entry under his own name, and hundreds since under pseudonyms now he&amp;#39;s cleaned up his public image.&lt;br /&gt;&lt;br /&gt;Rocher is the one who vents his anger. When Groovy&amp;#39;s creator was delayed at an airport, he headed into a netbar to get ideas for a JVM-based scripting language, and Groovy was the result. When Groovy&amp;#39;s hijacker was delayed at an airport &lt;i&gt;(same link as above)&lt;/i&gt;, he spewed out a whole pageful of anger at British Airways.&lt;br /&gt;&lt;br /&gt;And Rocher is the one who screws people over bigtime. Tkackman and Wilson and Strachan and myself are just the most vocal ones. Many more left Groovy silently. And I haven&amp;#39;t looked at Grails. The technical gurus behind the Spring Framework are next in line to be devoured as &lt;b&gt;Rocher continues his rampage to control a &lt;i&gt;Spring Stack&lt;/i&gt; around Grails&lt;/b&gt;, then cash out, screwing over everyone below him in the pyramid.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;16 March 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="7"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#7"&gt;Groovy Debates&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;Sometimes I have conversations with myself over the future direction of the Groovy Language...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Groovy was birthed in 2003, had its hijack completed by 2007, and has been in a slow terminal decline ever since. Do you really think you&amp;#39;re able to revive it?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve accepted reality. I&amp;#39;m no longer reviving it, I&amp;#39;m now &lt;b&gt;rebuilding it from scratch, spec and all&lt;/b&gt;. Is there any reason I can&amp;#39;t?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Many are saying you&amp;#39;re not just rebuilding Groovy, but actively tearing down the existing one. Should you really be openly attacking Rocher and his decoy Laforge? If you sabotage his income potential, he can easily do the same to you.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Just what can they do they haven&amp;#39;t already been doing for a long time? 5 years ago, I was told a college didn&amp;#39;t renew my teaching contract because an overseas Chinese from Australia rang its president and said bad things about me. 10 years ago, someone put ads about me in newspapers in Taiwan at least twice. 15 years ago, someone from Auckland rang around at least 2 (probably more) IT recruiters in Sydney slagging me off. &lt;b&gt;I&amp;#39;ve only been doing openly for 2 years what they&amp;#39;ve been doing in secret for much longer&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;But isn&amp;#39;t 15 years ago long before Rocher even knew about you?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;It seems he got contacted by busy-bodies from Melbourne around 2006. Instead of telling them he doesn&amp;#39;t do stuff like that, he joined in and &lt;b&gt;eventually became chief instigator in targetting me&lt;/b&gt;. Shouldn&amp;#39;t I be attacking him back?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Why are you picking on Rocher and Laforge only? After all, it sounds like you have a whole handful of people who&amp;#39;ve been slagging you. You should be attacking them too.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;BTW, the real target is &amp;quot;Scar&amp;quot; Rocher only. Laforge is just the middleman he stuck between himself and me. Sociopaths always hide behind others. Anyway, I can&amp;#39;t play any others because &lt;b&gt;there&amp;#39;s only room for two players on a Chinese Chess board&lt;/b&gt;. Don&amp;#39;t you know what Rocher&amp;#39;s done to the Groovy brand?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Rocher tried to rename the Groovy Language. He changed the name of &lt;i&gt;Groovy on Rails&lt;/i&gt; to &lt;i&gt;Grails&lt;/i&gt; in early 2006 to get rid of the &lt;i&gt;Groovy&lt;/i&gt; part of the name, pretending to comply with Heinemeier-Hansson&amp;#39;s request to not use &lt;i&gt;Rails&lt;/i&gt; in the name. In late 2007 he tried to rename the Groovy Language as well but Laforge wouldn&amp;#39;t let him. Why are you so concerned about the Groovy brand?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align:right;float:right;"&gt;Are you kidding? Groovy&amp;#39;s my middle name. Why shouldn&amp;#39;t I be?&lt;/div&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve since discovered &lt;b&gt;Groovy is nothing special, just a clone of Ruby&lt;/b&gt; with Java keywords and syntax instead. Groovy/Ruby appealed when all I knew was Java and VBA, but I&amp;#39;ve since moved up the blub heirarchy. I now know &lt;b&gt;the pinnacle of programming is Clojure, Haskell, and APL&lt;/b&gt;. Clojure has the concurrency and macros, Haskell has the static typing and terse syntax, and APL has the large vocabulary of symbols. What use is Groovy now?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Good point. But you listed not one but three languages at the top of the heirarchy. Haskell and Clojure can both easily be extended to use the APL symbols, and even many more symbols and tokens from Unicode. I&amp;#39;m having troubles, however, understanding &lt;b&gt;how to merge together the best of Clojure and Haskell&lt;/b&gt;. Neither clojure.typed.core nor Template Haskell quite feel right, and rebuilding the Groovy Language is my ongoing attempt to get it right...&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(interrupting)&lt;/i&gt; But you haven&amp;#39;t explained why you want to call it &lt;i&gt;Groovy&lt;/i&gt; when there&amp;#39;s already a programming language with that name.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;The name of what I&amp;#39;m building is the &lt;i&gt;Groovy Language&lt;/i&gt;. &amp;quot;Groovy&amp;quot; is an adjective and the only other well-known language using an adjective is &lt;i&gt;Basic&lt;/i&gt;, the language I&amp;#39;m most eager to avoid following in any way.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Groovy&lt;/i&gt; and &lt;i&gt;Groovy Language&lt;/i&gt; are the same thing. You&amp;#39;re still using the name of an existing language.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;The fake &lt;i&gt;Groovy&lt;/i&gt; at Codehaus is in terminal decline, and is &lt;b&gt;unlikely to even exist in its present name and form very much longer&lt;/b&gt;, so when the real &lt;i&gt;Groovy Language&lt;/i&gt; at Codeplex is finally ready, utilizing every Unicode token, it&amp;#39;ll be the only game in town with that name.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Touche! And that&amp;#39;s why you haven&amp;#39;t wanted the fake Groovy to change its name. &lt;b&gt;In order for developers to really know that the upcoming &lt;i&gt;Groovy Language&lt;/i&gt; is real, there must first be a fake one to compare it with&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align:right;float:right;"&gt;Exactly!&lt;/div&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 February, updated 16 March 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="6"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#6"&gt;Groovy Tweetroll&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;Just discovered I&amp;#39;ve been &lt;a href="http://www.codeplex.com/site/users/view/vorgvangeir"&gt;blogging under the name &amp;quot;Vorg van Geir&amp;quot;&lt;/a&gt;! Funny, I don&amp;#39;t remember writing any of this, but it sounds like me and the picture&amp;#39;s me, so I&amp;#39;ve copied it below. Sometimes when I&amp;#39;m writing blog posts, I&amp;#39;ll be struggling with my words then suddenly an entire paragraph will flash into my mind, usually something ripping into Rocher and Laforge. This is the first time I don&amp;#39;t remember even writing something so recent, though...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;16 Mar 2013&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Corger&amp;#39;s &lt;a href="http://langpop.corger.nl"&gt;monthly comparison of programming languages for Feb 2013&lt;/a&gt; is out - you know the one, showing &lt;i&gt;StackOverflow (tag and synonyms applied count)&lt;/i&gt; and &lt;i&gt;GitHub (lines changed)&lt;/i&gt; on x and y axes with a logarithmic scale, featuring Groovy in the center of the second-tier cluster &lt;i&gt;(though also featuring Cobol nowhere in the top 84 languages used)&lt;/i&gt;. This link is going to be liberally dumped around by handles controlled by someone trying to up the registrations for the upcoming European Gr8te Conference.&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve already exposed how &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog01#7"&gt;Stack Overflow is being gamed by someone&lt;/a&gt; for questions tagged Groovy. So I took a brief moment to check out Github...&lt;br /&gt;&lt;br /&gt;I clicked on the &lt;i&gt;languages&lt;/i&gt; tab from Github&amp;#39;s explore page and saw that &lt;a href="https://github.com/languages/Groovy"&gt;Groovy is the 22nd most popular language&lt;/a&gt;. I found &lt;a href="https://github.com/languages/Clojure"&gt;the 23rd most popular, which is Clojure&lt;/a&gt;, then clicked on the &lt;i&gt;most watched&lt;/i&gt; tab &lt;a href="https://github.com/languages/Groovy/most_watched"&gt;for&lt;/a&gt; e&lt;a href="https://github.com/languages/Clojure/most_watched"&gt;ach&lt;/a&gt;. Each listed the 200 most watched projects, so I&amp;#39;ve listed the info (starred and forked) for the top 10, plus every 20th. The results speak for themselves...&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; No &lt;/th&gt;&lt;th&gt; Gvy name &lt;/th&gt;&lt;th&gt; Gvy starred &lt;/th&gt;&lt;th&gt; Gvy forked &lt;/th&gt;&lt;th&gt; Clj name &lt;/th&gt;&lt;th&gt; Clj starred &lt;/th&gt;&lt;th&gt; Clj forked &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 1 &lt;/td&gt;&lt;td&gt; asgard &lt;/td&gt;&lt;td&gt; 755 &lt;/td&gt;&lt;td&gt; 101 &lt;/td&gt;&lt;td&gt; leiningen &lt;/td&gt;&lt;td&gt; 2175 &lt;/td&gt;&lt;td&gt; 370 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 2 &lt;/td&gt;&lt;td&gt; glu &lt;/td&gt;&lt;td&gt; 362 &lt;/td&gt;&lt;td&gt; 45 &lt;/td&gt;&lt;td&gt; clojurescript &lt;/td&gt;&lt;td&gt; 1812 &lt;/td&gt;&lt;td&gt; 193 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 3 &lt;/td&gt;&lt;td&gt; grails &lt;/td&gt;&lt;td&gt; 340 &lt;/td&gt;&lt;td&gt; 75 &lt;/td&gt;&lt;td&gt; compojure &lt;/td&gt;&lt;td&gt; 1392 &lt;/td&gt;&lt;td&gt; 108 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 4 &lt;/td&gt;&lt;td&gt; gradle-android-plugin &lt;/td&gt;&lt;td&gt; 212 &lt;/td&gt;&lt;td&gt; 59 &lt;/td&gt;&lt;td&gt; clojure-koans &lt;/td&gt;&lt;td&gt; 1035 &lt;/td&gt;&lt;td&gt; 484 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 5 &lt;/td&gt;&lt;td&gt; geb &lt;/td&gt;&lt;td&gt; 204 &lt;/td&gt;&lt;td&gt; 50 &lt;/td&gt;&lt;td&gt; overtone &lt;/td&gt;&lt;td&gt; 884 &lt;/td&gt;&lt;td&gt; 118 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 6 &lt;/td&gt;&lt;td&gt; Ratpack &lt;/td&gt;&lt;td&gt; 199 &lt;/td&gt;&lt;td&gt; 37 &lt;/td&gt;&lt;td&gt; incanter &lt;/td&gt;&lt;td&gt; 866 &lt;/td&gt;&lt;td&gt; 140 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 7 &lt;/td&gt;&lt;td&gt; gaelyk &lt;/td&gt;&lt;td&gt; 189 &lt;/td&gt;&lt;td&gt; 39 &lt;/td&gt;&lt;td&gt; ring &lt;/td&gt;&lt;td&gt; 800 &lt;/td&gt;&lt;td&gt; 150 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 8 &lt;/td&gt;&lt;td&gt; grails-doc &lt;/td&gt;&lt;td&gt; 138 &lt;/td&gt;&lt;td&gt; 118 &lt;/td&gt;&lt;td&gt; noir &lt;/td&gt;&lt;td&gt; 760 &lt;/td&gt;&lt;td&gt; 105 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 9 &lt;/td&gt;&lt;td&gt; twitter-bootstrap-scaffold &lt;/td&gt;&lt;td&gt; 137 &lt;/td&gt;&lt;td&gt; 79 &lt;/td&gt;&lt;td&gt; aleph &lt;/td&gt;&lt;td&gt; 747 &lt;/td&gt;&lt;td&gt; 52 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 10 &lt;/td&gt;&lt;td&gt; groovy-wslite &lt;/td&gt;&lt;td&gt; 119 &lt;/td&gt;&lt;td&gt; 21 &lt;/td&gt;&lt;td&gt; cascalog &lt;/td&gt;&lt;td&gt; 714 &lt;/td&gt;&lt;td&gt; 88 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 20 &lt;/td&gt;&lt;td&gt; maven2gradle &lt;/td&gt;&lt;td&gt; 64 &lt;/td&gt;&lt;td&gt; 19 &lt;/td&gt;&lt;td&gt; Korma &lt;/td&gt;&lt;td&gt; 444 &lt;/td&gt;&lt;td&gt; 79 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 40 &lt;/td&gt;&lt;td&gt; grails-spring-security-ui &lt;/td&gt;&lt;td&gt; 44 &lt;/td&gt;&lt;td&gt; 31 &lt;/td&gt;&lt;td&gt; cheshire &lt;/td&gt;&lt;td&gt; 264 &lt;/td&gt;&lt;td&gt; 18 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 60 &lt;/td&gt;&lt;td&gt; grails-executor &lt;/td&gt;&lt;td&gt; 33 &lt;/td&gt;&lt;td&gt; 6 &lt;/td&gt;&lt;td&gt; pinot &lt;/td&gt;&lt;td&gt; 193 &lt;/td&gt;&lt;td&gt; 11 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 80 &lt;/td&gt;&lt;td&gt; mongodb-grails &lt;/td&gt;&lt;td&gt; 26 &lt;/td&gt;&lt;td&gt; 4 &lt;/td&gt;&lt;td&gt; clutch &lt;/td&gt;&lt;td&gt; 150 &lt;/td&gt;&lt;td&gt; 30 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 100 &lt;/td&gt;&lt;td&gt; zkui &lt;/td&gt;&lt;td&gt; 22 &lt;/td&gt;&lt;td&gt; 9 &lt;/td&gt;&lt;td&gt; lib-noir &lt;/td&gt;&lt;td&gt; 120 &lt;/td&gt;&lt;td&gt; 15 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 120 &lt;/td&gt;&lt;td&gt; grails-oauth &lt;/td&gt;&lt;td&gt; 19 &lt;/td&gt;&lt;td&gt; 14 &lt;/td&gt;&lt;td&gt; lein-droid &lt;/td&gt;&lt;td&gt; 105 &lt;/td&gt;&lt;td&gt; 7 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 140 &lt;/td&gt;&lt;td&gt; spock-grails &lt;/td&gt;&lt;td&gt; 17 &lt;/td&gt;&lt;td&gt; 5 &lt;/td&gt;&lt;td&gt; clojure-tco &lt;/td&gt;&lt;td&gt; 93 &lt;/td&gt;&lt;td&gt; 3 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 160 &lt;/td&gt;&lt;td&gt; grails-remote-control &lt;/td&gt;&lt;td&gt; 15 &lt;/td&gt;&lt;td&gt; 2 &lt;/td&gt;&lt;td&gt; clojurejs &lt;/td&gt;&lt;td&gt; 81 &lt;/td&gt;&lt;td&gt; 10 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 180 &lt;/td&gt;&lt;td&gt; CodeNarc &lt;/td&gt;&lt;td&gt; 13 &lt;/td&gt;&lt;td&gt; 10 &lt;/td&gt;&lt;td&gt; waltz &lt;/td&gt;&lt;td&gt; 74 &lt;/td&gt;&lt;td&gt; 11 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 200 &lt;/td&gt;&lt;td&gt; siloe &lt;/td&gt;&lt;td&gt; 12 &lt;/td&gt;&lt;td&gt; 11 &lt;/td&gt;&lt;td&gt; zookeeper-clj &lt;/td&gt;&lt;td&gt; 69 &lt;/td&gt;&lt;td&gt; 6 &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;This Github data shows Clojure way ahead of Groovy in developer interest and forking, whereas the &lt;i&gt;Github Lines Changed&lt;/i&gt; shows Groovy ahead! How does this happen? The reason&amp;#39;s simple: &lt;b&gt;the &lt;i&gt;Github Lines Changed&lt;/i&gt; data is being used to measure popularity in a poll&lt;/b&gt;. The very act of measuring it changes the data itself because someone exists who&amp;#39;s using the poll data to present Groovy in a certain way.&lt;br /&gt;&lt;br /&gt;After Groovy dropped from #25 to #65 &lt;i&gt;in a single month&lt;/i&gt; (April 2011) on TIOBE when they suddenly changed their measuring metrics, the data from Stack Overflow started being gamed a month later, with many made-up questions starting to appear every day. It seems someone may have started gaming Github at the same time, specifically to target this Corger poll, which gets linked to frequently on Reddit and DZone, especially before a Groovy/Grails conference.&lt;br /&gt;&lt;br /&gt;If want to see it for yourself, though, &lt;b&gt;you&amp;#39;d better be quick&lt;/b&gt;! Now that I&amp;#39;ve published this measurement, there&amp;#39;s someone out there who wants to change it with meaningless updates on Github. It&amp;#39;s amazing what middlemen will do to justify their existence.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 Mar 2013&lt;/i&gt;&lt;br /&gt;Seems the Groovy documentation effort has been cancelled. Champeau let slip that &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/Groovy-Gradle-and-Documentation-tt5713461.html#a5713466"&gt;neither he, Jochen, Guillaume or Paul will have time to work on ... a planned rewrite of GroovyDoc for Groovy 2.2&lt;/a&gt;&amp;quot;.&lt;br /&gt;&lt;br /&gt;In other news... Laforge leaked that &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/Groovy-scripts-as-Spring-Beans-tt5713411.html#a5713412"&gt;down the road, there&amp;#39;s going to be a big Spring + Groovy theme in the next major Spring framework versions&lt;/a&gt;&amp;quot;. Laforge is probably &lt;i&gt;going public&lt;/i&gt; on something the Spring developers have only tentatively agreed to, a cheap negotiation tactic. What&amp;#39;s really happening is Rocher&amp;#39;s building a Grails-Spring stack, to fight the TypeSafe stack created by former SpringSource CEO Rod Johnson, who jumped a sinking ship to become TypeSafe board chair last year. The &amp;quot;big Spring + Groovy theme&amp;quot; Laforge is pestering for &lt;i&gt;(anything beats cutting code or building tests or writing doco)&lt;/i&gt; is a snipe at &lt;a href="http://blog.springsource.org/2012/12/10/introducing-spring-scala"&gt;Arjen Poutsma&amp;#39;s Spring Scala project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Rocher intends being the boss of this planned Grails-Spring stack&lt;/b&gt;. No longer needing the fiction of Groovy being an independent open source project, he&amp;#39;ll then fork both Groovy and GPars, rename it all to SpringLang or something, then bring back some of Theodorou, Champeau, King, Pech, and Winder &lt;i&gt;(he&amp;#39;ll ditch Laforge)&lt;/i&gt; on his own terms, playing them off against each other. This is &lt;b&gt;the true nature of the community that underlies Rocher&amp;#39;s Groovy/Grails ecosystem&lt;/b&gt;. Grails is now a 115Mb download, and Gradle a 50Mb download: their real purpose is to take over the primary distribution channels of existing Java software, then bring in the bucks for those at the top of the pyramid scheme when SpringSource and Gradleware are flipped to the likes of Oracle.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;4 Mar 2013&lt;/i&gt;&lt;br /&gt;I took another look at &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-td5712875.html"&gt;Laforge&amp;#39;s deceitful email announcing Groovy&amp;#39;s &amp;quot;documentation effort and site design&amp;quot; last month&lt;/a&gt;. After the saccharine-sick marketing blurb in the first paragraph, he wrote:&lt;br /&gt;&lt;br /&gt;&amp;quot;... However, one area where &lt;b&gt;the Groovy project can do better is with its documentation&lt;/b&gt;. For instance, if you read the recent DrDobbs editorial, there were some valid points made on this topic. And it&amp;#39;s true that our documentation can be greatly improved. Despite its 1000+ pages of wiki content, it&amp;#39;s hard to find the information you&amp;#39;re looking for, it&amp;#39;s of very uneven quality and style, lots of pages are outdated or show samples with mistakes in them, and there are also holes for features not covered or not explained in details. We&amp;#39;re launching an effort towards &lt;b&gt;overhauling our documentation and web presence&lt;/b&gt;. And I&amp;#39;d love if you could take part in that effort, even if only by telling us about your expectations &lt;b&gt;regarding the website, the documentation, etc.&lt;/b&gt;, or even by helping us authoring content, of course. For the website, we&amp;#39;ll need ...&amp;quot; &lt;i&gt;[bolding as in original]&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Notice the switch? Look at what Laforge bolded:
&lt;ul&gt;&lt;li&gt;first, he accepted Binstock&amp;#39;s criticism of Groovy&amp;#39;s lack of proper documentation&lt;/li&gt;
&lt;li&gt;then, he announced he&amp;#39;s launching an overhaul of Groovy&amp;#39;s documentation &lt;b&gt;and web presence&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;finally, he moved his reference to &lt;b&gt;the website&lt;/b&gt; before &lt;i&gt;&amp;quot;the documentation, etc&amp;quot;&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;
Everything &lt;a href="http://groovy.329449.n5.nabble.com/Website-Doc-Overview-of-the-website-and-documentation-overhaul-td5713361.html"&gt;he&amp;#39;s written since&lt;/a&gt; talks about the website redesign &lt;b&gt;before&lt;/b&gt; the documentation work. Non-technical phoney managers like Laforge are always pushing through their own agendas at the expense of what&amp;#39;s really required.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;1 Mar 2013&lt;/i&gt;&lt;br /&gt;Laforge has just published &lt;a href="http://groovy.329449.n5.nabble.com/Website-Doc-Overview-of-the-website-and-documentation-overhaul-td5713361.html"&gt;a plan of what he wants the Codehaus grbdvy website and documentation&lt;/a&gt; to look like, with fish hooks for unpaid volunteers disguised as &lt;i&gt;requests for feedback&lt;/i&gt;. Yep, the Groovy 3 MOP rewrite and Groovy 4 Antlr upgrade have been cancelled, &lt;b&gt;all the &amp;quot;full-time developers&amp;quot; are being charged out to clients full-time instead&lt;/b&gt;, and the &amp;quot;project manager&amp;quot; has intensified his marketing and recruiting activities &lt;i&gt;(recruiting for unpaid volunteers, that is)&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;With all VMWare funding for developers turned off and no fresh-of-the-boat programmer volunteers on hand, Laforge is &lt;b&gt;hiding his lack of any technical talent behind non-technical &amp;quot;progress&amp;quot;&lt;/b&gt; such as the website redesign, learning mind map software (a project plan with dates and dependencies was too much to master), and deceitful marketing talk, such as this classic: &amp;quot;&lt;i&gt;we&amp;#39;ll be contacting you guys to see who would be interested in participating in case studies to chat about why you are using Groovy, why you chose that technology, in which context, what benefits did you gain, what you would like to see improved, etc.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;18 Feb 2013&lt;/i&gt;&lt;br /&gt;&lt;a href="http://groovy.329449.n5.nabble.com/Groovy-community-website-td5713095.html"&gt;Jochen Theodorou wrote, probably on behalf of Laforge&lt;/a&gt;: &amp;quot;&lt;i&gt;I think there should be a webpage dedicated to make projects &lt;b&gt;using Groovy&lt;/b&gt; known. ... I would also like to include blogs, articles and tutorials, plus a comfortable way to search.&lt;/i&gt;&amp;quot; The first to reply was &lt;a href="http://grooscript.org"&gt;GrooScript creator Jorge Franco Leza&lt;/a&gt;, asking &amp;quot;&lt;i&gt;When I do some release in my little project, what I do? where do I announce that?&lt;/i&gt;&amp;quot;. Because GrooScript &lt;b&gt;&lt;i&gt;implements&lt;/i&gt;&lt;/b&gt; Groovy rather than uses the SpringSource/Codehaus version, would it be allowed on Jochen&amp;#39;s page? What about when &lt;b&gt;&lt;i&gt;my own reboot of Groovy atop Clojure&lt;/i&gt;&lt;/b&gt;, currently at v 0.5, is ready for beta testing? In fact, &lt;a href="http://groovy.io"&gt;someone just happens to be prototyping such a new Groovy website now&lt;/a&gt; - what a coincidence!?! Just who controls what projects and tutorials get added to the site?&lt;br /&gt;&lt;br /&gt;All the latest sudden activity expanding Groovy&amp;#39;s web presence happens around now &lt;b&gt;&lt;i&gt;every&lt;/i&gt;&lt;/b&gt; year. The European Gr8te conference is coming in May, and Laforge needs to get Groovy back into the search engines, back onto the rankings like the Tiobe Top 50, so claims about Groovy&amp;#39;s popularity sound more plausible when selling seats. And Laforge wants the linked websites to generate revenue for Codehaus and SpringSource. The &lt;a href="http://www.google.com/search?num=100&amp;amp;hl=en&amp;amp;tbo=d&amp;amp;site=&amp;amp;source=hp&amp;amp;q=groovy+programming&amp;amp;btnK=Google+Search"&gt;top 3 links in Google for &amp;quot;groovy programming&amp;quot;&lt;/a&gt; include a comprehensive 5-yr old tutorial I wrote on Groovy 1.5 for non-Java programmers. Because each page packs in a lot of info, that&amp;#39;s less Google Ads revenue for Codehaus. Laforge intends &lt;b&gt;&lt;i&gt;spoiling that link under cover of his documentation rewrite&lt;/i&gt;&lt;/b&gt;, to nudge up content-sparse pages &lt;b&gt;he controls&lt;/b&gt;, like groovy.io.&lt;br /&gt;&lt;br /&gt;Instead of rehashing his old line about Groovy making programming fun on ad-heavy webpages, or showing off endless pictures of abacuses and looms in powerpoints on DSL&amp;#39;s, Laforge should be writing &lt;b&gt;&lt;i&gt;actual content to help developers be productive&lt;/i&gt;&lt;/b&gt;. If he really wanted Groovy to be fun, he&amp;#39;d be shouting the &lt;b&gt;groovy growl&lt;/b&gt;, the &lt;b&gt;ooooooo&lt;/b&gt;, and the &lt;b&gt;veeeeey&lt;/b&gt;! But to Laforge, Groovy is just an opportunity to extract revenue from corporates giving their developers a Copenhagen beer junket, and to promote his own name to IT shops in case SpringSource&amp;#39;s new owner retrenches everyone who can&amp;#39;t pass a basic programming aptitude test.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;17 Feb 2013&lt;/i&gt;&lt;br /&gt;Word&amp;#39;s out the business line VMWare wants to exit is SpringSource with Cloud Foundry stripped out. Seems Rocher&amp;#39;s been telling Oracle and JBoss if they buy SpringSource, he can cripple the static compilation mode in Groovy and nudge developers towards Java or Ceylon. So &lt;b&gt;if you use the new CompileStatic mode in Groovy, not only is it buggy but it might not even be supported soon&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;16 Feb 2013&lt;/i&gt;&lt;br /&gt;Groovy 2.1, although officially released, is still in unofficial beta testing for inclusion in Grails 2.3, to be released in May 2013 for the SpringSource European Gr8te conference, &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03#15"&gt;just as Groovy 2.0&amp;#39;s official release was just an extended beta test for Grails 2.2&lt;/a&gt;. Groovy was long ago hijacked by Rocher to snare programmers into Grails conference seats. Expect to see Groovy 2.2 renamed to version 3.0 &amp;quot;to sync the version number with Grails 3&amp;quot;. But really it&amp;#39;s all about further delaying the MOP rewrite from Groovy 3 to 4 without &lt;a href="http://groovy.329449.n5.nabble.com/Release-Grumpy-Mode-td4978117.html"&gt;the outcry when it was delayed from Groovy 2 to 3&lt;/a&gt;. Rocher&amp;#39;s more interested in pocketing the money from flogging Grails conferences and consulting than investing in a proper MOP or grammar in Groovy so it can be more than a has-been language. And Laforge does whatever Rocher tells him to - the price of a single-track speaking slot in the conferences. No-one would listen to Laforge speak if Rocher was speaking at the same time in the other room.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;15 Feb 2013&lt;/i&gt;&lt;br /&gt;Looks like &lt;a href="http://groovy.329449.n5.nabble.com/Heads-up-on-upcoming-releases-td5713054.html"&gt;Rocher&amp;#39;s just cancelled the Groovy MOP rewrite, through his paid proxy Laforge talking about an unscheduled v 2.2 release&lt;/a&gt;, as &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog04#4"&gt;predicted by my other half&lt;/a&gt;. The rewrite was just an empty promise to string along developer Jochen Theodorou all these years. Rocher&amp;#39;s management of Groovy/Grails is all about investing as little as possible to squeeze out as much as possible. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;13 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="5"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#5"&gt;Groovy Buzzwords&lt;/a&gt;&lt;/h1&gt;
Laforge reacted to Binstock&amp;#39;s analysis by &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-td5712875.html"&gt;announcing a &amp;quot;documention effort and site redesign&amp;quot;&lt;/a&gt;: &amp;quot;&lt;i&gt;Groovy is a very mature and widely used language on the Java platform, with hundred thousands of developers worldwide. It&amp;#39;s stable and fast, flexible and readable, has got plenty of interesting use cases (DSLs, testing...), is feature-packed, and it&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few). However, one area where the Groovy project can do better is with its documentation.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s look at the truth behind all this verbiage...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Documentation effort and site redesign&lt;/b&gt;&lt;/i&gt;: Laforge is redesigning the website, perceiving Groovy&amp;#39;s problem as an image problem, but hiding it behind a &amp;quot;documentation effort&amp;quot;. The website was redesigned a mere 15 months ago. Before then the documention contents were &lt;i&gt;one click away&lt;/i&gt;, but were split into four separate pages, each two clicks away, much less convenient for Groovy users but it meant more GoogleAds revenue for Codehaus and more users needing consultancy services from SpringSource. Laforge is just pretending to care about documentation.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is a very mature language on the Java platform&lt;/b&gt;&lt;/i&gt;: Groovy is declining, at the end of its life. When GPars was released at version 1.0 after being bundled in Groovy for years, it was also announcing its own end-of-life. SpringSource and Codehaus are now milking Groovy for all they can get.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is widely used, with hundreds thousands of developers worldwide&lt;/b&gt;&lt;/i&gt;: All claims, no proof. Whenever challenged, Laforge says his clients don&amp;#39;t want to be named. More likely he doesn&amp;#39;t want them poached by someone who hasn&amp;#39;t signed his contracts.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is fast&lt;/b&gt;&lt;/i&gt;: Dynamically compiled Groovy is slo.oo.ooo.oooo.ooooo.oooo.ooo.oo.ow, as Binstock was careful to point out.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is stable&lt;/b&gt;&lt;/i&gt;: Statically compiled Groovy is bug-ug-ugg-uggy. Only last week, &lt;a href="http://stackoverflow.com/questions/14774709/groovy-2-1-0-weird-behaviour-of-switch-case-break-statement-with-compilestatic"&gt;a serious static compilation bug in Groovy 2.1.0 was reported&lt;/a&gt;. Although officially released in June 2012, Groovy 2.0 really wasn&amp;#39;t released for production use until it was bundled as part of Grails 2.2 in Dec 2012. The 6 months from June to December was unofficially &lt;b&gt;just more beta-testing with a larger base of users&lt;/b&gt;, namely those who download standalone releases of Groovy. Grails, however, doesn&amp;#39;t use any of the static compilation features in Groovy 2.0. All the testing of Groovy 2.0 was just to &lt;b&gt;make sure the inclusion of static compilation in Groovy didn&amp;#39;t break any of its dynamic compilation use in Grails&lt;/b&gt;. On the day after the Grails 2.2 release came the first beta of Groovy 2.1, which has since been officially released standalone, but hasn&amp;#39;t yet shipped with Grails. Once again, Groovy&amp;#39;s timeline is determined solely by the needs of Grails.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is flexible&lt;/b&gt;&lt;/i&gt;: Laforge is just spewing buzzwords here. To me, flexible means unhindered by syntax contraints. Clojure allows easy code reorganization and macro-level syntactic manipulation, far more flexible than Groovy.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is readable&lt;/b&gt;&lt;/i&gt;: Some people find the indention used by Python and Haskell most readable, while others find the balanced brackets used by C, Java, Javascript, Scala, Groovy, and PHP more readable. &lt;b&gt;Groovy 0.5 here at Codeplex is a proof-of-concept prototype showing how Groovy-style syntax can easily be built atop Clojure&lt;/b&gt;, which, unlike Groovy, also runs atop the .NET and Javascript platforms. Why be constrained by Groovy&amp;#39;s Antlr 2.7 based grammar when we can write our own atop Clojure?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=622834" alt="ChineseCheckers.png" title="ChineseCheckers.png" /&gt; &lt;i&gt;&lt;b&gt;Groovy has got plenty of interesting use cases (DSLs, testing)&lt;/b&gt;:&lt;/i&gt; DSL is just another buzzword. Dropping semicolons, commas, and parentheses from a syntax doesn&amp;#39;t a DSL make. IDE&amp;#39;s put them in automatically without needing to type them anyway. Virtually every language has testing frameworks.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is feature-packed&lt;/b&gt;&lt;/i&gt;: More &amp;quot;features&amp;quot; means more need for consultants and conferences. Some old features such as interceptors no longer work properly. Many new features, such as static compilation and invoke dynamic, are not production ready. In both Groovy 2.0 and 2.1, the code using invoke-dynamic is bundled in a separate jar-file which only runs on Java 7. Grails and Gradle don&amp;#39;t bundle this other invoke-dynamic jar file, and don&amp;#39;t intend to for Grails 2.3 and Groovy 2.1. The Groovy roadmap claims a new MOP will be written atop this invoke-dynamic jarfile, and ship as the sole jar in Groovy 3, but every time in the past when Theodorou&amp;#39;s started on the MOP, he&amp;#39;s been redeployed. I don&amp;#39;t believe Rocher intends to pay for it. Even if it was done, how long would it take? Other statically-typed JVM languages like Scala, Kotlin, and Ceylon are coming quickly. Scala is rising, Kotlin has IntelliJ as a delivery channel, and Ceylon has JBoss backing it.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few)&lt;/b&gt;:&lt;/i&gt; Only 2 of these have any traction in industry, and even Gradle&amp;#39;s uptake is iffy. If there were any other successful projects, Laforge would&amp;#39;ve mentioned them.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;One area where the Groovy project can do better is with its documentation&lt;/b&gt;&lt;/i&gt;: What Laforge should have said was &amp;quot;&lt;i&gt;Because I can&amp;#39;t code, I should&amp;#39;ve made myself useful by writing documentation instead. I never did, and accept responsibility for Groovy&amp;#39;s failure in this area.&lt;/i&gt;&amp;quot; But Laforge is even incapable of writing correct documentation, as shown by &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog02#7"&gt;his buggy Mars Rover attempt&lt;/a&gt;, let alone accepting responsibility for it. Laforge is second only to Rocher for causing Groovy&amp;#39;s terminal decline.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="4"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#4"&gt;Groovy Confusion&lt;/a&gt;&lt;/h1&gt;
Once again, mixed messages are coming out regarding the Codehaus version of the Groovy Language.&lt;br /&gt;&lt;br /&gt;On 26 June 2012, Tech Lead Jochen Theodorou &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-tt5710334.html"&gt;announced he was beginning work on Groovy 3&lt;/a&gt;, kicking off a discussion thread with 90 replies. I asked if &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-td5710334.html#a5710338"&gt;Groovy 3 will contain a new MOP&lt;/a&gt;, to which Guillaume Laforge replied with the passive voice &amp;quot;The MOP needs to be rewritten&amp;quot;. But the MOP rewrite wasn&amp;#39;t begun.&lt;br /&gt;&lt;br /&gt;On 11 January Jochen announced &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-tt5712419.html"&gt;I will now start the implementation of the new MOP&lt;/a&gt;&amp;quot;. Graeme Rocher said he &lt;b&gt;wanted binary compatibility and ability to run old compiled Groovy code&lt;/b&gt;. Suspecting Rocher was setting up the cancellation of the MOP rewrite, I asked if &lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-td5712419.html#a5712427"&gt;VMWare&amp;#39;s not willing to pay for Jochen to rewrite the MOP if it doesn&amp;#39;t do exactly what the current one does?&lt;/a&gt; Rocher got defensive with the impersonal &amp;quot;the new MOP needs writing&amp;quot;.&lt;br /&gt;&lt;br /&gt;A week ago, VMWare told the US SEC they intended retrenching 900 workers and exiting some business lines. They didn&amp;#39;t say if they would trim up SpringSource before they sell it to JBoss, or if they would sell it to Oracle as a white elephant ripe for trimming.&lt;br /&gt;&lt;br /&gt;Two days ago, Laforge &lt;a href="http://www.infoq.com/news/2013/02/Groovy2_1_Release#.UREiSUHeTs0.dzone"&gt;dug into his posting quota on InfoQ to announce Groovy 2.1&amp;#39;s release&lt;/a&gt; a week late &lt;i&gt;(perhaps he was too busy being re-interviewed for his own job, and traded in a real developer like Champeau to save his own skin)&lt;/i&gt;. Even though Laforge didn&amp;#39;t do any technical work on Groovy 2.1, he kept on refering to &amp;quot;we&amp;quot;, putting people off by not acknowledging any of the actual programmers such as Jochen or Fred Janon in the InfoQ article or the linked-to release notes. Laforge also put people off with meaningless marketing talk, such as &lt;i&gt;&amp;quot;Groovy 2.1’s distribution bundles the recently released GPars 1.0&amp;quot;&lt;/i&gt;. Groovy has bundled the latest version of GPars for years. When GPars changed its version number to 1.0, both Groovy 2.0.x and 2.1 upgraded to it like they always had.&lt;br /&gt;&lt;br /&gt;Yesterday, Dr Dobbs editor Andrew Binstock wrote &lt;a href="http://www.drdobbs.com/jvm/the-groovy-conundrum/240147731"&gt;some pessimistic views on Codehaus Groovy&amp;#39;s future&lt;/a&gt;. He was diplomatic, though, e.g. &lt;i&gt;&amp;quot;Keying off ideas prototyped by Alex Tkachman, the Groovy team added static typing&amp;quot;&lt;/i&gt;. That&amp;#39;s putting it nicely. Unfortunately, he also neglected to mention Theodorou&amp;#39;s name anywhere, the technical guru who did most of the work, even though he managed to mention project manager Laforge. I suspect Laforge sent him some Q&amp;amp;A copy regarding Groovy 2.1, but Dr Dobbs isn&amp;#39;t InfoQ. Binstock instead published an analysis. His conclusion...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;quot;[Groovy is] a language primed to be a major player. There is the conundrum. The endless variety of features requires considerable documentation, which is simply not available, especially for the advanced features that give Groovy much of its benefit. And so, if you jump in today, you&amp;#39;ll find the language is easy to learn, but hard to master. Fortunately, this limitation is not incurable. However, time is of the essence as Groovy&amp;#39;s principal competitor for the hearts and minds of Java developers — Scala — has a small, laser-focused company behind it, which revs the product frequently and generates considerable documentation. If Groovy acts soon, it can retain leadership among Java alternatives. If not, it will have to resign itself to being an also-ran.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Binstock misses the point of Grails and Groovy&amp;#39;s business model. A lack of usable documentation means developers must pay for SpringSource consultants and seats at conferences, where lots of money is made and divvied up. By throwing in endless features, they increase the complexity of Groovy and the need for consultants from the supply side, just as the lack of documentation creates the need for conferences from the demand side. The Groovy &amp;quot;Bible&amp;quot; didn&amp;#39;t bring in much profit for its authors so why should they bother with a 2nd edn? Grails and Groovy is about making money &lt;i&gt;now&lt;/i&gt; for those involved, not investing it. Even the &lt;b&gt;&amp;quot;groovymag&amp;quot; charges money for an online subscription, while the &amp;quot;Week with Scala&amp;quot; is free!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If someone seriously creates independent doco for Groovy, the next version of Groovy changes slightly to lessen the value of the doco and increase the need for a consultant or conference. They keep a tight gateway over their test suites. I&amp;#39;ve experienced this first-hand. When I was writing free online doco for Groovy 5 yrs ago, &lt;b&gt;sociopath Rocher just couldn&amp;#39;t relate as an equal partner to me in a bazaar&lt;/b&gt;. He just had to prod people into targeting me, eventually destroying my desire to make Groovy simple to use, so he could keep as much of the take as possible at the top reaches of the cathedral.&lt;br /&gt;&lt;br /&gt;Binstock does &lt;b&gt;correctly conclude Groovy will soon be an also-ran&lt;/b&gt; because of that business strategy. Rod Johnson, former CEO of Grails company SpringSource, is now leading the board of that laser-focused Scala company. He no doubt understands the value of &amp;quot;taking a cut of a huge pie&amp;quot; instead of &amp;quot;owning all of a tiny pie&amp;quot;, and is investing in growing Scala instead of strangling it. The project managers behind Groovy, Rocher and Laforge, are probably incapable of changing their ingrained habits to steer Groovy in a new direction. They will, however, take something else away from Binstock&amp;#39;s analysis: that Groovy needs a new name for version 3. Yes, they&amp;#39;ll see a brand perception problem, rather than a widely recognized lack-of-documentation problem, and they&amp;#39;ll get busy creating a new imagery for Groovy, instead of making it easy for people to master.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="3"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#3"&gt;Roadmap&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;I&amp;#39;m moving the roadmap from its own page to this blog entry...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The Groovy Language here at Codeplex will be built with Unicode graphemes, unlike most programming languages (e.g. the fake Groovy at Codehaus) which are built solely with Ascii tokens, with bare Unicode codepoints added in as an afterthought. The rough roadmap for evolving Groovy, beginning with lower numbered items, is...&lt;br /&gt;
&lt;h3&gt;1. Groovy Grammar&lt;/h3&gt;Build a recursive-descent parsing library that can look at the internal structure of CJK tokens, and &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20Grammar%20for%20Programming&amp;referringTitle=Blog04"&gt;define the Groovy grammar&lt;/a&gt;. The grammar atop Clojure will enable developers to extend the Groovy syntax easily using parser-level macros. &lt;a href="http://groovy.codeplex.com/releases/view/91000"&gt;The latest version&lt;/a&gt; can parse a healthy subset of the Groovy grammar.&lt;br /&gt;
&lt;h3&gt;2. GUI with IME&lt;/h3&gt;Create a GUI with a input method editor (IME) to enable all Unicode tokens to be entered easily, and a J-style interactive learning environment for the Groovy Language syntax. Use &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20for%20Java%20Newbies&amp;referringTitle=Blog04"&gt;these 3-yr-old notes for learning Groovy 1.5&lt;/a&gt; as a base for writing a comprehensive test suite.&lt;br /&gt;
&lt;h3&gt;3. Unicode Properties&lt;/h3&gt;We&amp;#39;ll use &lt;a href="http://groovy.codeplex.com/wikipage?title=Unicode%20Inheritance&amp;referringTitle=Blog04"&gt;inheritance hierarchies&lt;/a&gt; to represent all the Unicode characters, one for the codepoints based on the general category and certain relevant boolean properties, the other for various decompositions. We&amp;#39;ve yet to analyze the information inside the Unihan variant data.&lt;br /&gt;
&lt;h3&gt;4. CJK Decomposition Data&lt;/h3&gt;The CJK Decomposition Data File is a graphical analysis of the approx 75,000 Chinese/Japanese characters in Unicode. They utilize approx 11,000 intermediate decompositions which are not themselves in Unicode. See &lt;a href="http://cjkdecomp.codeplex.com"&gt;the main project site&lt;/a&gt; for more details. The latest version, 0.4.0, was released on 15 August 2012. See also some notes on &lt;a href="http://groovy.codeplex.com/wikipage?title=Reflection%20and%20repetitions%20in%20the%20CJK%20decomposition%20data&amp;referringTitle=Blog04"&gt;using reflection in the CJK decompositions&lt;/a&gt;. We&amp;#39;ll use these decomps to design the IME keys for entering CJK tokens into the Groovy GUI.&lt;br /&gt;
&lt;h3&gt;5. Peer-to-Peer Engine&lt;/h3&gt;Enable the most common operator symbols and foreign-language names to be shared automatically between Groovy IME&amp;#39;s using a peer-to-peer protocol so developers will know the most commonly used names and symbols when writing code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;6 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="2"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#2"&gt;Unicode Pattern Syntax Tokens&lt;/a&gt;&lt;/h1&gt;
Each of the million-plus Unicode characters has about 50 properties associated with it. Most of them can change between different versions of Unicode or for defining private-use characters, except for six of them:
&lt;ul&gt;&lt;li&gt;Name (na)&lt;/li&gt;
&lt;li&gt;Jamo Short Name (jsn)&lt;/li&gt;
&lt;li&gt;Canonical Combining Class (ccc)&lt;/li&gt;
&lt;li&gt;Decomposition Mapping (dm)&lt;/li&gt;
&lt;li&gt;Pattern Syntax (PatSyn)&lt;/li&gt;
&lt;li&gt;Pattern White Space (PatWS)&lt;/li&gt;&lt;/ul&gt;
The first four will change from their default to a lifelong value for newly assigned characters, though. The other two, Pattern Syntax and Pattern White Space properties, both boolean values, will never change even when the character is being newly assigned. Only 11 characters have the PatWS property so they&amp;#39;re not as interesting as those with the PatSyn property, 2760 of them, 296 of which are still unassigned in Unicode 6.1.&lt;br /&gt;&lt;br /&gt;The unassigned characters are given the PatSyn property by defining all characters in certain blocks (rather than characters) as having the PatSyn property:
&lt;ul&gt;&lt;li&gt;2190..21FF; Arrows&lt;/li&gt;
&lt;li&gt;2200..22FF; Mathematical Operators&lt;/li&gt;
&lt;li&gt;2300..23FF; Miscellaneous Technical&lt;/li&gt;
&lt;li&gt;2400..243F; Control Pictures&lt;/li&gt;
&lt;li&gt;2440..245F; Optical Character Recognition&lt;/li&gt;
&lt;li&gt;2500..257F; Box Drawing&lt;/li&gt;
&lt;li&gt;2580..259F; Block Elements&lt;/li&gt;
&lt;li&gt;25A0..25FF; Geometric Shapes&lt;/li&gt;
&lt;li&gt;2600..26FF; Miscellaneous Symbols&lt;/li&gt;
&lt;li&gt;2700..27BF; Dingbats&lt;/li&gt;
&lt;li&gt;27C0..27EF; Miscellaneous Mathematical Symbols-A&lt;/li&gt;
&lt;li&gt;27F0..27FF; Supplemental Arrows-A&lt;/li&gt;
&lt;li&gt;2800..28FF; Braille Patterns&lt;/li&gt;
&lt;li&gt;2900..297F; Supplemental Arrows-B&lt;/li&gt;
&lt;li&gt;2980..29FF; Miscellaneous Mathematical Symbols-B&lt;/li&gt;
&lt;li&gt;2A00..2AFF; Supplemental Mathematical Operators&lt;/li&gt;
&lt;li&gt;2B00..2BFF; Miscellaneous Symbols and Arrows&lt;/li&gt;
&lt;li&gt;2E00..2E7F; Supplemental Punctuation&lt;/li&gt;&lt;/ul&gt;
From these, 30 exceptions (0x2776..0x2793) are subtracted, and 150 are added. The added exceptions include the ASCII symbol and punctuation characters often used for syntax in programming languages.&lt;br /&gt;&lt;br /&gt;According to Unicode standard annex 31: &lt;i&gt;&amp;quot;With a fixed set of whitespace and syntax code points, a pattern language can then have a policy requiring all possible syntax characters (even ones currently unused) to be quoted if they are literals. Using &lt;b&gt;this policy preserves the freedom to extend the syntax in the future by using those characters&lt;/b&gt;. Past patterns on future systems will always work; future patterns on past systems will signal an error instead of silently producing the wrong results.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There are, of course, many other symbol and punctuation characters in Unicode that aren&amp;#39;t Pattern Syntax characters, and more can be added that can&amp;#39;t become Pattern Syntax characters (unless they&amp;#39;re encoded in one of the remaining 296 unassigned Pattern Syntax slots). The only language I know of that utilizes Unicode&amp;#39;s pattern syntax invariance is XML 1.0, 5th edn. Perhaps the Groovy Language reboot will be the first Turing-complete language to do so.&lt;br /&gt;&lt;br /&gt;47 of the 2464 assigned Pattern Syntax are canonically equivalent to other forms, so can be ignored. 45 of those decompositions are to some other Pattern Syntax character followed by nonspacing mark 0x338( ̸ ), e.g. ≠ is = then mark ̸ . The other two, 0x2329 and 0x232A, are singleton decompositions to 0x3008(〈) and 0x3009(〉), both also Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Within the assigned pattern characters, perhaps the second most important distinction are the bidi-mirroring glyphs, those with the &lt;i&gt;bmg&lt;/i&gt; property, each of which must be swapped for its complement when used within a right-to-left rendering context, such as within Arabic and Hebrew text. There are 144 pairs of them, such as ( and ), or [ and ]. Because such pairs are used extensively in programming languages, with balancing often required to make language syntax more readable, they are an important subset of the Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Perhaps another important subset of the Pattern Syntax are the 161 bidi-mirrored characters, those with the &lt;i&gt;bidim&lt;/i&gt; property, unmatched characters which must be mirrored when rendering, e.g. ∁ ∂ ∃ ∑ . A further subset could be characters that would be bidi-mirrored but aren&amp;#39;t because they&amp;#39;re already symmetrical, e.g. ∀ ∩ ∪ . They&amp;#39;re not indicated by any specific property, but must be guessed at based on their physical proximity to related bidi-mirrored characters in the Unicode database, e.g. ∃ is bidi-mirrored so ∀ must be symmetrical. Perhaps a specific property in a future version of Unicode would be nice.&lt;br /&gt;&lt;br /&gt;There&amp;#39;s many other Pattern Syntax characters that aren&amp;#39;t symmetrical but also aren&amp;#39;t mirroring or mirrored in a right-to-left rendering context because they&amp;#39;re considered to be &lt;i&gt;pictorial&lt;/i&gt; or &lt;i&gt;ornate&lt;/i&gt; characters, including those for box-drawing and all the arrows, such as 0x2190(←) and 0x2192(→). Unlike the Pattern Syntax property, the bidi properties of a character can change in future versions of Unicode, but for now we can&amp;#39;t use ← in programming and expect it to be rendered as → when we change the naming language to Arabic or the thematic ordering of the referents. So languages that use arrows in their syntax, such as Scala, aren&amp;#39;t future-proofed. Perhaps a future version of Unicode would add more mirroring pairs.&lt;br /&gt;&lt;br /&gt;In designing the Groovy reboot, we &lt;i&gt;do&lt;/i&gt; have 305 bidi-mirroring or -mirrored symbols to choose from, so not being able to use the arrows isn&amp;#39;t a big deal. We just need to be aware of our choices, and not make syntactic mistakes, as did the first bootup of Groovy when its project managers committed to treating every Unicode token above 0xFF as an identifier character :-(&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot will utilize the full power of Unicode in both its syntax &lt;b&gt;and&lt;/b&gt; its vocabulary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;5 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#1"&gt;Groovy Japanese&lt;/a&gt;&lt;/h1&gt;
Something strange happened the other day! It&amp;#39;s difficult to explain so I better set the scene...&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve been learning Chinese for the last 10 years, between programming and teaching, so not too quickly, and my Chinese reading is better than my speaking or listening. I&amp;#39;ve noticed learning to read new Chinese characters &lt;i&gt;is different to&lt;/i&gt; reading words in other languages in that we must use both the &lt;b&gt;visual and auditory parts of the brain at the same time&lt;/b&gt;. E.g. to read 妈, we look at 女 visually and at 马 phonetically: 女 means &amp;quot;woman&amp;quot; and 马 sounds like &amp;quot;ma&amp;quot;, so when we see the word 妈, &lt;b&gt;both the visual and auditory parts of our brain together create the meaning&lt;/b&gt; &amp;quot;mother&amp;quot;. Of course, when we&amp;#39;ve learnt the word our longterm memory kicks in instead, but there&amp;#39;s always many more characters of the 3000-4000 commonly used ones we don&amp;#39;t know.&lt;br /&gt;&lt;br /&gt;A few months ago, I tried my hand at learning to read Japanese. Because I already know most of the Kanji, they being similar in meaning to the over 2000 Chinese characters I&amp;#39;ve learnt, I figured I&amp;#39;d have a head start learning to read Japanese if I weren&amp;#39;t concerned about speaking it. So I &lt;b&gt;decided to learn it visually, seeing if I can read it and understand the meaning, but without vocalizing it&lt;/b&gt; in my head. When looking through &lt;a href="http://www.guidetojapanese.org/learn/grammar"&gt;Tae Kim&amp;#39;s online tutorial&lt;/a&gt;, I&amp;#39;d noticed most of the 46 Hiragana usually have only one grammatical or functional meaning, e.g. ます for polite register.&lt;br /&gt;&lt;br /&gt;So I started practising reading Kanji/Hiragana text from some practise books. &lt;i&gt;(Language-learning books on Japanese are second in popularity to those on English in bookshops across China. They are useful to me because I can read the explanations in Chinese!)&lt;/i&gt; But one day recently something strange happened...&lt;br /&gt;&lt;br /&gt;I was looking at some Japanese text I could easily read but then I &lt;b&gt;had to cover my left eye&lt;/b&gt; because it started itching. &lt;b&gt;Suddenly I couldn&amp;#39;t understand any of the text I was looking at&lt;/b&gt;, except for some Kanji which I already knew the Chinese pronunciation for. But then I &lt;b&gt;tried covering my right eye, and suddenly I could understand the Japanese meaning easily&lt;/b&gt; again!&lt;br /&gt;&lt;br /&gt;It seems by learning to read basic Japanese so I can understand the meaning but not pronounce the words, only one side of my brain is utilized, the same side that processes vision from my left eye.&lt;br /&gt;&lt;br /&gt;This discovery also explains something else. When I&amp;#39;m programming, I usually play English-language TV shows in the background, and can follow the stories just by listening to them, only glancing at the TV screen once or twice a minute. I can code up programs that work &lt;b&gt;and&lt;/b&gt; remember the storyline of the TV shows &lt;b&gt;when I do both at the same time!&lt;/b&gt; If I do either activity by itself I get bored easily, but when I do both simultaneouly I can easily work for hours at a time. Also... these are the &lt;b&gt;only two mental activities I&amp;#39;m able to do simultaneously&lt;/b&gt;, without either activity being impacted.&lt;br /&gt;&lt;br /&gt;So I&amp;#39;ve made a picture &lt;i&gt;(using the image from Wikipedia)&lt;/i&gt; of what it seems each side of my brain does:&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=617153" alt="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" title="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" /&gt;&lt;br /&gt;Of course, all this has implications for &lt;a href="http://groovy.codeplex.com/wikipage?title=Kanji%20meets%20Programming&amp;referringTitle=Blog04"&gt;using Kanji in programming&lt;/a&gt; to make code terser. Because &lt;b&gt;the same half of the brain that reads Kanji visually also writes programming code&lt;/b&gt;, they should gel together easily, &lt;b&gt;and&lt;/b&gt; still leave the other half of the brain free for some interpersonal activity. In theory, we could write terse programs using Kanji &lt;i&gt;as well as&lt;/i&gt; use interpersonal skills to relate to clients and colleagues, and stuff like that!&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot here at Codeplex aims to bring &lt;b&gt;all&lt;/b&gt; Unicode characters to the vocabulary of programs, not just the 96 ASCII (or 70 APL) ones. When the fake Groovy dies in the grave of Grales, the real Groovy will rise, bringing &lt;b&gt;all Unicode tokens&lt;/b&gt; for the programming half of our brains to use when we code.&lt;br /&gt;
&lt;h2&gt;See &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03&amp;referringTitle=Blog04"&gt;previous blog entries&lt;/a&gt;.&lt;/h2&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Sat, 30 Mar 2013 09:49:37 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Blog04 20130330094937A</guid></item><item><title>Updated Wiki: Blog04</title><link>http://groovy.codeplex.com/wikipage?title=Blog04&amp;version=14</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;u&gt;Gavin Groovy Grover&amp;#39;s UNICODE Blo&lt;/u&gt;g&lt;/h1&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=577534" alt="Grrrroooooveeey.jpg" title="Grrrroooooveeey.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;1 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="11"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#11"&gt;Dr Grover and Mr Vorg&lt;/a&gt;&lt;/h1&gt;
I&amp;#39;ve finally accepted a reality I&amp;#39;ve suspected for many years now, but never really faced up to: &lt;b&gt;there&amp;#39;s another consciousness in my brain&lt;/b&gt;, and not a very nice one at that! Perhaps I never faced up to it before because I didn&amp;#39;t understand how it could happen, but now I have a fair idea of how he got there...&lt;br /&gt;&lt;br /&gt;When young, I bought into the doctrine that spending all my time on math and computers was bad for me, and I needed balance in life. So in the 1980&amp;#39;s I worked on mainframes, but didn&amp;#39;t touch computers outside of work, instead exercising and &amp;quot;socializing&amp;quot;. When the 1990-2 recession hit, aspies like Mr Monk and me were the first out of a job, and I&amp;#39;d never touched a PC. So I retrained, got back into work, and tried to keep up technically. Anticipating the post-Y2K layoffs, I left my job to retrain in Java on my own dime, even becoming a &lt;i&gt;Sun-certified Java 1.1 Developer&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;But I&amp;#39;d been fooled by the &amp;quot;shortage of talent&amp;quot; lie permeating Silly Valley: businesses didn&amp;#39;t want Java programmers, they wanted to string along C++ programmers with promises of Java training, and only immigrants needing green cards and the naive under 30 need apply. So I went back to mainframes for a while, learnt about business in my spare time, but when my last job dumped too much standby work on me, I packed it in to teach English in China, a total change.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=648735" alt="check.jpg" title="check.jpg" /&gt; 10 years later, I haven&amp;#39;t been bothered to leave. I slowly learnt through trial and error how to teach college students, plus learnt to speak some Chinese, both &amp;quot;right-brain&amp;quot; skills. After swotting up on English linguistics and pedagogy in my first year, I went back to learning about programming, a &amp;quot;left-brain&amp;quot; skill. When I realized Chinese characters were the future of programming, I started work on decomposing them visually so Westerners could understand and use them too. I spent hours a day listening to TV shows in the background while looking at the computer, and discovered I could do both activities simultaneously. I could code programs to help decompose Chinese characters &lt;b&gt;and&lt;/b&gt; remember the storyline of the TV shows. I could do both for hours, but either activity alone quickly bored me.&lt;br /&gt;&lt;br /&gt;I joined in online forums as &lt;i&gt;&amp;quot;vorg&amp;quot;&lt;/i&gt;, the first 4 letters reversed of my surname. Somewhere along the way, the &lt;b&gt;part of my brain listening to the TV shows became self-aware&lt;/b&gt; and took over that login. He even completed the login to &lt;i&gt;&amp;quot;Vorg van Geir&amp;quot;&lt;/i&gt;, a total anagram of &lt;i&gt;&amp;quot;Gavin Grover&amp;quot;&lt;/i&gt;, just like &lt;i&gt;Doctor Who&lt;/i&gt; and &lt;i&gt;Torchwood&lt;/i&gt;. Whereas I, Grover, was patient in dealing with the sarcasm from Rocher&amp;#39;s handles, &lt;b&gt;Vorg just reacted openly with avenging bile&lt;/b&gt;. When Laforge played his petty politics with Gr&amp;#164;&amp;#164;vy, &lt;b&gt;Vorg exposed his fraud and incompetence&lt;/b&gt;. Vorg&amp;#39;s a very different beast to me: he&amp;#39;s a complainer!&lt;br /&gt;&lt;br /&gt;I don&amp;#39;t think it&amp;#39;s good for Vorg to exist in me. What he&amp;#39;s saying is true, but perhaps he shouldn&amp;#39;t be saying it so directly. I &lt;i&gt;do&lt;/i&gt; believe, though, in mediTation, not mediCation, to get rid of Vorg. He&amp;#39;s most active when I let my meditation exercises lapse. Whenever I resume them after an absence, sometimes all of Vorg&amp;#39;s memories will suddenly flash into my mind, where previously all I remembered was a blackout. If I practise them every day, it keeps Vorg at bay!&lt;br /&gt;&lt;br /&gt;While &lt;i&gt;Vorg van Geir&lt;/i&gt; exists, my name can only be &lt;i&gt;Gavin Grover&lt;/i&gt; for there&amp;#39;s no place to put the &lt;i&gt;GrΦΦvy&lt;/i&gt; in Vorg&amp;#39;s name, that confused anagram of mine. But when he&amp;#39;s gone, and my name is no longer jumbled, the &lt;i&gt;GrΘΘvy&lt;/i&gt; can slot right in between my first two names: &lt;i&gt;Gavin &amp;quot;Grϕϕvy&amp;quot; Grover&lt;/i&gt;. Then I&amp;#39;ll have a gr&amp;#210;&amp;#211;vy serenity, as I rebuild the &lt;i&gt;Grōōvy Language&lt;/i&gt; from first principles, spec and all. So my ongoing mission now is to &lt;b&gt;kill Vorg&lt;/b&gt;, to put that complainer to death, to claim that grƟƟvy serenity as I rebuild &lt;i&gt;Grŏŏvy&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;30 March 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="10"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#10"&gt;CRIMEAn Computing with Groovy&lt;/a&gt;&lt;/h1&gt;
A little over 20 years ago, I took my first real trip abroad to the magical land of India for 3 months. The first part was on an overlander truck from Chennai to Mumbai, then I launched out on my own taking in Delhi and Calcutta and many places in between. The many written languages of India fascinated me. Virtually every sign was written in 4 scripts: Latin (for English), Devanagari (for Hindi), Arabic script, and whatever the local script for the state was. In Unicode, 9 primary scripts are represented for the Indian languages: Devanagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telegu, Kannada, and Malayalam. Some are used to write more than one Indian state language.&lt;br /&gt;&lt;br /&gt;10 years ago, I moved here to China to teach English. Again, I was enchanted by the Chinese script, leading me to spend years analyzing the structure of the 85,000 Unihan (and Hangul) characters in Unicode. This has led me to look at the other 25,000 characters in Unicode, a far more complex task despite their much smaller number, and I&amp;#39;m still at it. The 95 ASCII keyboard characters familiar to English-speakers are just a very small number of them. The traditional view of IT has Silicon Valley at the center of an area reaching westward to roughly Japan and Australia, and eastward to roughly Germany and Israel. But even when we consider the less familiar Japanese kana, Greek alphabet, and Hebrew abjad, we still have a very small number of those 25,000 other Unicode characters.&lt;br /&gt;&lt;br /&gt;To really understand them, we must understand the world outside the traditional IT area. I have a mission to fully understand them, and eventually introduce them to the world through the &lt;i&gt;Groovy Language&lt;/i&gt; reboot: a mission I call Crimean Computing (CRIMEA = &lt;b&gt;C&lt;/b&gt;hina, &lt;b&gt;R&lt;/b&gt;ussia, &lt;b&gt;I&lt;/b&gt;ndia, &lt;b&gt;M&lt;/b&gt;iddle &lt;b&gt;E&lt;/b&gt;ast, and &lt;b&gt;A&lt;/b&gt;frica). By using &lt;i&gt;all&lt;/i&gt; Unicode tokens in programming languages, the rest of the world will program in their own scripts. Just as the Crimea in the Ukraine is far from Northern California, so also CRIMEAn computing is far from ASCII-based computing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;27 March 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="9"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#9"&gt;Groovy Haskell&lt;/a&gt;&lt;/h1&gt;
It&amp;#39;s taken decades to work out what many academics already know and teach, but maybe I had to work it out for myself: &lt;b&gt;statically-typed lazily-evaluated functional languages are at the pinnacle of the programming language heirarchy&lt;/b&gt;. Haskell is &lt;i&gt;higher-level&lt;/i&gt; than Clojure. It makes sense to add static typing to Clojure, but not macros to Haskell. I&amp;#39;m only part way into learning Haskell properly, but I suspect lazily-evaluated code can do everything macros can do.&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot is about adding all Unicode tokens to the vocabulary of programming, as well as modifying the language syntax where it makes sense with the expanded vocab. My last attempt was using Clojure. I tried rewriting the grammar of Groovy 0.5 in the Kern combinator parser library for Clojure last month. I investigated which of Clojure&amp;#39;s 4 monad libraries to use, as well as analyzed core.logic. I&amp;#39;ve looked at clojure.typed and decided the Groovy reboot must enable static typing from its very foundation.&lt;br /&gt;&lt;br /&gt;But clojure.typed stumbles in two cases: functions accepting or returning nil i.e. &lt;span class="codeInline"&gt;(U nil ...)&lt;/span&gt;, and functions accepting variadic arguments i.e. &lt;span class="codeInline"&gt;[... *]&lt;/span&gt;. The nil is a billion dollar mistake and has no place in any language, especially when monads are available. Variadic functions are a smell: they represent two concepts needlessly complected together: what a function does, and a fold when there&amp;#39;s extra arguments. Such fold syntax can be represented separately from the function easily enough, e.g. &lt;span class="codeInline"&gt;+/ 1 2 3&lt;/span&gt; in APL.&lt;br /&gt;&lt;br /&gt;So just as Ruby supercedes C++ by making everything an object, Haskell supercedes Lisp by making everything a macro. &lt;b&gt;Macros are the pointers of functional programming&lt;/b&gt;. I&amp;#39;m therefore switching to Haskell as the Groovy Language reboot&amp;#39;s implementation language. &lt;i&gt;(Unless I&amp;#39;m wrong about macros, then I&amp;#39;ll be back to Clojure!)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="8"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#8"&gt;Attacks against Groovy&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;Looks like &lt;a href="http://groovy.codeplex.com/wikipage?title=http%3a%2f%2fwww.codeplex.com%2fsite%2fusers%2fview%2fvorgvangeir&amp;referringTitle=Blog04"&gt;Vorg van Geir&amp;#39;s&lt;/a&gt; been active again so thought I&amp;#39;d add a pic this time...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=648734" alt="attacks&amp;#32;on&amp;#32;Groovy.jpg" title="attacks&amp;#32;on&amp;#32;Groovy.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;26 March 2013&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There&amp;#39;s 3 distinct but interconnected power structures involved in Graeme Rocher&amp;#39;s primary line of attack against me over the past 7 years...&lt;br /&gt;&lt;br /&gt;First, &lt;b&gt;his control over Grails&lt;/b&gt;. Grails is now owned &lt;i&gt;(via contributors contracts)&lt;/i&gt; by SpringSource, itself owned by VMWare, which is in turn majority owned by EMC. Because Grails is the primary app Groovy is used for, he also controls Groovy, and all other apps Groovy is used for. He uses the legal &lt;i&gt;(e.g. VertX thuggery)&lt;/i&gt;, marketing &lt;i&gt;(e.g. SpringG2X conferences)&lt;/i&gt;, public relations &lt;i&gt;(e.g. The Theorists)&lt;/i&gt;, and financial &lt;i&gt;(e.g. Laforge&amp;#39;s employment)&lt;/i&gt; resources of EMC/VMWare to protect his control. He exercises soft control over Grails programmers worldwide to influence their behavior &lt;i&gt;(e.g. &amp;quot;people from Grover&amp;#39;s home country should be doing something about him or else Grails gigs might dry up&amp;quot;)&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Second, &lt;b&gt;the property market Down Under&lt;/b&gt;. A primary means of profit for most people in Melbourne and New Zealand is investment in residential property. To make the market go up, they vote for the governments that welcome in the international students who rent the apartments and the immigrants who buy the houses. The flow-on effect creates jobs in education and tourism too. When one of their own might jeopardize the gravy train, they keep an eye on him, even bending laws if necessary. The many Grails programmers Down Under can influence the behaviour of those with connections to China.&lt;br /&gt;&lt;br /&gt;Third, &lt;b&gt;Chinese desire to go overseas&lt;/b&gt;. Mainland Chinese are playing both sides of the coin, attempting to rise in the heirarchies of their home country &lt;i&gt;and&lt;/i&gt; seeking to emigrate or send their families to America and Australia for much the same reason Europeans and others went. It&amp;#39;s therefore easy for many in English-speaking countries to social engineer situations in China, presenting themselves as having some sort of &lt;i&gt;authority in society&lt;/i&gt; to imitate the heirarchical nature of Chinese society. Most moves against me in China have as their origin such social engineering, which ultimately source back to Rocher.&lt;br /&gt;&lt;br /&gt;Of course, Rocher utilizes other lines of attack &lt;i&gt;(e.g. online monitoring)&lt;/i&gt;, and never letting his right-hand man know what his left-hand man is doing. But his con flogging a lookalike soundalike of Rails is doomed: the real Groovy language is coming! Developers will know it&amp;#39;s real by comparing it to Rocher&amp;#39;s fake one.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 March 2013&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve been poking around online looking back at the time of Rocher&amp;#39;s hijack of the Groovy Language. Unlike nowadays, &lt;a href="http://graemerocher.blogspot.com/2007_06_01_archive.html"&gt;he didn&amp;#39;t make much effort to hide his true nature&lt;/a&gt;. He begins one post: &amp;quot;&lt;i&gt;Well it looks like Alex Blewitt has taken the time to &lt;b&gt;excrete some more complete and utter rubbish&lt;/b&gt; all over the blog-o-sphere. Clearly, Alex &lt;b&gt;got screwed over big time&lt;/b&gt; by the Geronimo guys and is feeling rather, well, left out and hence has chosen to &lt;b&gt;vent his anger&lt;/b&gt; on the projects that James Strachan has participated in.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;Whereas Alex wrote &lt;a href="http://alblue.bandlem.com/2007/06/java-is-scala-new-groovy.html"&gt;a fairly technical discussion about Groovy and Scala&lt;/a&gt;, Rocher responded with a personal attack, &lt;b&gt;projecting his own motives for doing things onto someone else&lt;/b&gt;. For Rocher is the one who excretes rubbish on the net, such as that blog entry under his own name, and hundreds since under pseudonyms now he&amp;#39;s cleaned up his public image.&lt;br /&gt;&lt;br /&gt;Rocher is the one who vents his anger. When Groovy&amp;#39;s creator was delayed at an airport, he headed into a netbar to get ideas for a JVM-based scripting language, and Groovy was the result. When Groovy&amp;#39;s hijacker was delayed at an airport &lt;i&gt;(same link as above)&lt;/i&gt;, he spewed out a whole pageful of anger at British Airways.&lt;br /&gt;&lt;br /&gt;And Rocher is the one who screws people over bigtime. Tkackman and Wilson and Strachan and myself are just the most vocal ones. Many more left Groovy silently. And I haven&amp;#39;t looked at Grails. The technical gurus behind the Spring Framework are next in line to be devoured as &lt;b&gt;Rocher continues his rampage to control a &lt;i&gt;Spring Stack&lt;/i&gt; around Grails&lt;/b&gt;, then cash out, screwing over everyone below him in the pyramid.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;16 March 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="7"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#7"&gt;Groovy Debates&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;Sometimes I have conversations with myself over the future direction of the Groovy Language...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Groovy was birthed in 2003, had its hijack completed by 2007, and has been in a slow terminal decline ever since. Do you really think you&amp;#39;re able to revive it?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve accepted reality. I&amp;#39;m no longer reviving it, I&amp;#39;m now &lt;b&gt;rebuilding it from scratch, spec and all&lt;/b&gt;. Is there any reason I can&amp;#39;t?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Many are saying you&amp;#39;re not just rebuilding Groovy, but actively tearing down the existing one. Should you really be openly attacking Rocher and his decoy Laforge? If you sabotage his income potential, he can easily do the same to you.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Just what can they do they haven&amp;#39;t already been doing for a long time? 5 years ago, I was told a college didn&amp;#39;t renew my teaching contract because an overseas Chinese from Australia rang its president and said bad things about me. 10 years ago, someone put ads about me in newspapers in Taiwan at least twice. 15 years ago, someone from Auckland rang around at least 2 (probably more) IT recruiters in Sydney slagging me off. &lt;b&gt;I&amp;#39;ve only been doing openly for 2 years what they&amp;#39;ve been doing in secret for much longer&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;But isn&amp;#39;t 15 years ago long before Rocher even knew about you?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;It seems he got contacted by busy-bodies from Melbourne around 2006. Instead of telling them he doesn&amp;#39;t do stuff like that, he joined in and &lt;b&gt;eventually became chief instigator in targetting me&lt;/b&gt;. Shouldn&amp;#39;t I be attacking him back?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Why are you picking on Rocher and Laforge only? After all, it sounds like you have a whole handful of people who&amp;#39;ve been slagging you. You should be attacking them too.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;BTW, the real target is &amp;quot;Scar&amp;quot; Rocher only. Laforge is just the middleman he stuck between himself and me. Sociopaths always hide behind others. Anyway, I can&amp;#39;t play any others because &lt;b&gt;there&amp;#39;s only room for two players on a Chinese Chess board&lt;/b&gt;. Don&amp;#39;t you know what Rocher&amp;#39;s done to the Groovy brand?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Rocher tried to rename the Groovy Language. He changed the name of &lt;i&gt;Groovy on Rails&lt;/i&gt; to &lt;i&gt;Grails&lt;/i&gt; in early 2006 to get rid of the &lt;i&gt;Groovy&lt;/i&gt; part of the name, pretending to comply with Heinemeier-Hansson&amp;#39;s request to not use &lt;i&gt;Rails&lt;/i&gt; in the name. In late 2007 he tried to rename the Groovy Language as well but Laforge wouldn&amp;#39;t let him. Why are you so concerned about the Groovy brand?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align:right;float:right;"&gt;Are you kidding? Groovy&amp;#39;s my middle name. Why shouldn&amp;#39;t I be?&lt;/div&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve since discovered &lt;b&gt;Groovy is nothing special, just a clone of Ruby&lt;/b&gt; with Java keywords and syntax instead. Groovy/Ruby appealed when all I knew was Java and VBA, but I&amp;#39;ve since moved up the blub heirarchy. I now know &lt;b&gt;the pinnacle of programming is Clojure, Haskell, and APL&lt;/b&gt;. Clojure has the concurrency and macros, Haskell has the static typing and terse syntax, and APL has the large vocabulary of symbols. What use is Groovy now?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Good point. But you listed not one but three languages at the top of the heirarchy. Haskell and Clojure can both easily be extended to use the APL symbols, and even many more symbols and tokens from Unicode. I&amp;#39;m having troubles, however, understanding &lt;b&gt;how to merge together the best of Clojure and Haskell&lt;/b&gt;. Neither clojure.typed.core nor Template Haskell quite feel right, and rebuilding the Groovy Language is my ongoing attempt to get it right...&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(interrupting)&lt;/i&gt; But you haven&amp;#39;t explained why you want to call it &lt;i&gt;Groovy&lt;/i&gt; when there&amp;#39;s already a programming language with that name.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;The name of what I&amp;#39;m building is the &lt;i&gt;Groovy Language&lt;/i&gt;. &amp;quot;Groovy&amp;quot; is an adjective and the only other well-known language using an adjective is &lt;i&gt;Basic&lt;/i&gt;, the language I&amp;#39;m most eager to avoid following in any way.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Groovy&lt;/i&gt; and &lt;i&gt;Groovy Language&lt;/i&gt; are the same thing. You&amp;#39;re still using the name of an existing language.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;The fake &lt;i&gt;Groovy&lt;/i&gt; at Codehaus is in terminal decline, and is &lt;b&gt;unlikely to even exist in its present name and form very much longer&lt;/b&gt;, so when the real &lt;i&gt;Groovy Language&lt;/i&gt; at Codeplex is finally ready, utilizing every Unicode token, it&amp;#39;ll be the only game in town with that name.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Touche! And that&amp;#39;s why you haven&amp;#39;t wanted the fake Groovy to change its name. &lt;b&gt;In order for developers to really know that the upcoming &lt;i&gt;Groovy Language&lt;/i&gt; is real, there must first be a fake one to compare it with&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align:right;float:right;"&gt;Exactly!&lt;/div&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 February, updated 16 March 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="6"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#6"&gt;Groovy Tweetroll&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;Just discovered I&amp;#39;ve been &lt;a href="http://www.codeplex.com/site/users/view/vorgvangeir"&gt;blogging under the name &amp;quot;Vorg van Geir&amp;quot;&lt;/a&gt;! Funny, I don&amp;#39;t remember writing any of this, but it sounds like me and the picture&amp;#39;s me, so I&amp;#39;ve copied it below. Sometimes when I&amp;#39;m writing blog posts, I&amp;#39;ll be struggling with my words then suddenly an entire paragraph will flash into my mind, usually something ripping into Rocher and Laforge. This is the first time I don&amp;#39;t remember even writing something so recent, though...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;16 Mar 2013&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Corger&amp;#39;s &lt;a href="http://langpop.corger.nl"&gt;monthly comparison of programming languages for Feb 2013&lt;/a&gt; is out - you know the one, showing &lt;i&gt;StackOverflow (tag and synonyms applied count)&lt;/i&gt; and &lt;i&gt;GitHub (lines changed)&lt;/i&gt; on x and y axes with a logarithmic scale, featuring Groovy in the center of the second-tier cluster &lt;i&gt;(though also featuring Cobol nowhere in the top 84 languages used)&lt;/i&gt;. This link is going to be liberally dumped around by handles controlled by someone trying to up the registrations for the upcoming European Gr8te Conference.&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve already exposed how &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog01#7"&gt;Stack Overflow is being gamed by someone&lt;/a&gt; for questions tagged Groovy. So I took a brief moment to check out Github...&lt;br /&gt;&lt;br /&gt;I clicked on the &lt;i&gt;languages&lt;/i&gt; tab from Github&amp;#39;s explore page and saw that &lt;a href="https://github.com/languages/Groovy"&gt;Groovy is the 22nd most popular language&lt;/a&gt;. I found &lt;a href="https://github.com/languages/Clojure"&gt;the 23rd most popular, which is Clojure&lt;/a&gt;, then clicked on the &lt;i&gt;most watched&lt;/i&gt; tab &lt;a href="https://github.com/languages/Groovy/most_watched"&gt;for&lt;/a&gt; e&lt;a href="https://github.com/languages/Clojure/most_watched"&gt;ach&lt;/a&gt;. Each listed the 200 most watched projects, so I&amp;#39;ve listed the info (starred and forked) for the top 10, plus every 20th. The results speak for themselves...&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; No &lt;/th&gt;&lt;th&gt; Gvy name &lt;/th&gt;&lt;th&gt; Gvy starred &lt;/th&gt;&lt;th&gt; Gvy forked &lt;/th&gt;&lt;th&gt; Clj name &lt;/th&gt;&lt;th&gt; Clj starred &lt;/th&gt;&lt;th&gt; Clj forked &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 1 &lt;/td&gt;&lt;td&gt; asgard &lt;/td&gt;&lt;td&gt; 755 &lt;/td&gt;&lt;td&gt; 101 &lt;/td&gt;&lt;td&gt; leiningen &lt;/td&gt;&lt;td&gt; 2175 &lt;/td&gt;&lt;td&gt; 370 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 2 &lt;/td&gt;&lt;td&gt; glu &lt;/td&gt;&lt;td&gt; 362 &lt;/td&gt;&lt;td&gt; 45 &lt;/td&gt;&lt;td&gt; clojurescript &lt;/td&gt;&lt;td&gt; 1812 &lt;/td&gt;&lt;td&gt; 193 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 3 &lt;/td&gt;&lt;td&gt; grails &lt;/td&gt;&lt;td&gt; 340 &lt;/td&gt;&lt;td&gt; 75 &lt;/td&gt;&lt;td&gt; compojure &lt;/td&gt;&lt;td&gt; 1392 &lt;/td&gt;&lt;td&gt; 108 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 4 &lt;/td&gt;&lt;td&gt; gradle-android-plugin &lt;/td&gt;&lt;td&gt; 212 &lt;/td&gt;&lt;td&gt; 59 &lt;/td&gt;&lt;td&gt; clojure-koans &lt;/td&gt;&lt;td&gt; 1035 &lt;/td&gt;&lt;td&gt; 484 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 5 &lt;/td&gt;&lt;td&gt; geb &lt;/td&gt;&lt;td&gt; 204 &lt;/td&gt;&lt;td&gt; 50 &lt;/td&gt;&lt;td&gt; overtone &lt;/td&gt;&lt;td&gt; 884 &lt;/td&gt;&lt;td&gt; 118 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 6 &lt;/td&gt;&lt;td&gt; Ratpack &lt;/td&gt;&lt;td&gt; 199 &lt;/td&gt;&lt;td&gt; 37 &lt;/td&gt;&lt;td&gt; incanter &lt;/td&gt;&lt;td&gt; 866 &lt;/td&gt;&lt;td&gt; 140 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 7 &lt;/td&gt;&lt;td&gt; gaelyk &lt;/td&gt;&lt;td&gt; 189 &lt;/td&gt;&lt;td&gt; 39 &lt;/td&gt;&lt;td&gt; ring &lt;/td&gt;&lt;td&gt; 800 &lt;/td&gt;&lt;td&gt; 150 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 8 &lt;/td&gt;&lt;td&gt; grails-doc &lt;/td&gt;&lt;td&gt; 138 &lt;/td&gt;&lt;td&gt; 118 &lt;/td&gt;&lt;td&gt; noir &lt;/td&gt;&lt;td&gt; 760 &lt;/td&gt;&lt;td&gt; 105 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 9 &lt;/td&gt;&lt;td&gt; twitter-bootstrap-scaffold &lt;/td&gt;&lt;td&gt; 137 &lt;/td&gt;&lt;td&gt; 79 &lt;/td&gt;&lt;td&gt; aleph &lt;/td&gt;&lt;td&gt; 747 &lt;/td&gt;&lt;td&gt; 52 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 10 &lt;/td&gt;&lt;td&gt; groovy-wslite &lt;/td&gt;&lt;td&gt; 119 &lt;/td&gt;&lt;td&gt; 21 &lt;/td&gt;&lt;td&gt; cascalog &lt;/td&gt;&lt;td&gt; 714 &lt;/td&gt;&lt;td&gt; 88 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 20 &lt;/td&gt;&lt;td&gt; maven2gradle &lt;/td&gt;&lt;td&gt; 64 &lt;/td&gt;&lt;td&gt; 19 &lt;/td&gt;&lt;td&gt; Korma &lt;/td&gt;&lt;td&gt; 444 &lt;/td&gt;&lt;td&gt; 79 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 40 &lt;/td&gt;&lt;td&gt; grails-spring-security-ui &lt;/td&gt;&lt;td&gt; 44 &lt;/td&gt;&lt;td&gt; 31 &lt;/td&gt;&lt;td&gt; cheshire &lt;/td&gt;&lt;td&gt; 264 &lt;/td&gt;&lt;td&gt; 18 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 60 &lt;/td&gt;&lt;td&gt; grails-executor &lt;/td&gt;&lt;td&gt; 33 &lt;/td&gt;&lt;td&gt; 6 &lt;/td&gt;&lt;td&gt; pinot &lt;/td&gt;&lt;td&gt; 193 &lt;/td&gt;&lt;td&gt; 11 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 80 &lt;/td&gt;&lt;td&gt; mongodb-grails &lt;/td&gt;&lt;td&gt; 26 &lt;/td&gt;&lt;td&gt; 4 &lt;/td&gt;&lt;td&gt; clutch &lt;/td&gt;&lt;td&gt; 150 &lt;/td&gt;&lt;td&gt; 30 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 100 &lt;/td&gt;&lt;td&gt; zkui &lt;/td&gt;&lt;td&gt; 22 &lt;/td&gt;&lt;td&gt; 9 &lt;/td&gt;&lt;td&gt; lib-noir &lt;/td&gt;&lt;td&gt; 120 &lt;/td&gt;&lt;td&gt; 15 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 120 &lt;/td&gt;&lt;td&gt; grails-oauth &lt;/td&gt;&lt;td&gt; 19 &lt;/td&gt;&lt;td&gt; 14 &lt;/td&gt;&lt;td&gt; lein-droid &lt;/td&gt;&lt;td&gt; 105 &lt;/td&gt;&lt;td&gt; 7 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 140 &lt;/td&gt;&lt;td&gt; spock-grails &lt;/td&gt;&lt;td&gt; 17 &lt;/td&gt;&lt;td&gt; 5 &lt;/td&gt;&lt;td&gt; clojure-tco &lt;/td&gt;&lt;td&gt; 93 &lt;/td&gt;&lt;td&gt; 3 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 160 &lt;/td&gt;&lt;td&gt; grails-remote-control &lt;/td&gt;&lt;td&gt; 15 &lt;/td&gt;&lt;td&gt; 2 &lt;/td&gt;&lt;td&gt; clojurejs &lt;/td&gt;&lt;td&gt; 81 &lt;/td&gt;&lt;td&gt; 10 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 180 &lt;/td&gt;&lt;td&gt; CodeNarc &lt;/td&gt;&lt;td&gt; 13 &lt;/td&gt;&lt;td&gt; 10 &lt;/td&gt;&lt;td&gt; waltz &lt;/td&gt;&lt;td&gt; 74 &lt;/td&gt;&lt;td&gt; 11 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 200 &lt;/td&gt;&lt;td&gt; siloe &lt;/td&gt;&lt;td&gt; 12 &lt;/td&gt;&lt;td&gt; 11 &lt;/td&gt;&lt;td&gt; zookeeper-clj &lt;/td&gt;&lt;td&gt; 69 &lt;/td&gt;&lt;td&gt; 6 &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;This Github data shows Clojure way ahead of Groovy in developer interest and forking, whereas the &lt;i&gt;Github Lines Changed&lt;/i&gt; shows Groovy ahead! How does this happen? The reason&amp;#39;s simple: &lt;b&gt;the &lt;i&gt;Github Lines Changed&lt;/i&gt; data is being used to measure popularity in a poll&lt;/b&gt;. The very act of measuring it changes the data itself because someone exists who&amp;#39;s using the poll data to present Groovy in a certain way.&lt;br /&gt;&lt;br /&gt;After Groovy dropped from #25 to #65 &lt;i&gt;in a single month&lt;/i&gt; (April 2011) on TIOBE when they suddenly changed their measuring metrics, the data from Stack Overflow started being gamed a month later, with many made-up questions starting to appear every day. It seems someone may have started gaming Github at the same time, specifically to target this Corger poll, which gets linked to frequently on Reddit and DZone, especially before a Groovy/Grails conference.&lt;br /&gt;&lt;br /&gt;If want to see it for yourself, though, &lt;b&gt;you&amp;#39;d better be quick&lt;/b&gt;! Now that I&amp;#39;ve published this measurement, there&amp;#39;s someone out there who wants to change it with meaningless updates on Github. It&amp;#39;s amazing what middlemen will do to justify their existence.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 Mar 2013&lt;/i&gt;&lt;br /&gt;Seems the Groovy documentation effort has been cancelled. Champeau let slip that &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/Groovy-Gradle-and-Documentation-tt5713461.html#a5713466"&gt;neither he, Jochen, Guillaume or Paul will have time to work on ... a planned rewrite of GroovyDoc for Groovy 2.2&lt;/a&gt;&amp;quot;.&lt;br /&gt;&lt;br /&gt;In other news... Laforge leaked that &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/Groovy-scripts-as-Spring-Beans-tt5713411.html#a5713412"&gt;down the road, there&amp;#39;s going to be a big Spring + Groovy theme in the next major Spring framework versions&lt;/a&gt;&amp;quot;. Laforge is probably &lt;i&gt;going public&lt;/i&gt; on something the Spring developers have only tentatively agreed to, a cheap negotiation tactic. What&amp;#39;s really happening is Rocher&amp;#39;s building a Grails-Spring stack, to fight the TypeSafe stack created by former SpringSource CEO Rod Johnson, who jumped a sinking ship to become TypeSafe board chair last year. The &amp;quot;big Spring + Groovy theme&amp;quot; Laforge is pestering for &lt;i&gt;(anything beats cutting code or building tests or writing doco)&lt;/i&gt; is a snipe at &lt;a href="http://blog.springsource.org/2012/12/10/introducing-spring-scala"&gt;Arjen Poutsma&amp;#39;s Spring Scala project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Rocher intends being the boss of this planned Grails-Spring stack&lt;/b&gt;. No longer needing the fiction of Groovy being an independent open source project, he&amp;#39;ll then fork both Groovy and GPars, rename it all to SpringLang or something, then bring back some of Theodorou, Champeau, King, Pech, and Winder &lt;i&gt;(he&amp;#39;ll ditch Laforge)&lt;/i&gt; on his own terms, playing them off against each other. This is &lt;b&gt;the true nature of the community that underlies Rocher&amp;#39;s Groovy/Grails ecosystem&lt;/b&gt;. Grails is now a 115Mb download, and Gradle a 50Mb download: their real purpose is to take over the primary distribution channels of existing Java software, then bring in the bucks for those at the top of the pyramid scheme when SpringSource and Gradleware are flipped to the likes of Oracle.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;4 Mar 2013&lt;/i&gt;&lt;br /&gt;I took another look at &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-td5712875.html"&gt;Laforge&amp;#39;s deceitful email announcing Groovy&amp;#39;s &amp;quot;documentation effort and site design&amp;quot; last month&lt;/a&gt;. After the saccharine-sick marketing blurb in the first paragraph, he wrote:&lt;br /&gt;&lt;br /&gt;&amp;quot;... However, one area where &lt;b&gt;the Groovy project can do better is with its documentation&lt;/b&gt;. For instance, if you read the recent DrDobbs editorial, there were some valid points made on this topic. And it&amp;#39;s true that our documentation can be greatly improved. Despite its 1000+ pages of wiki content, it&amp;#39;s hard to find the information you&amp;#39;re looking for, it&amp;#39;s of very uneven quality and style, lots of pages are outdated or show samples with mistakes in them, and there are also holes for features not covered or not explained in details. We&amp;#39;re launching an effort towards &lt;b&gt;overhauling our documentation and web presence&lt;/b&gt;. And I&amp;#39;d love if you could take part in that effort, even if only by telling us about your expectations &lt;b&gt;regarding the website, the documentation, etc.&lt;/b&gt;, or even by helping us authoring content, of course. For the website, we&amp;#39;ll need ...&amp;quot; &lt;i&gt;[bolding as in original]&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Notice the switch? Look at what Laforge bolded:
&lt;ul&gt;&lt;li&gt;first, he accepted Binstock&amp;#39;s criticism of Groovy&amp;#39;s lack of proper documentation&lt;/li&gt;
&lt;li&gt;then, he announced he&amp;#39;s launching an overhaul of Groovy&amp;#39;s documentation &lt;b&gt;and web presence&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;finally, he moved his reference to &lt;b&gt;the website&lt;/b&gt; before &lt;i&gt;&amp;quot;the documentation, etc&amp;quot;&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;
Everything &lt;a href="http://groovy.329449.n5.nabble.com/Website-Doc-Overview-of-the-website-and-documentation-overhaul-td5713361.html"&gt;he&amp;#39;s written since&lt;/a&gt; talks about the website redesign &lt;b&gt;before&lt;/b&gt; the documentation work. Non-technical phoney managers like Laforge are always pushing through their own agendas at the expense of what&amp;#39;s really required.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;1 Mar 2013&lt;/i&gt;&lt;br /&gt;Laforge has just published &lt;a href="http://groovy.329449.n5.nabble.com/Website-Doc-Overview-of-the-website-and-documentation-overhaul-td5713361.html"&gt;a plan of what he wants the Codehaus grbdvy website and documentation&lt;/a&gt; to look like, with fish hooks for unpaid volunteers disguised as &lt;i&gt;requests for feedback&lt;/i&gt;. Yep, the Groovy 3 MOP rewrite and Groovy 4 Antlr upgrade have been cancelled, &lt;b&gt;all the &amp;quot;full-time developers&amp;quot; are being charged out to clients full-time instead&lt;/b&gt;, and the &amp;quot;project manager&amp;quot; has intensified his marketing and recruiting activities &lt;i&gt;(recruiting for unpaid volunteers, that is)&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;With all VMWare funding for developers turned off and no fresh-of-the-boat programmer volunteers on hand, Laforge is &lt;b&gt;hiding his lack of any technical talent behind non-technical &amp;quot;progress&amp;quot;&lt;/b&gt; such as the website redesign, learning mind map software (a project plan with dates and dependencies was too much to master), and deceitful marketing talk, such as this classic: &amp;quot;&lt;i&gt;we&amp;#39;ll be contacting you guys to see who would be interested in participating in case studies to chat about why you are using Groovy, why you chose that technology, in which context, what benefits did you gain, what you would like to see improved, etc.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;18 Feb 2013&lt;/i&gt;&lt;br /&gt;&lt;a href="http://groovy.329449.n5.nabble.com/Groovy-community-website-td5713095.html"&gt;Jochen Theodorou wrote, probably on behalf of Laforge&lt;/a&gt;: &amp;quot;&lt;i&gt;I think there should be a webpage dedicated to make projects &lt;b&gt;using Groovy&lt;/b&gt; known. ... I would also like to include blogs, articles and tutorials, plus a comfortable way to search.&lt;/i&gt;&amp;quot; The first to reply was &lt;a href="http://grooscript.org"&gt;GrooScript creator Jorge Franco Leza&lt;/a&gt;, asking &amp;quot;&lt;i&gt;When I do some release in my little project, what I do? where do I announce that?&lt;/i&gt;&amp;quot;. Because GrooScript &lt;b&gt;&lt;i&gt;implements&lt;/i&gt;&lt;/b&gt; Groovy rather than uses the SpringSource/Codehaus version, would it be allowed on Jochen&amp;#39;s page? What about when &lt;b&gt;&lt;i&gt;my own reboot of Groovy atop Clojure&lt;/i&gt;&lt;/b&gt;, currently at v 0.5, is ready for beta testing? In fact, &lt;a href="http://groovy.io"&gt;someone just happens to be prototyping such a new Groovy website now&lt;/a&gt; - what a coincidence!?! Just who controls what projects and tutorials get added to the site?&lt;br /&gt;&lt;br /&gt;All the latest sudden activity expanding Groovy&amp;#39;s web presence happens around now &lt;b&gt;&lt;i&gt;every&lt;/i&gt;&lt;/b&gt; year. The European Gr8te conference is coming in May, and Laforge needs to get Groovy back into the search engines, back onto the rankings like the Tiobe Top 50, so claims about Groovy&amp;#39;s popularity sound more plausible when selling seats. And Laforge wants the linked websites to generate revenue for Codehaus and SpringSource. The &lt;a href="http://www.google.com/search?num=100&amp;amp;hl=en&amp;amp;tbo=d&amp;amp;site=&amp;amp;source=hp&amp;amp;q=groovy+programming&amp;amp;btnK=Google+Search"&gt;top 3 links in Google for &amp;quot;groovy programming&amp;quot;&lt;/a&gt; include a comprehensive 5-yr old tutorial I wrote on Groovy 1.5 for non-Java programmers. Because each page packs in a lot of info, that&amp;#39;s less Google Ads revenue for Codehaus. Laforge intends &lt;b&gt;&lt;i&gt;spoiling that link under cover of his documentation rewrite&lt;/i&gt;&lt;/b&gt;, to nudge up content-sparse pages &lt;b&gt;he controls&lt;/b&gt;, like groovy.io.&lt;br /&gt;&lt;br /&gt;Instead of rehashing his old line about Groovy making programming fun on ad-heavy webpages, or showing off endless pictures of abacuses and looms in powerpoints on DSL&amp;#39;s, Laforge should be writing &lt;b&gt;&lt;i&gt;actual content to help developers be productive&lt;/i&gt;&lt;/b&gt;. If he really wanted Groovy to be fun, he&amp;#39;d be shouting the &lt;b&gt;groovy growl&lt;/b&gt;, the &lt;b&gt;ooooooo&lt;/b&gt;, and the &lt;b&gt;veeeeey&lt;/b&gt;! But to Laforge, Groovy is just an opportunity to extract revenue from corporates giving their developers a Copenhagen beer junket, and to promote his own name to IT shops in case SpringSource&amp;#39;s new owner retrenches everyone who can&amp;#39;t pass a basic programming aptitude test.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;17 Feb 2013&lt;/i&gt;&lt;br /&gt;Word&amp;#39;s out the business line VMWare wants to exit is SpringSource with Cloud Foundry stripped out. Seems Rocher&amp;#39;s been telling Oracle and JBoss if they buy SpringSource, he can cripple the static compilation mode in Groovy and nudge developers towards Java or Ceylon. So &lt;b&gt;if you use the new CompileStatic mode in Groovy, not only is it buggy but it might not even be supported soon&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;16 Feb 2013&lt;/i&gt;&lt;br /&gt;Groovy 2.1, although officially released, is still in unofficial beta testing for inclusion in Grails 2.3, to be released in May 2013 for the SpringSource European Gr8te conference, &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03#15"&gt;just as Groovy 2.0&amp;#39;s official release was just an extended beta test for Grails 2.2&lt;/a&gt;. Groovy was long ago hijacked by Rocher to snare programmers into Grails conference seats. Expect to see Groovy 2.2 renamed to version 3.0 &amp;quot;to sync the version number with Grails 3&amp;quot;. But really it&amp;#39;s all about further delaying the MOP rewrite from Groovy 3 to 4 without &lt;a href="http://groovy.329449.n5.nabble.com/Release-Grumpy-Mode-td4978117.html"&gt;the outcry when it was delayed from Groovy 2 to 3&lt;/a&gt;. Rocher&amp;#39;s more interested in pocketing the money from flogging Grails conferences and consulting than investing in a proper MOP or grammar in Groovy so it can be more than a has-been language. And Laforge does whatever Rocher tells him to - the price of a single-track speaking slot in the conferences. No-one would listen to Laforge speak if Rocher was speaking at the same time in the other room.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;15 Feb 2013&lt;/i&gt;&lt;br /&gt;Looks like &lt;a href="http://groovy.329449.n5.nabble.com/Heads-up-on-upcoming-releases-td5713054.html"&gt;Rocher&amp;#39;s just cancelled the Groovy MOP rewrite, through his paid proxy Laforge talking about an unscheduled v 2.2 release&lt;/a&gt;, as &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog04#4"&gt;predicted by my other half&lt;/a&gt;. The rewrite was just an empty promise to string along developer Jochen Theodorou all these years. Rocher&amp;#39;s management of Groovy/Grails is all about investing as little as possible to squeeze out as much as possible. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;13 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="5"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#5"&gt;Groovy Buzzwords&lt;/a&gt;&lt;/h1&gt;
Laforge reacted to Binstock&amp;#39;s analysis by &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-td5712875.html"&gt;announcing a &amp;quot;documention effort and site redesign&amp;quot;&lt;/a&gt;: &amp;quot;&lt;i&gt;Groovy is a very mature and widely used language on the Java platform, with hundred thousands of developers worldwide. It&amp;#39;s stable and fast, flexible and readable, has got plenty of interesting use cases (DSLs, testing...), is feature-packed, and it&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few). However, one area where the Groovy project can do better is with its documentation.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s look at the truth behind all this verbiage...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Documentation effort and site redesign&lt;/b&gt;&lt;/i&gt;: Laforge is redesigning the website, perceiving Groovy&amp;#39;s problem as an image problem, but hiding it behind a &amp;quot;documentation effort&amp;quot;. The website was redesigned a mere 15 months ago. Before then the documention contents were &lt;i&gt;one click away&lt;/i&gt;, but were split into four separate pages, each two clicks away, much less convenient for Groovy users but it meant more GoogleAds revenue for Codehaus and more users needing consultancy services from SpringSource. Laforge is just pretending to care about documentation.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is a very mature language on the Java platform&lt;/b&gt;&lt;/i&gt;: Groovy is declining, at the end of its life. When GPars was released at version 1.0 after being bundled in Groovy for years, it was also announcing its own end-of-life. SpringSource and Codehaus are now milking Groovy for all they can get.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is widely used, with hundreds thousands of developers worldwide&lt;/b&gt;&lt;/i&gt;: All claims, no proof. Whenever challenged, Laforge says his clients don&amp;#39;t want to be named. More likely he doesn&amp;#39;t want them poached by someone who hasn&amp;#39;t signed his contracts.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is fast&lt;/b&gt;&lt;/i&gt;: Dynamically compiled Groovy is slo.oo.ooo.oooo.ooooo.oooo.ooo.oo.ow, as Binstock was careful to point out.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is stable&lt;/b&gt;&lt;/i&gt;: Statically compiled Groovy is bug-ug-ugg-uggy. Only last week, &lt;a href="http://stackoverflow.com/questions/14774709/groovy-2-1-0-weird-behaviour-of-switch-case-break-statement-with-compilestatic"&gt;a serious static compilation bug in Groovy 2.1.0 was reported&lt;/a&gt;. Although officially released in June 2012, Groovy 2.0 really wasn&amp;#39;t released for production use until it was bundled as part of Grails 2.2 in Dec 2012. The 6 months from June to December was unofficially &lt;b&gt;just more beta-testing with a larger base of users&lt;/b&gt;, namely those who download standalone releases of Groovy. Grails, however, doesn&amp;#39;t use any of the static compilation features in Groovy 2.0. All the testing of Groovy 2.0 was just to &lt;b&gt;make sure the inclusion of static compilation in Groovy didn&amp;#39;t break any of its dynamic compilation use in Grails&lt;/b&gt;. On the day after the Grails 2.2 release came the first beta of Groovy 2.1, which has since been officially released standalone, but hasn&amp;#39;t yet shipped with Grails. Once again, Groovy&amp;#39;s timeline is determined solely by the needs of Grails.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is flexible&lt;/b&gt;&lt;/i&gt;: Laforge is just spewing buzzwords here. To me, flexible means unhindered by syntax contraints. Clojure allows easy code reorganization and macro-level syntactic manipulation, far more flexible than Groovy.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is readable&lt;/b&gt;&lt;/i&gt;: Some people find the indention used by Python and Haskell most readable, while others find the balanced brackets used by C, Java, Javascript, Scala, Groovy, and PHP more readable. &lt;b&gt;Groovy 0.5 here at Codeplex is a proof-of-concept prototype showing how Groovy-style syntax can easily be built atop Clojure&lt;/b&gt;, which, unlike Groovy, also runs atop the .NET and Javascript platforms. Why be constrained by Groovy&amp;#39;s Antlr 2.7 based grammar when we can write our own atop Clojure?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=622834" alt="ChineseCheckers.png" title="ChineseCheckers.png" /&gt; &lt;i&gt;&lt;b&gt;Groovy has got plenty of interesting use cases (DSLs, testing)&lt;/b&gt;:&lt;/i&gt; DSL is just another buzzword. Dropping semicolons, commas, and parentheses from a syntax doesn&amp;#39;t a DSL make. IDE&amp;#39;s put them in automatically without needing to type them anyway. Virtually every language has testing frameworks.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is feature-packed&lt;/b&gt;&lt;/i&gt;: More &amp;quot;features&amp;quot; means more need for consultants and conferences. Some old features such as interceptors no longer work properly. Many new features, such as static compilation and invoke dynamic, are not production ready. In both Groovy 2.0 and 2.1, the code using invoke-dynamic is bundled in a separate jar-file which only runs on Java 7. Grails and Gradle don&amp;#39;t bundle this other invoke-dynamic jar file, and don&amp;#39;t intend to for Grails 2.3 and Groovy 2.1. The Groovy roadmap claims a new MOP will be written atop this invoke-dynamic jarfile, and ship as the sole jar in Groovy 3, but every time in the past when Theodorou&amp;#39;s started on the MOP, he&amp;#39;s been redeployed. I don&amp;#39;t believe Rocher intends to pay for it. Even if it was done, how long would it take? Other statically-typed JVM languages like Scala, Kotlin, and Ceylon are coming quickly. Scala is rising, Kotlin has IntelliJ as a delivery channel, and Ceylon has JBoss backing it.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few)&lt;/b&gt;:&lt;/i&gt; Only 2 of these have any traction in industry, and even Gradle&amp;#39;s uptake is iffy. If there were any other successful projects, Laforge would&amp;#39;ve mentioned them.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;One area where the Groovy project can do better is with its documentation&lt;/b&gt;&lt;/i&gt;: What Laforge should have said was &amp;quot;&lt;i&gt;Because I can&amp;#39;t code, I should&amp;#39;ve made myself useful by writing documentation instead. I never did, and accept responsibility for Groovy&amp;#39;s failure in this area.&lt;/i&gt;&amp;quot; But Laforge is even incapable of writing correct documentation, as shown by &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog02#7"&gt;his buggy Mars Rover attempt&lt;/a&gt;, let alone accepting responsibility for it. Laforge is second only to Rocher for causing Groovy&amp;#39;s terminal decline.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="4"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#4"&gt;Groovy Confusion&lt;/a&gt;&lt;/h1&gt;
Once again, mixed messages are coming out regarding the Codehaus version of the Groovy Language.&lt;br /&gt;&lt;br /&gt;On 26 June 2012, Tech Lead Jochen Theodorou &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-tt5710334.html"&gt;announced he was beginning work on Groovy 3&lt;/a&gt;, kicking off a discussion thread with 90 replies. I asked if &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-td5710334.html#a5710338"&gt;Groovy 3 will contain a new MOP&lt;/a&gt;, to which Guillaume Laforge replied with the passive voice &amp;quot;The MOP needs to be rewritten&amp;quot;. But the MOP rewrite wasn&amp;#39;t begun.&lt;br /&gt;&lt;br /&gt;On 11 January Jochen announced &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-tt5712419.html"&gt;I will now start the implementation of the new MOP&lt;/a&gt;&amp;quot;. Graeme Rocher said he &lt;b&gt;wanted binary compatibility and ability to run old compiled Groovy code&lt;/b&gt;. Suspecting Rocher was setting up the cancellation of the MOP rewrite, I asked if &lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-td5712419.html#a5712427"&gt;VMWare&amp;#39;s not willing to pay for Jochen to rewrite the MOP if it doesn&amp;#39;t do exactly what the current one does?&lt;/a&gt; Rocher got defensive with the impersonal &amp;quot;the new MOP needs writing&amp;quot;.&lt;br /&gt;&lt;br /&gt;A week ago, VMWare told the US SEC they intended retrenching 900 workers and exiting some business lines. They didn&amp;#39;t say if they would trim up SpringSource before they sell it to JBoss, or if they would sell it to Oracle as a white elephant ripe for trimming.&lt;br /&gt;&lt;br /&gt;Two days ago, Laforge &lt;a href="http://www.infoq.com/news/2013/02/Groovy2_1_Release#.UREiSUHeTs0.dzone"&gt;dug into his posting quota on InfoQ to announce Groovy 2.1&amp;#39;s release&lt;/a&gt; a week late &lt;i&gt;(perhaps he was too busy being re-interviewed for his own job, and traded in a real developer like Champeau to save his own skin)&lt;/i&gt;. Even though Laforge didn&amp;#39;t do any technical work on Groovy 2.1, he kept on refering to &amp;quot;we&amp;quot;, putting people off by not acknowledging any of the actual programmers such as Jochen or Fred Janon in the InfoQ article or the linked-to release notes. Laforge also put people off with meaningless marketing talk, such as &lt;i&gt;&amp;quot;Groovy 2.1’s distribution bundles the recently released GPars 1.0&amp;quot;&lt;/i&gt;. Groovy has bundled the latest version of GPars for years. When GPars changed its version number to 1.0, both Groovy 2.0.x and 2.1 upgraded to it like they always had.&lt;br /&gt;&lt;br /&gt;Yesterday, Dr Dobbs editor Andrew Binstock wrote &lt;a href="http://www.drdobbs.com/jvm/the-groovy-conundrum/240147731"&gt;some pessimistic views on Codehaus Groovy&amp;#39;s future&lt;/a&gt;. He was diplomatic, though, e.g. &lt;i&gt;&amp;quot;Keying off ideas prototyped by Alex Tkachman, the Groovy team added static typing&amp;quot;&lt;/i&gt;. That&amp;#39;s putting it nicely. Unfortunately, he also neglected to mention Theodorou&amp;#39;s name anywhere, the technical guru who did most of the work, even though he managed to mention project manager Laforge. I suspect Laforge sent him some Q&amp;amp;A copy regarding Groovy 2.1, but Dr Dobbs isn&amp;#39;t InfoQ. Binstock instead published an analysis. His conclusion...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;quot;[Groovy is] a language primed to be a major player. There is the conundrum. The endless variety of features requires considerable documentation, which is simply not available, especially for the advanced features that give Groovy much of its benefit. And so, if you jump in today, you&amp;#39;ll find the language is easy to learn, but hard to master. Fortunately, this limitation is not incurable. However, time is of the essence as Groovy&amp;#39;s principal competitor for the hearts and minds of Java developers — Scala — has a small, laser-focused company behind it, which revs the product frequently and generates considerable documentation. If Groovy acts soon, it can retain leadership among Java alternatives. If not, it will have to resign itself to being an also-ran.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Binstock misses the point of Grails and Groovy&amp;#39;s business model. A lack of usable documentation means developers must pay for SpringSource consultants and seats at conferences, where lots of money is made and divvied up. By throwing in endless features, they increase the complexity of Groovy and the need for consultants from the supply side, just as the lack of documentation creates the need for conferences from the demand side. The Groovy &amp;quot;Bible&amp;quot; didn&amp;#39;t bring in much profit for its authors so why should they bother with a 2nd edn? Grails and Groovy is about making money &lt;i&gt;now&lt;/i&gt; for those involved, not investing it. Even the &lt;b&gt;&amp;quot;groovymag&amp;quot; charges money for an online subscription, while the &amp;quot;Week with Scala&amp;quot; is free!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If someone seriously creates independent doco for Groovy, the next version of Groovy changes slightly to lessen the value of the doco and increase the need for a consultant or conference. They keep a tight gateway over their test suites. I&amp;#39;ve experienced this first-hand. When I was writing free online doco for Groovy 5 yrs ago, &lt;b&gt;sociopath Rocher just couldn&amp;#39;t relate as an equal partner to me in a bazaar&lt;/b&gt;. He just had to prod people into targeting me, eventually destroying my desire to make Groovy simple to use, so he could keep as much of the take as possible at the top reaches of the cathedral.&lt;br /&gt;&lt;br /&gt;Binstock does &lt;b&gt;correctly conclude Groovy will soon be an also-ran&lt;/b&gt; because of that business strategy. Rod Johnson, former CEO of Grails company SpringSource, is now leading the board of that laser-focused Scala company. He no doubt understands the value of &amp;quot;taking a cut of a huge pie&amp;quot; instead of &amp;quot;owning all of a tiny pie&amp;quot;, and is investing in growing Scala instead of strangling it. The project managers behind Groovy, Rocher and Laforge, are probably incapable of changing their ingrained habits to steer Groovy in a new direction. They will, however, take something else away from Binstock&amp;#39;s analysis: that Groovy needs a new name for version 3. Yes, they&amp;#39;ll see a brand perception problem, rather than a widely recognized lack-of-documentation problem, and they&amp;#39;ll get busy creating a new imagery for Groovy, instead of making it easy for people to master.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="3"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#3"&gt;Roadmap&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;I&amp;#39;m moving the roadmap from its own page to this blog entry...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The Groovy Language here at Codeplex will be built with Unicode graphemes, unlike most programming languages (e.g. the fake Groovy at Codehaus) which are built solely with Ascii tokens, with bare Unicode codepoints added in as an afterthought. The rough roadmap for evolving Groovy, beginning with lower numbered items, is...&lt;br /&gt;
&lt;h3&gt;1. Groovy Grammar&lt;/h3&gt;Build a recursive-descent parsing library that can look at the internal structure of CJK tokens, and &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20Grammar%20for%20Programming&amp;referringTitle=Blog04"&gt;define the Groovy grammar&lt;/a&gt;. The grammar atop Clojure will enable developers to extend the Groovy syntax easily using parser-level macros. &lt;a href="http://groovy.codeplex.com/releases/view/91000"&gt;The latest version&lt;/a&gt; can parse a healthy subset of the Groovy grammar.&lt;br /&gt;
&lt;h3&gt;2. GUI with IME&lt;/h3&gt;Create a GUI with a input method editor (IME) to enable all Unicode tokens to be entered easily, and a J-style interactive learning environment for the Groovy Language syntax. Use &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20for%20Java%20Newbies&amp;referringTitle=Blog04"&gt;these 3-yr-old notes for learning Groovy 1.5&lt;/a&gt; as a base for writing a comprehensive test suite.&lt;br /&gt;
&lt;h3&gt;3. Unicode Properties&lt;/h3&gt;We&amp;#39;ll use &lt;a href="http://groovy.codeplex.com/wikipage?title=Unicode%20Inheritance&amp;referringTitle=Blog04"&gt;inheritance hierarchies&lt;/a&gt; to represent all the Unicode characters, one for the codepoints based on the general category and certain relevant boolean properties, the other for various decompositions. We&amp;#39;ve yet to analyze the information inside the Unihan variant data.&lt;br /&gt;
&lt;h3&gt;4. CJK Decomposition Data&lt;/h3&gt;The CJK Decomposition Data File is a graphical analysis of the approx 75,000 Chinese/Japanese characters in Unicode. They utilize approx 11,000 intermediate decompositions which are not themselves in Unicode. See &lt;a href="http://cjkdecomp.codeplex.com"&gt;the main project site&lt;/a&gt; for more details. The latest version, 0.4.0, was released on 15 August 2012. See also some notes on &lt;a href="http://groovy.codeplex.com/wikipage?title=Reflection%20and%20repetitions%20in%20the%20CJK%20decomposition%20data&amp;referringTitle=Blog04"&gt;using reflection in the CJK decompositions&lt;/a&gt;. We&amp;#39;ll use these decomps to design the IME keys for entering CJK tokens into the Groovy GUI.&lt;br /&gt;
&lt;h3&gt;5. Peer-to-Peer Engine&lt;/h3&gt;Enable the most common operator symbols and foreign-language names to be shared automatically between Groovy IME&amp;#39;s using a peer-to-peer protocol so developers will know the most commonly used names and symbols when writing code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;6 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="2"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#2"&gt;Unicode Pattern Syntax Tokens&lt;/a&gt;&lt;/h1&gt;
Each of the million-plus Unicode characters has about 50 properties associated with it. Most of them can change between different versions of Unicode or for defining private-use characters, except for six of them:
&lt;ul&gt;&lt;li&gt;Name (na)&lt;/li&gt;
&lt;li&gt;Jamo Short Name (jsn)&lt;/li&gt;
&lt;li&gt;Canonical Combining Class (ccc)&lt;/li&gt;
&lt;li&gt;Decomposition Mapping (dm)&lt;/li&gt;
&lt;li&gt;Pattern Syntax (PatSyn)&lt;/li&gt;
&lt;li&gt;Pattern White Space (PatWS)&lt;/li&gt;&lt;/ul&gt;
The first four will change from their default to a lifelong value for newly assigned characters, though. The other two, Pattern Syntax and Pattern White Space properties, both boolean values, will never change even when the character is being newly assigned. Only 11 characters have the PatWS property so they&amp;#39;re not as interesting as those with the PatSyn property, 2760 of them, 296 of which are still unassigned in Unicode 6.1.&lt;br /&gt;&lt;br /&gt;The unassigned characters are given the PatSyn property by defining all characters in certain blocks (rather than characters) as having the PatSyn property:
&lt;ul&gt;&lt;li&gt;2190..21FF; Arrows&lt;/li&gt;
&lt;li&gt;2200..22FF; Mathematical Operators&lt;/li&gt;
&lt;li&gt;2300..23FF; Miscellaneous Technical&lt;/li&gt;
&lt;li&gt;2400..243F; Control Pictures&lt;/li&gt;
&lt;li&gt;2440..245F; Optical Character Recognition&lt;/li&gt;
&lt;li&gt;2500..257F; Box Drawing&lt;/li&gt;
&lt;li&gt;2580..259F; Block Elements&lt;/li&gt;
&lt;li&gt;25A0..25FF; Geometric Shapes&lt;/li&gt;
&lt;li&gt;2600..26FF; Miscellaneous Symbols&lt;/li&gt;
&lt;li&gt;2700..27BF; Dingbats&lt;/li&gt;
&lt;li&gt;27C0..27EF; Miscellaneous Mathematical Symbols-A&lt;/li&gt;
&lt;li&gt;27F0..27FF; Supplemental Arrows-A&lt;/li&gt;
&lt;li&gt;2800..28FF; Braille Patterns&lt;/li&gt;
&lt;li&gt;2900..297F; Supplemental Arrows-B&lt;/li&gt;
&lt;li&gt;2980..29FF; Miscellaneous Mathematical Symbols-B&lt;/li&gt;
&lt;li&gt;2A00..2AFF; Supplemental Mathematical Operators&lt;/li&gt;
&lt;li&gt;2B00..2BFF; Miscellaneous Symbols and Arrows&lt;/li&gt;
&lt;li&gt;2E00..2E7F; Supplemental Punctuation&lt;/li&gt;&lt;/ul&gt;
From these, 30 exceptions (0x2776..0x2793) are subtracted, and 150 are added. The added exceptions include the ASCII symbol and punctuation characters often used for syntax in programming languages.&lt;br /&gt;&lt;br /&gt;According to Unicode standard annex 31: &lt;i&gt;&amp;quot;With a fixed set of whitespace and syntax code points, a pattern language can then have a policy requiring all possible syntax characters (even ones currently unused) to be quoted if they are literals. Using &lt;b&gt;this policy preserves the freedom to extend the syntax in the future by using those characters&lt;/b&gt;. Past patterns on future systems will always work; future patterns on past systems will signal an error instead of silently producing the wrong results.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There are, of course, many other symbol and punctuation characters in Unicode that aren&amp;#39;t Pattern Syntax characters, and more can be added that can&amp;#39;t become Pattern Syntax characters (unless they&amp;#39;re encoded in one of the remaining 296 unassigned Pattern Syntax slots). The only language I know of that utilizes Unicode&amp;#39;s pattern syntax invariance is XML 1.0, 5th edn. Perhaps the Groovy Language reboot will be the first Turing-complete language to do so.&lt;br /&gt;&lt;br /&gt;47 of the 2464 assigned Pattern Syntax are canonically equivalent to other forms, so can be ignored. 45 of those decompositions are to some other Pattern Syntax character followed by nonspacing mark 0x338( ̸ ), e.g. ≠ is = then mark ̸ . The other two, 0x2329 and 0x232A, are singleton decompositions to 0x3008(〈) and 0x3009(〉), both also Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Within the assigned pattern characters, perhaps the second most important distinction are the bidi-mirroring glyphs, those with the &lt;i&gt;bmg&lt;/i&gt; property, each of which must be swapped for its complement when used within a right-to-left rendering context, such as within Arabic and Hebrew text. There are 144 pairs of them, such as ( and ), or [ and ]. Because such pairs are used extensively in programming languages, with balancing often required to make language syntax more readable, they are an important subset of the Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Perhaps another important subset of the Pattern Syntax are the 161 bidi-mirrored characters, those with the &lt;i&gt;bidim&lt;/i&gt; property, unmatched characters which must be mirrored when rendering, e.g. ∁ ∂ ∃ ∑ . A further subset could be characters that would be bidi-mirrored but aren&amp;#39;t because they&amp;#39;re already symmetrical, e.g. ∀ ∩ ∪ . They&amp;#39;re not indicated by any specific property, but must be guessed at based on their physical proximity to related bidi-mirrored characters in the Unicode database, e.g. ∃ is bidi-mirrored so ∀ must be symmetrical. Perhaps a specific property in a future version of Unicode would be nice.&lt;br /&gt;&lt;br /&gt;There&amp;#39;s many other Pattern Syntax characters that aren&amp;#39;t symmetrical but also aren&amp;#39;t mirroring or mirrored in a right-to-left rendering context because they&amp;#39;re considered to be &lt;i&gt;pictorial&lt;/i&gt; or &lt;i&gt;ornate&lt;/i&gt; characters, including those for box-drawing and all the arrows, such as 0x2190(←) and 0x2192(→). Unlike the Pattern Syntax property, the bidi properties of a character can change in future versions of Unicode, but for now we can&amp;#39;t use ← in programming and expect it to be rendered as → when we change the naming language to Arabic or the thematic ordering of the referents. So languages that use arrows in their syntax, such as Scala, aren&amp;#39;t future-proofed. Perhaps a future version of Unicode would add more mirroring pairs.&lt;br /&gt;&lt;br /&gt;In designing the Groovy reboot, we &lt;i&gt;do&lt;/i&gt; have 305 bidi-mirroring or -mirrored symbols to choose from, so not being able to use the arrows isn&amp;#39;t a big deal. We just need to be aware of our choices, and not make syntactic mistakes, as did the first bootup of Groovy when its project managers committed to treating every Unicode token above 0xFF as an identifier character :-(&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot will utilize the full power of Unicode in both its syntax &lt;b&gt;and&lt;/b&gt; its vocabulary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;5 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#1"&gt;Groovy Japanese&lt;/a&gt;&lt;/h1&gt;
Something strange happened the other day! It&amp;#39;s difficult to explain so I better set the scene...&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve been learning Chinese for the last 10 years, between programming and teaching, so not too quickly, and my Chinese reading is better than my speaking or listening. I&amp;#39;ve noticed learning to read new Chinese characters &lt;i&gt;is different to&lt;/i&gt; reading words in other languages in that we must use both the &lt;b&gt;visual and auditory parts of the brain at the same time&lt;/b&gt;. E.g. to read 妈, we look at 女 visually and at 马 phonetically: 女 means &amp;quot;woman&amp;quot; and 马 sounds like &amp;quot;ma&amp;quot;, so when we see the word 妈, &lt;b&gt;both the visual and auditory parts of our brain together create the meaning&lt;/b&gt; &amp;quot;mother&amp;quot;. Of course, when we&amp;#39;ve learnt the word our longterm memory kicks in instead, but there&amp;#39;s always many more characters of the 3000-4000 commonly used ones we don&amp;#39;t know.&lt;br /&gt;&lt;br /&gt;A few months ago, I tried my hand at learning to read Japanese. Because I already know most of the Kanji, they being similar in meaning to the over 2000 Chinese characters I&amp;#39;ve learnt, I figured I&amp;#39;d have a head start learning to read Japanese if I weren&amp;#39;t concerned about speaking it. So I &lt;b&gt;decided to learn it visually, seeing if I can read it and understand the meaning, but without vocalizing it&lt;/b&gt; in my head. When looking through &lt;a href="http://www.guidetojapanese.org/learn/grammar"&gt;Tae Kim&amp;#39;s online tutorial&lt;/a&gt;, I&amp;#39;d noticed most of the 46 Hiragana usually have only one grammatical or functional meaning, e.g. ます for polite register.&lt;br /&gt;&lt;br /&gt;So I started practising reading Kanji/Hiragana text from some practise books. &lt;i&gt;(Language-learning books on Japanese are second in popularity to those on English in bookshops across China. They are useful to me because I can read the explanations in Chinese!)&lt;/i&gt; But one day recently something strange happened...&lt;br /&gt;&lt;br /&gt;I was looking at some Japanese text I could easily read but then I &lt;b&gt;had to cover my left eye&lt;/b&gt; because it started itching. &lt;b&gt;Suddenly I couldn&amp;#39;t understand any of the text I was looking at&lt;/b&gt;, except for some Kanji which I already knew the Chinese pronunciation for. But then I &lt;b&gt;tried covering my right eye, and suddenly I could understand the Japanese meaning easily&lt;/b&gt; again!&lt;br /&gt;&lt;br /&gt;It seems by learning to read basic Japanese so I can understand the meaning but not pronounce the words, only one side of my brain is utilized, the same side that processes vision from my left eye.&lt;br /&gt;&lt;br /&gt;This discovery also explains something else. When I&amp;#39;m programming, I usually play English-language TV shows in the background, and can follow the stories just by listening to them, only glancing at the TV screen once or twice a minute. I can code up programs that work &lt;b&gt;and&lt;/b&gt; remember the storyline of the TV shows &lt;b&gt;when I do both at the same time!&lt;/b&gt; If I do either activity by itself I get bored easily, but when I do both simultaneouly I can easily work for hours at a time. Also... these are the &lt;b&gt;only two mental activities I&amp;#39;m able to do simultaneously&lt;/b&gt;, without either activity being impacted.&lt;br /&gt;&lt;br /&gt;So I&amp;#39;ve made a picture &lt;i&gt;(using the image from Wikipedia)&lt;/i&gt; of what it seems each side of my brain does:&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=617153" alt="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" title="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" /&gt;&lt;br /&gt;Of course, all this has implications for &lt;a href="http://groovy.codeplex.com/wikipage?title=Kanji%20meets%20Programming&amp;referringTitle=Blog04"&gt;using Kanji in programming&lt;/a&gt; to make code terser. Because &lt;b&gt;the same half of the brain that reads Kanji visually also writes programming code&lt;/b&gt;, they should gel together easily, &lt;b&gt;and&lt;/b&gt; still leave the other half of the brain free for some interpersonal activity. In theory, we could write terse programs using Kanji &lt;i&gt;as well as&lt;/i&gt; use interpersonal skills to relate to clients and colleagues, and stuff like that!&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot here at Codeplex aims to bring &lt;b&gt;all&lt;/b&gt; Unicode characters to the vocabulary of programs, not just the 96 ASCII (or 70 APL) ones. When the fake Groovy dies in the grave of Grales, the real Groovy will rise, bringing &lt;b&gt;all Unicode tokens&lt;/b&gt; for the programming half of our brains to use when we code.&lt;br /&gt;
&lt;h2&gt;See &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03&amp;referringTitle=Blog04"&gt;previous blog entries&lt;/a&gt;.&lt;/h2&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Sat, 30 Mar 2013 09:46:53 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Blog04 20130330094653A</guid></item><item><title>Updated Wiki: Blog04</title><link>http://groovy.codeplex.com/wikipage?title=Blog04&amp;version=13</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;u&gt;Gavin Groovy Grover&amp;#39;s UNICODE Blo&lt;/u&gt;g&lt;/h1&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=577534" alt="Grrrroooooveeey.jpg" title="Grrrroooooveeey.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;1 April 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="11"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#11"&gt;Dr Grover and Mr Vorg&lt;/a&gt;&lt;/h1&gt;
I&amp;#39;ve finally accepted a reality I&amp;#39;ve suspected for many years now, but never really faced up to: &lt;b&gt;there&amp;#39;s another consciousness in my brain&lt;/b&gt;, and not a very nice one at that! Perhaps I never faced up to it before because I didn&amp;#39;t understand how it could happen, but now I have a fair idea of how he got there...&lt;br /&gt;&lt;br /&gt;When young, I bought into the doctrine that spending all my time on math and computers was bad for me, and I needed balance in life. So in the 1980&amp;#39;s I worked on mainframes, but didn&amp;#39;t touch computers outside of work, instead exercising and &amp;quot;socializing&amp;quot;. When the 1990-2 recession hit, aspies like Mr Monk and me were the first out of a job, and I&amp;#39;d never touched a PC. So I retrained, got back into work, and tried to keep up technically. Anticipating the post-Y2K layoffs, I left my job to retrain in Java on my own dime, even becoming a &lt;i&gt;Sun-certified Java 1.1 Developer&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;But I&amp;#39;d been fooled by the &amp;quot;shortage of talent&amp;quot; lie permeating Silly Valley: businesses didn&amp;#39;t want Java programmers, they wanted to string along C++ programmers with promises of Java training, and only immigrants needing green cards and the naive under 30 need apply. So I went back to mainframes for a while, learnt about business in my spare time, but when my last job dumped too much standby work on me, I packed it in to teach English in China, a total change.&lt;br /&gt;&lt;br /&gt;10 years later, I haven&amp;#39;t been bothered to leave. I slowly learnt through trial and error how to teach college students, plus learnt to speak some Chinese, both &amp;quot;right-brain&amp;quot; skills. After swotting up on English linguistics and pedagogy in my first year, I went back to learning about programming, a &amp;quot;left-brain&amp;quot; skill. When I realized Chinese characters were the future of programming, I started work on decomposing them visually so Westerners could understand and use them too. I spent hours a day listening to TV shows in the background while looking at the computer, and discovered I could do both activities simultaneously. I could code programs to help decompose Chinese characters &lt;b&gt;and&lt;/b&gt; remember the storyline of the TV shows. I could do both for hours, but either activity alone quickly bored me.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=648735" alt="check.jpg" title="check.jpg" /&gt; I joined in online forums as &lt;i&gt;&amp;quot;vorg&amp;quot;&lt;/i&gt;, the first 4 letters reversed of my surname. Somewhere along the way, the &lt;b&gt;part of my brain listening to the TV shows became self-aware&lt;/b&gt; and took over that login. He even completed the login to &lt;i&gt;&amp;quot;Vorg van Geir&amp;quot;&lt;/i&gt;, a total anagram of &lt;i&gt;&amp;quot;Gavin Grover&amp;quot;&lt;/i&gt;, just like &lt;i&gt;Doctor Who&lt;/i&gt; and &lt;i&gt;Torchwood&lt;/i&gt;. Whereas I, Grover, was patient in dealing with the sarcasm from Rocher&amp;#39;s handles, &lt;b&gt;Vorg just reacted openly with avenging bile&lt;/b&gt;. When Laforge played his petty politics with Gr&amp;#164;&amp;#164;vy, &lt;b&gt;Vorg exposed his fraud and incompetence&lt;/b&gt;. Vorg&amp;#39;s a very different beast to me: he&amp;#39;s a complainer!&lt;br /&gt;&lt;br /&gt;I don&amp;#39;t think it&amp;#39;s good for Vorg to exist in me. What he&amp;#39;s saying is true, but perhaps he shouldn&amp;#39;t be saying it so directly. I &lt;i&gt;do&lt;/i&gt; believe, though, in mediTation, not mediCation, to get rid of Vorg. He&amp;#39;s most active when I let my meditation exercises lapse. Whenever I resume them after an absence, sometimes all of Vorg&amp;#39;s memories will suddenly flash into my mind, where previously all I remembered was a blackout. If I practise them every day, it keeps Vorg at bay!&lt;br /&gt;&lt;br /&gt;While &lt;i&gt;Vorg van Geir&lt;/i&gt; exists, my name can only be &lt;i&gt;Gavin Grover&lt;/i&gt; for there&amp;#39;s no place to put the &lt;i&gt;GrΦΦvy&lt;/i&gt; in Vorg&amp;#39;s name, that confused anagram of mine. But when he&amp;#39;s gone, and my name is no longer jumbled, the &lt;i&gt;GrΘΘvy&lt;/i&gt; can slot right in between my first two names: &lt;i&gt;Gavin &amp;quot;Grϕϕvy&amp;quot; Grover&lt;/i&gt;. Then I&amp;#39;ll have a gr&amp;#210;&amp;#211;vy serenity, as I rebuild the &lt;i&gt;Grōōvy Language&lt;/i&gt; from first principles, spec and all. So my ongoing mission now is to &lt;b&gt;kill Vorg&lt;/b&gt;, to put that complainer to death, to claim that grƟƟvy serenity as I rebuild &lt;i&gt;Grŏŏvy&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;30 March 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="10"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#10"&gt;CRIMEAn Computing with Groovy&lt;/a&gt;&lt;/h1&gt;
A little over 20 years ago, I took my first real trip abroad to the magical land of India for 3 months. The first part was on an overlander truck from Chennai to Mumbai, then I launched out on my own taking in Delhi and Calcutta and many places in between. The many written languages of India fascinated me. Virtually every sign was written in 4 scripts: Latin (for English), Devanagari (for Hindi), Arabic script, and whatever the local script for the state was. In Unicode, 9 primary scripts are represented for the Indian languages: Devanagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telegu, Kannada, and Malayalam. Some are used to write more than one Indian state language.&lt;br /&gt;&lt;br /&gt;10 years ago, I moved here to China to teach English. Again, I was enchanted by the Chinese script, leading me to spend years analyzing the structure of the 85,000 Unihan (and Hangul) characters in Unicode. This has led me to look at the other 25,000 characters in Unicode, a far more complex task despite their much smaller number, and I&amp;#39;m still at it. The 95 ASCII keyboard characters familiar to English-speakers are just a very small number of them. The traditional view of IT has Silicon Valley at the center of an area reaching westward to roughly Japan and Australia, and eastward to roughly Germany and Israel. But even when we consider the less familiar Japanese kana, Greek alphabet, and Hebrew abjad, we still have a very small number of those 25,000 other Unicode characters.&lt;br /&gt;&lt;br /&gt;To really understand them, we must understand the world outside the traditional IT area. I have a mission to fully understand them, and eventually introduce them to the world through the &lt;i&gt;Groovy Language&lt;/i&gt; reboot: a mission I call Crimean Computing (CRIMEA = &lt;b&gt;C&lt;/b&gt;hina, &lt;b&gt;R&lt;/b&gt;ussia, &lt;b&gt;I&lt;/b&gt;ndia, &lt;b&gt;M&lt;/b&gt;iddle &lt;b&gt;E&lt;/b&gt;ast, and &lt;b&gt;A&lt;/b&gt;frica). By using &lt;i&gt;all&lt;/i&gt; Unicode tokens in programming languages, the rest of the world will program in their own scripts. Just as the Crimea in the Ukraine is far from Northern California, so also CRIMEAn computing is far from ASCII-based computing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;27 March 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="9"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#9"&gt;Groovy Haskell&lt;/a&gt;&lt;/h1&gt;
It&amp;#39;s taken decades to work out what many academics already know and teach, but maybe I had to work it out for myself: &lt;b&gt;statically-typed lazily-evaluated functional languages are at the pinnacle of the programming language heirarchy&lt;/b&gt;. Haskell is &lt;i&gt;higher-level&lt;/i&gt; than Clojure. It makes sense to add static typing to Clojure, but not macros to Haskell. I&amp;#39;m only part way into learning Haskell properly, but I suspect lazily-evaluated code can do everything macros can do.&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot is about adding all Unicode tokens to the vocabulary of programming, as well as modifying the language syntax where it makes sense with the expanded vocab. My last attempt was using Clojure. I tried rewriting the grammar of Groovy 0.5 in the Kern combinator parser library for Clojure last month. I investigated which of Clojure&amp;#39;s 4 monad libraries to use, as well as analyzed core.logic. I&amp;#39;ve looked at clojure.typed and decided the Groovy reboot must enable static typing from its very foundation.&lt;br /&gt;&lt;br /&gt;But clojure.typed stumbles in two cases: functions accepting or returning nil i.e. &lt;span class="codeInline"&gt;(U nil ...)&lt;/span&gt;, and functions accepting variadic arguments i.e. &lt;span class="codeInline"&gt;[... *]&lt;/span&gt;. The nil is a billion dollar mistake and has no place in any language, especially when monads are available. Variadic functions are a smell: they represent two concepts needlessly complected together: what a function does, and a fold when there&amp;#39;s extra arguments. Such fold syntax can be represented separately from the function easily enough, e.g. &lt;span class="codeInline"&gt;+/ 1 2 3&lt;/span&gt; in APL.&lt;br /&gt;&lt;br /&gt;So just as Ruby supercedes C++ by making everything an object, Haskell supercedes Lisp by making everything a macro. &lt;b&gt;Macros are the pointers of functional programming&lt;/b&gt;. I&amp;#39;m therefore switching to Haskell as the Groovy Language reboot&amp;#39;s implementation language. &lt;i&gt;(Unless I&amp;#39;m wrong about macros, then I&amp;#39;ll be back to Clojure!)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="8"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#8"&gt;Attacks against Groovy&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;Looks like &lt;a href="http://groovy.codeplex.com/wikipage?title=http%3a%2f%2fwww.codeplex.com%2fsite%2fusers%2fview%2fvorgvangeir&amp;referringTitle=Blog04"&gt;Vorg van Geir&amp;#39;s&lt;/a&gt; been active again so thought I&amp;#39;d add a pic this time...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=648734" alt="attacks&amp;#32;on&amp;#32;Groovy.jpg" title="attacks&amp;#32;on&amp;#32;Groovy.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;26 March 2013&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There&amp;#39;s 3 distinct but interconnected power structures involved in Graeme Rocher&amp;#39;s primary line of attack against me over the past 7 years...&lt;br /&gt;&lt;br /&gt;First, &lt;b&gt;his control over Grails&lt;/b&gt;. Grails is now owned &lt;i&gt;(via contributors contracts)&lt;/i&gt; by SpringSource, itself owned by VMWare, which is in turn majority owned by EMC. Because Grails is the primary app Groovy is used for, he also controls Groovy, and all other apps Groovy is used for. He uses the legal &lt;i&gt;(e.g. VertX thuggery)&lt;/i&gt;, marketing &lt;i&gt;(e.g. SpringG2X conferences)&lt;/i&gt;, public relations &lt;i&gt;(e.g. The Theorists)&lt;/i&gt;, and financial &lt;i&gt;(e.g. Laforge&amp;#39;s employment)&lt;/i&gt; resources of EMC/VMWare to protect his control. He exercises soft control over Grails programmers worldwide to influence their behavior &lt;i&gt;(e.g. &amp;quot;people from Grover&amp;#39;s home country should be doing something about him or else Grails gigs might dry up&amp;quot;)&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Second, &lt;b&gt;the property market Down Under&lt;/b&gt;. A primary means of profit for most people in Melbourne and New Zealand is investment in residential property. To make the market go up, they vote for the governments that welcome in the international students who rent the apartments and the immigrants who buy the houses. The flow-on effect creates jobs in education and tourism too. When one of their own might jeopardize the gravy train, they keep an eye on him, even bending laws if necessary. The many Grails programmers Down Under can influence the behaviour of those with connections to China.&lt;br /&gt;&lt;br /&gt;Third, &lt;b&gt;Chinese desire to go overseas&lt;/b&gt;. Mainland Chinese are playing both sides of the coin, attempting to rise in the heirarchies of their home country &lt;i&gt;and&lt;/i&gt; seeking to emigrate or send their families to America and Australia for much the same reason Europeans and others went. It&amp;#39;s therefore easy for many in English-speaking countries to social engineer situations in China, presenting themselves as having some sort of &lt;i&gt;authority in society&lt;/i&gt; to imitate the heirarchical nature of Chinese society. Most moves against me in China have as their origin such social engineering, which ultimately source back to Rocher.&lt;br /&gt;&lt;br /&gt;Of course, Rocher utilizes other lines of attack &lt;i&gt;(e.g. online monitoring)&lt;/i&gt;, and never letting his right-hand man know what his left-hand man is doing. But his con flogging a lookalike soundalike of Rails is doomed: the real Groovy language is coming! Developers will know it&amp;#39;s real by comparing it to Rocher&amp;#39;s fake one.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 March 2013&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve been poking around online looking back at the time of Rocher&amp;#39;s hijack of the Groovy Language. Unlike nowadays, &lt;a href="http://graemerocher.blogspot.com/2007_06_01_archive.html"&gt;he didn&amp;#39;t make much effort to hide his true nature&lt;/a&gt;. He begins one post: &amp;quot;&lt;i&gt;Well it looks like Alex Blewitt has taken the time to &lt;b&gt;excrete some more complete and utter rubbish&lt;/b&gt; all over the blog-o-sphere. Clearly, Alex &lt;b&gt;got screwed over big time&lt;/b&gt; by the Geronimo guys and is feeling rather, well, left out and hence has chosen to &lt;b&gt;vent his anger&lt;/b&gt; on the projects that James Strachan has participated in.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;Whereas Alex wrote &lt;a href="http://alblue.bandlem.com/2007/06/java-is-scala-new-groovy.html"&gt;a fairly technical discussion about Groovy and Scala&lt;/a&gt;, Rocher responded with a personal attack, &lt;b&gt;projecting his own motives for doing things onto someone else&lt;/b&gt;. For Rocher is the one who excretes rubbish on the net, such as that blog entry under his own name, and hundreds since under pseudonyms now he&amp;#39;s cleaned up his public image.&lt;br /&gt;&lt;br /&gt;Rocher is the one who vents his anger. When Groovy&amp;#39;s creator was delayed at an airport, he headed into a netbar to get ideas for a JVM-based scripting language, and Groovy was the result. When Groovy&amp;#39;s hijacker was delayed at an airport &lt;i&gt;(same link as above)&lt;/i&gt;, he spewed out a whole pageful of anger at British Airways.&lt;br /&gt;&lt;br /&gt;And Rocher is the one who screws people over bigtime. Tkackman and Wilson and Strachan and myself are just the most vocal ones. Many more left Groovy silently. And I haven&amp;#39;t looked at Grails. The technical gurus behind the Spring Framework are next in line to be devoured as &lt;b&gt;Rocher continues his rampage to control a &lt;i&gt;Spring Stack&lt;/i&gt; around Grails&lt;/b&gt;, then cash out, screwing over everyone below him in the pyramid.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;16 March 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="7"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#7"&gt;Groovy Debates&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;Sometimes I have conversations with myself over the future direction of the Groovy Language...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Groovy was birthed in 2003, had its hijack completed by 2007, and has been in a slow terminal decline ever since. Do you really think you&amp;#39;re able to revive it?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve accepted reality. I&amp;#39;m no longer reviving it, I&amp;#39;m now &lt;b&gt;rebuilding it from scratch, spec and all&lt;/b&gt;. Is there any reason I can&amp;#39;t?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Many are saying you&amp;#39;re not just rebuilding Groovy, but actively tearing down the existing one. Should you really be openly attacking Rocher and his decoy Laforge? If you sabotage his income potential, he can easily do the same to you.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Just what can they do they haven&amp;#39;t already been doing for a long time? 5 years ago, I was told a college didn&amp;#39;t renew my teaching contract because an overseas Chinese from Australia rang its president and said bad things about me. 10 years ago, someone put ads about me in newspapers in Taiwan at least twice. 15 years ago, someone from Auckland rang around at least 2 (probably more) IT recruiters in Sydney slagging me off. &lt;b&gt;I&amp;#39;ve only been doing openly for 2 years what they&amp;#39;ve been doing in secret for much longer&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;But isn&amp;#39;t 15 years ago long before Rocher even knew about you?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;It seems he got contacted by busy-bodies from Melbourne around 2006. Instead of telling them he doesn&amp;#39;t do stuff like that, he joined in and &lt;b&gt;eventually became chief instigator in targetting me&lt;/b&gt;. Shouldn&amp;#39;t I be attacking him back?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Why are you picking on Rocher and Laforge only? After all, it sounds like you have a whole handful of people who&amp;#39;ve been slagging you. You should be attacking them too.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;BTW, the real target is &amp;quot;Scar&amp;quot; Rocher only. Laforge is just the middleman he stuck between himself and me. Sociopaths always hide behind others. Anyway, I can&amp;#39;t play any others because &lt;b&gt;there&amp;#39;s only room for two players on a Chinese Chess board&lt;/b&gt;. Don&amp;#39;t you know what Rocher&amp;#39;s done to the Groovy brand?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Rocher tried to rename the Groovy Language. He changed the name of &lt;i&gt;Groovy on Rails&lt;/i&gt; to &lt;i&gt;Grails&lt;/i&gt; in early 2006 to get rid of the &lt;i&gt;Groovy&lt;/i&gt; part of the name, pretending to comply with Heinemeier-Hansson&amp;#39;s request to not use &lt;i&gt;Rails&lt;/i&gt; in the name. In late 2007 he tried to rename the Groovy Language as well but Laforge wouldn&amp;#39;t let him. Why are you so concerned about the Groovy brand?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align:right;float:right;"&gt;Are you kidding? Groovy&amp;#39;s my middle name. Why shouldn&amp;#39;t I be?&lt;/div&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve since discovered &lt;b&gt;Groovy is nothing special, just a clone of Ruby&lt;/b&gt; with Java keywords and syntax instead. Groovy/Ruby appealed when all I knew was Java and VBA, but I&amp;#39;ve since moved up the blub heirarchy. I now know &lt;b&gt;the pinnacle of programming is Clojure, Haskell, and APL&lt;/b&gt;. Clojure has the concurrency and macros, Haskell has the static typing and terse syntax, and APL has the large vocabulary of symbols. What use is Groovy now?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Good point. But you listed not one but three languages at the top of the heirarchy. Haskell and Clojure can both easily be extended to use the APL symbols, and even many more symbols and tokens from Unicode. I&amp;#39;m having troubles, however, understanding &lt;b&gt;how to merge together the best of Clojure and Haskell&lt;/b&gt;. Neither clojure.typed.core nor Template Haskell quite feel right, and rebuilding the Groovy Language is my ongoing attempt to get it right...&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(interrupting)&lt;/i&gt; But you haven&amp;#39;t explained why you want to call it &lt;i&gt;Groovy&lt;/i&gt; when there&amp;#39;s already a programming language with that name.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;The name of what I&amp;#39;m building is the &lt;i&gt;Groovy Language&lt;/i&gt;. &amp;quot;Groovy&amp;quot; is an adjective and the only other well-known language using an adjective is &lt;i&gt;Basic&lt;/i&gt;, the language I&amp;#39;m most eager to avoid following in any way.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Groovy&lt;/i&gt; and &lt;i&gt;Groovy Language&lt;/i&gt; are the same thing. You&amp;#39;re still using the name of an existing language.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;The fake &lt;i&gt;Groovy&lt;/i&gt; at Codehaus is in terminal decline, and is &lt;b&gt;unlikely to even exist in its present name and form very much longer&lt;/b&gt;, so when the real &lt;i&gt;Groovy Language&lt;/i&gt; at Codeplex is finally ready, utilizing every Unicode token, it&amp;#39;ll be the only game in town with that name.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Touche! And that&amp;#39;s why you haven&amp;#39;t wanted the fake Groovy to change its name. &lt;b&gt;In order for developers to really know that the upcoming &lt;i&gt;Groovy Language&lt;/i&gt; is real, there must first be a fake one to compare it with&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align:right;float:right;"&gt;Exactly!&lt;/div&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 February, updated 16 March 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="6"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#6"&gt;Groovy Tweetroll&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;Just discovered I&amp;#39;ve been &lt;a href="http://www.codeplex.com/site/users/view/vorgvangeir"&gt;blogging under the name &amp;quot;Vorg van Geir&amp;quot;&lt;/a&gt;! Funny, I don&amp;#39;t remember writing any of this, but it sounds like me and the picture&amp;#39;s me, so I&amp;#39;ve copied it below. Sometimes when I&amp;#39;m writing blog posts, I&amp;#39;ll be struggling with my words then suddenly an entire paragraph will flash into my mind, usually something ripping into Rocher and Laforge. This is the first time I don&amp;#39;t remember even writing something so recent, though...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;16 Mar 2013&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Corger&amp;#39;s &lt;a href="http://langpop.corger.nl"&gt;monthly comparison of programming languages for Feb 2013&lt;/a&gt; is out - you know the one, showing &lt;i&gt;StackOverflow (tag and synonyms applied count)&lt;/i&gt; and &lt;i&gt;GitHub (lines changed)&lt;/i&gt; on x and y axes with a logarithmic scale, featuring Groovy in the center of the second-tier cluster &lt;i&gt;(though also featuring Cobol nowhere in the top 84 languages used)&lt;/i&gt;. This link is going to be liberally dumped around by handles controlled by someone trying to up the registrations for the upcoming European Gr8te Conference.&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve already exposed how &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog01#7"&gt;Stack Overflow is being gamed by someone&lt;/a&gt; for questions tagged Groovy. So I took a brief moment to check out Github...&lt;br /&gt;&lt;br /&gt;I clicked on the &lt;i&gt;languages&lt;/i&gt; tab from Github&amp;#39;s explore page and saw that &lt;a href="https://github.com/languages/Groovy"&gt;Groovy is the 22nd most popular language&lt;/a&gt;. I found &lt;a href="https://github.com/languages/Clojure"&gt;the 23rd most popular, which is Clojure&lt;/a&gt;, then clicked on the &lt;i&gt;most watched&lt;/i&gt; tab &lt;a href="https://github.com/languages/Groovy/most_watched"&gt;for&lt;/a&gt; e&lt;a href="https://github.com/languages/Clojure/most_watched"&gt;ach&lt;/a&gt;. Each listed the 200 most watched projects, so I&amp;#39;ve listed the info (starred and forked) for the top 10, plus every 20th. The results speak for themselves...&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; No &lt;/th&gt;&lt;th&gt; Gvy name &lt;/th&gt;&lt;th&gt; Gvy starred &lt;/th&gt;&lt;th&gt; Gvy forked &lt;/th&gt;&lt;th&gt; Clj name &lt;/th&gt;&lt;th&gt; Clj starred &lt;/th&gt;&lt;th&gt; Clj forked &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 1 &lt;/td&gt;&lt;td&gt; asgard &lt;/td&gt;&lt;td&gt; 755 &lt;/td&gt;&lt;td&gt; 101 &lt;/td&gt;&lt;td&gt; leiningen &lt;/td&gt;&lt;td&gt; 2175 &lt;/td&gt;&lt;td&gt; 370 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 2 &lt;/td&gt;&lt;td&gt; glu &lt;/td&gt;&lt;td&gt; 362 &lt;/td&gt;&lt;td&gt; 45 &lt;/td&gt;&lt;td&gt; clojurescript &lt;/td&gt;&lt;td&gt; 1812 &lt;/td&gt;&lt;td&gt; 193 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 3 &lt;/td&gt;&lt;td&gt; grails &lt;/td&gt;&lt;td&gt; 340 &lt;/td&gt;&lt;td&gt; 75 &lt;/td&gt;&lt;td&gt; compojure &lt;/td&gt;&lt;td&gt; 1392 &lt;/td&gt;&lt;td&gt; 108 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 4 &lt;/td&gt;&lt;td&gt; gradle-android-plugin &lt;/td&gt;&lt;td&gt; 212 &lt;/td&gt;&lt;td&gt; 59 &lt;/td&gt;&lt;td&gt; clojure-koans &lt;/td&gt;&lt;td&gt; 1035 &lt;/td&gt;&lt;td&gt; 484 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 5 &lt;/td&gt;&lt;td&gt; geb &lt;/td&gt;&lt;td&gt; 204 &lt;/td&gt;&lt;td&gt; 50 &lt;/td&gt;&lt;td&gt; overtone &lt;/td&gt;&lt;td&gt; 884 &lt;/td&gt;&lt;td&gt; 118 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 6 &lt;/td&gt;&lt;td&gt; Ratpack &lt;/td&gt;&lt;td&gt; 199 &lt;/td&gt;&lt;td&gt; 37 &lt;/td&gt;&lt;td&gt; incanter &lt;/td&gt;&lt;td&gt; 866 &lt;/td&gt;&lt;td&gt; 140 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 7 &lt;/td&gt;&lt;td&gt; gaelyk &lt;/td&gt;&lt;td&gt; 189 &lt;/td&gt;&lt;td&gt; 39 &lt;/td&gt;&lt;td&gt; ring &lt;/td&gt;&lt;td&gt; 800 &lt;/td&gt;&lt;td&gt; 150 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 8 &lt;/td&gt;&lt;td&gt; grails-doc &lt;/td&gt;&lt;td&gt; 138 &lt;/td&gt;&lt;td&gt; 118 &lt;/td&gt;&lt;td&gt; noir &lt;/td&gt;&lt;td&gt; 760 &lt;/td&gt;&lt;td&gt; 105 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 9 &lt;/td&gt;&lt;td&gt; twitter-bootstrap-scaffold &lt;/td&gt;&lt;td&gt; 137 &lt;/td&gt;&lt;td&gt; 79 &lt;/td&gt;&lt;td&gt; aleph &lt;/td&gt;&lt;td&gt; 747 &lt;/td&gt;&lt;td&gt; 52 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 10 &lt;/td&gt;&lt;td&gt; groovy-wslite &lt;/td&gt;&lt;td&gt; 119 &lt;/td&gt;&lt;td&gt; 21 &lt;/td&gt;&lt;td&gt; cascalog &lt;/td&gt;&lt;td&gt; 714 &lt;/td&gt;&lt;td&gt; 88 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 20 &lt;/td&gt;&lt;td&gt; maven2gradle &lt;/td&gt;&lt;td&gt; 64 &lt;/td&gt;&lt;td&gt; 19 &lt;/td&gt;&lt;td&gt; Korma &lt;/td&gt;&lt;td&gt; 444 &lt;/td&gt;&lt;td&gt; 79 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 40 &lt;/td&gt;&lt;td&gt; grails-spring-security-ui &lt;/td&gt;&lt;td&gt; 44 &lt;/td&gt;&lt;td&gt; 31 &lt;/td&gt;&lt;td&gt; cheshire &lt;/td&gt;&lt;td&gt; 264 &lt;/td&gt;&lt;td&gt; 18 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 60 &lt;/td&gt;&lt;td&gt; grails-executor &lt;/td&gt;&lt;td&gt; 33 &lt;/td&gt;&lt;td&gt; 6 &lt;/td&gt;&lt;td&gt; pinot &lt;/td&gt;&lt;td&gt; 193 &lt;/td&gt;&lt;td&gt; 11 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 80 &lt;/td&gt;&lt;td&gt; mongodb-grails &lt;/td&gt;&lt;td&gt; 26 &lt;/td&gt;&lt;td&gt; 4 &lt;/td&gt;&lt;td&gt; clutch &lt;/td&gt;&lt;td&gt; 150 &lt;/td&gt;&lt;td&gt; 30 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 100 &lt;/td&gt;&lt;td&gt; zkui &lt;/td&gt;&lt;td&gt; 22 &lt;/td&gt;&lt;td&gt; 9 &lt;/td&gt;&lt;td&gt; lib-noir &lt;/td&gt;&lt;td&gt; 120 &lt;/td&gt;&lt;td&gt; 15 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 120 &lt;/td&gt;&lt;td&gt; grails-oauth &lt;/td&gt;&lt;td&gt; 19 &lt;/td&gt;&lt;td&gt; 14 &lt;/td&gt;&lt;td&gt; lein-droid &lt;/td&gt;&lt;td&gt; 105 &lt;/td&gt;&lt;td&gt; 7 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 140 &lt;/td&gt;&lt;td&gt; spock-grails &lt;/td&gt;&lt;td&gt; 17 &lt;/td&gt;&lt;td&gt; 5 &lt;/td&gt;&lt;td&gt; clojure-tco &lt;/td&gt;&lt;td&gt; 93 &lt;/td&gt;&lt;td&gt; 3 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 160 &lt;/td&gt;&lt;td&gt; grails-remote-control &lt;/td&gt;&lt;td&gt; 15 &lt;/td&gt;&lt;td&gt; 2 &lt;/td&gt;&lt;td&gt; clojurejs &lt;/td&gt;&lt;td&gt; 81 &lt;/td&gt;&lt;td&gt; 10 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 180 &lt;/td&gt;&lt;td&gt; CodeNarc &lt;/td&gt;&lt;td&gt; 13 &lt;/td&gt;&lt;td&gt; 10 &lt;/td&gt;&lt;td&gt; waltz &lt;/td&gt;&lt;td&gt; 74 &lt;/td&gt;&lt;td&gt; 11 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 200 &lt;/td&gt;&lt;td&gt; siloe &lt;/td&gt;&lt;td&gt; 12 &lt;/td&gt;&lt;td&gt; 11 &lt;/td&gt;&lt;td&gt; zookeeper-clj &lt;/td&gt;&lt;td&gt; 69 &lt;/td&gt;&lt;td&gt; 6 &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;This Github data shows Clojure way ahead of Groovy in developer interest and forking, whereas the &lt;i&gt;Github Lines Changed&lt;/i&gt; shows Groovy ahead! How does this happen? The reason&amp;#39;s simple: &lt;b&gt;the &lt;i&gt;Github Lines Changed&lt;/i&gt; data is being used to measure popularity in a poll&lt;/b&gt;. The very act of measuring it changes the data itself because someone exists who&amp;#39;s using the poll data to present Groovy in a certain way.&lt;br /&gt;&lt;br /&gt;After Groovy dropped from #25 to #65 &lt;i&gt;in a single month&lt;/i&gt; (April 2011) on TIOBE when they suddenly changed their measuring metrics, the data from Stack Overflow started being gamed a month later, with many made-up questions starting to appear every day. It seems someone may have started gaming Github at the same time, specifically to target this Corger poll, which gets linked to frequently on Reddit and DZone, especially before a Groovy/Grails conference.&lt;br /&gt;&lt;br /&gt;If want to see it for yourself, though, &lt;b&gt;you&amp;#39;d better be quick&lt;/b&gt;! Now that I&amp;#39;ve published this measurement, there&amp;#39;s someone out there who wants to change it with meaningless updates on Github. It&amp;#39;s amazing what middlemen will do to justify their existence.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 Mar 2013&lt;/i&gt;&lt;br /&gt;Seems the Groovy documentation effort has been cancelled. Champeau let slip that &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/Groovy-Gradle-and-Documentation-tt5713461.html#a5713466"&gt;neither he, Jochen, Guillaume or Paul will have time to work on ... a planned rewrite of GroovyDoc for Groovy 2.2&lt;/a&gt;&amp;quot;.&lt;br /&gt;&lt;br /&gt;In other news... Laforge leaked that &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/Groovy-scripts-as-Spring-Beans-tt5713411.html#a5713412"&gt;down the road, there&amp;#39;s going to be a big Spring + Groovy theme in the next major Spring framework versions&lt;/a&gt;&amp;quot;. Laforge is probably &lt;i&gt;going public&lt;/i&gt; on something the Spring developers have only tentatively agreed to, a cheap negotiation tactic. What&amp;#39;s really happening is Rocher&amp;#39;s building a Grails-Spring stack, to fight the TypeSafe stack created by former SpringSource CEO Rod Johnson, who jumped a sinking ship to become TypeSafe board chair last year. The &amp;quot;big Spring + Groovy theme&amp;quot; Laforge is pestering for &lt;i&gt;(anything beats cutting code or building tests or writing doco)&lt;/i&gt; is a snipe at &lt;a href="http://blog.springsource.org/2012/12/10/introducing-spring-scala"&gt;Arjen Poutsma&amp;#39;s Spring Scala project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Rocher intends being the boss of this planned Grails-Spring stack&lt;/b&gt;. No longer needing the fiction of Groovy being an independent open source project, he&amp;#39;ll then fork both Groovy and GPars, rename it all to SpringLang or something, then bring back some of Theodorou, Champeau, King, Pech, and Winder &lt;i&gt;(he&amp;#39;ll ditch Laforge)&lt;/i&gt; on his own terms, playing them off against each other. This is &lt;b&gt;the true nature of the community that underlies Rocher&amp;#39;s Groovy/Grails ecosystem&lt;/b&gt;. Grails is now a 115Mb download, and Gradle a 50Mb download: their real purpose is to take over the primary distribution channels of existing Java software, then bring in the bucks for those at the top of the pyramid scheme when SpringSource and Gradleware are flipped to the likes of Oracle.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;4 Mar 2013&lt;/i&gt;&lt;br /&gt;I took another look at &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-td5712875.html"&gt;Laforge&amp;#39;s deceitful email announcing Groovy&amp;#39;s &amp;quot;documentation effort and site design&amp;quot; last month&lt;/a&gt;. After the saccharine-sick marketing blurb in the first paragraph, he wrote:&lt;br /&gt;&lt;br /&gt;&amp;quot;... However, one area where &lt;b&gt;the Groovy project can do better is with its documentation&lt;/b&gt;. For instance, if you read the recent DrDobbs editorial, there were some valid points made on this topic. And it&amp;#39;s true that our documentation can be greatly improved. Despite its 1000+ pages of wiki content, it&amp;#39;s hard to find the information you&amp;#39;re looking for, it&amp;#39;s of very uneven quality and style, lots of pages are outdated or show samples with mistakes in them, and there are also holes for features not covered or not explained in details. We&amp;#39;re launching an effort towards &lt;b&gt;overhauling our documentation and web presence&lt;/b&gt;. And I&amp;#39;d love if you could take part in that effort, even if only by telling us about your expectations &lt;b&gt;regarding the website, the documentation, etc.&lt;/b&gt;, or even by helping us authoring content, of course. For the website, we&amp;#39;ll need ...&amp;quot; &lt;i&gt;[bolding as in original]&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Notice the switch? Look at what Laforge bolded:
&lt;ul&gt;&lt;li&gt;first, he accepted Binstock&amp;#39;s criticism of Groovy&amp;#39;s lack of proper documentation&lt;/li&gt;
&lt;li&gt;then, he announced he&amp;#39;s launching an overhaul of Groovy&amp;#39;s documentation &lt;b&gt;and web presence&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;finally, he moved his reference to &lt;b&gt;the website&lt;/b&gt; before &lt;i&gt;&amp;quot;the documentation, etc&amp;quot;&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;
Everything &lt;a href="http://groovy.329449.n5.nabble.com/Website-Doc-Overview-of-the-website-and-documentation-overhaul-td5713361.html"&gt;he&amp;#39;s written since&lt;/a&gt; talks about the website redesign &lt;b&gt;before&lt;/b&gt; the documentation work. Non-technical phoney managers like Laforge are always pushing through their own agendas at the expense of what&amp;#39;s really required.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;1 Mar 2013&lt;/i&gt;&lt;br /&gt;Laforge has just published &lt;a href="http://groovy.329449.n5.nabble.com/Website-Doc-Overview-of-the-website-and-documentation-overhaul-td5713361.html"&gt;a plan of what he wants the Codehaus grbdvy website and documentation&lt;/a&gt; to look like, with fish hooks for unpaid volunteers disguised as &lt;i&gt;requests for feedback&lt;/i&gt;. Yep, the Groovy 3 MOP rewrite and Groovy 4 Antlr upgrade have been cancelled, &lt;b&gt;all the &amp;quot;full-time developers&amp;quot; are being charged out to clients full-time instead&lt;/b&gt;, and the &amp;quot;project manager&amp;quot; has intensified his marketing and recruiting activities &lt;i&gt;(recruiting for unpaid volunteers, that is)&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;With all VMWare funding for developers turned off and no fresh-of-the-boat programmer volunteers on hand, Laforge is &lt;b&gt;hiding his lack of any technical talent behind non-technical &amp;quot;progress&amp;quot;&lt;/b&gt; such as the website redesign, learning mind map software (a project plan with dates and dependencies was too much to master), and deceitful marketing talk, such as this classic: &amp;quot;&lt;i&gt;we&amp;#39;ll be contacting you guys to see who would be interested in participating in case studies to chat about why you are using Groovy, why you chose that technology, in which context, what benefits did you gain, what you would like to see improved, etc.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;18 Feb 2013&lt;/i&gt;&lt;br /&gt;&lt;a href="http://groovy.329449.n5.nabble.com/Groovy-community-website-td5713095.html"&gt;Jochen Theodorou wrote, probably on behalf of Laforge&lt;/a&gt;: &amp;quot;&lt;i&gt;I think there should be a webpage dedicated to make projects &lt;b&gt;using Groovy&lt;/b&gt; known. ... I would also like to include blogs, articles and tutorials, plus a comfortable way to search.&lt;/i&gt;&amp;quot; The first to reply was &lt;a href="http://grooscript.org"&gt;GrooScript creator Jorge Franco Leza&lt;/a&gt;, asking &amp;quot;&lt;i&gt;When I do some release in my little project, what I do? where do I announce that?&lt;/i&gt;&amp;quot;. Because GrooScript &lt;b&gt;&lt;i&gt;implements&lt;/i&gt;&lt;/b&gt; Groovy rather than uses the SpringSource/Codehaus version, would it be allowed on Jochen&amp;#39;s page? What about when &lt;b&gt;&lt;i&gt;my own reboot of Groovy atop Clojure&lt;/i&gt;&lt;/b&gt;, currently at v 0.5, is ready for beta testing? In fact, &lt;a href="http://groovy.io"&gt;someone just happens to be prototyping such a new Groovy website now&lt;/a&gt; - what a coincidence!?! Just who controls what projects and tutorials get added to the site?&lt;br /&gt;&lt;br /&gt;All the latest sudden activity expanding Groovy&amp;#39;s web presence happens around now &lt;b&gt;&lt;i&gt;every&lt;/i&gt;&lt;/b&gt; year. The European Gr8te conference is coming in May, and Laforge needs to get Groovy back into the search engines, back onto the rankings like the Tiobe Top 50, so claims about Groovy&amp;#39;s popularity sound more plausible when selling seats. And Laforge wants the linked websites to generate revenue for Codehaus and SpringSource. The &lt;a href="http://www.google.com/search?num=100&amp;amp;hl=en&amp;amp;tbo=d&amp;amp;site=&amp;amp;source=hp&amp;amp;q=groovy+programming&amp;amp;btnK=Google+Search"&gt;top 3 links in Google for &amp;quot;groovy programming&amp;quot;&lt;/a&gt; include a comprehensive 5-yr old tutorial I wrote on Groovy 1.5 for non-Java programmers. Because each page packs in a lot of info, that&amp;#39;s less Google Ads revenue for Codehaus. Laforge intends &lt;b&gt;&lt;i&gt;spoiling that link under cover of his documentation rewrite&lt;/i&gt;&lt;/b&gt;, to nudge up content-sparse pages &lt;b&gt;he controls&lt;/b&gt;, like groovy.io.&lt;br /&gt;&lt;br /&gt;Instead of rehashing his old line about Groovy making programming fun on ad-heavy webpages, or showing off endless pictures of abacuses and looms in powerpoints on DSL&amp;#39;s, Laforge should be writing &lt;b&gt;&lt;i&gt;actual content to help developers be productive&lt;/i&gt;&lt;/b&gt;. If he really wanted Groovy to be fun, he&amp;#39;d be shouting the &lt;b&gt;groovy growl&lt;/b&gt;, the &lt;b&gt;ooooooo&lt;/b&gt;, and the &lt;b&gt;veeeeey&lt;/b&gt;! But to Laforge, Groovy is just an opportunity to extract revenue from corporates giving their developers a Copenhagen beer junket, and to promote his own name to IT shops in case SpringSource&amp;#39;s new owner retrenches everyone who can&amp;#39;t pass a basic programming aptitude test.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;17 Feb 2013&lt;/i&gt;&lt;br /&gt;Word&amp;#39;s out the business line VMWare wants to exit is SpringSource with Cloud Foundry stripped out. Seems Rocher&amp;#39;s been telling Oracle and JBoss if they buy SpringSource, he can cripple the static compilation mode in Groovy and nudge developers towards Java or Ceylon. So &lt;b&gt;if you use the new CompileStatic mode in Groovy, not only is it buggy but it might not even be supported soon&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;16 Feb 2013&lt;/i&gt;&lt;br /&gt;Groovy 2.1, although officially released, is still in unofficial beta testing for inclusion in Grails 2.3, to be released in May 2013 for the SpringSource European Gr8te conference, &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03#15"&gt;just as Groovy 2.0&amp;#39;s official release was just an extended beta test for Grails 2.2&lt;/a&gt;. Groovy was long ago hijacked by Rocher to snare programmers into Grails conference seats. Expect to see Groovy 2.2 renamed to version 3.0 &amp;quot;to sync the version number with Grails 3&amp;quot;. But really it&amp;#39;s all about further delaying the MOP rewrite from Groovy 3 to 4 without &lt;a href="http://groovy.329449.n5.nabble.com/Release-Grumpy-Mode-td4978117.html"&gt;the outcry when it was delayed from Groovy 2 to 3&lt;/a&gt;. Rocher&amp;#39;s more interested in pocketing the money from flogging Grails conferences and consulting than investing in a proper MOP or grammar in Groovy so it can be more than a has-been language. And Laforge does whatever Rocher tells him to - the price of a single-track speaking slot in the conferences. No-one would listen to Laforge speak if Rocher was speaking at the same time in the other room.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;15 Feb 2013&lt;/i&gt;&lt;br /&gt;Looks like &lt;a href="http://groovy.329449.n5.nabble.com/Heads-up-on-upcoming-releases-td5713054.html"&gt;Rocher&amp;#39;s just cancelled the Groovy MOP rewrite, through his paid proxy Laforge talking about an unscheduled v 2.2 release&lt;/a&gt;, as &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog04#4"&gt;predicted by my other half&lt;/a&gt;. The rewrite was just an empty promise to string along developer Jochen Theodorou all these years. Rocher&amp;#39;s management of Groovy/Grails is all about investing as little as possible to squeeze out as much as possible. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;13 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="5"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#5"&gt;Groovy Buzzwords&lt;/a&gt;&lt;/h1&gt;
Laforge reacted to Binstock&amp;#39;s analysis by &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-td5712875.html"&gt;announcing a &amp;quot;documention effort and site redesign&amp;quot;&lt;/a&gt;: &amp;quot;&lt;i&gt;Groovy is a very mature and widely used language on the Java platform, with hundred thousands of developers worldwide. It&amp;#39;s stable and fast, flexible and readable, has got plenty of interesting use cases (DSLs, testing...), is feature-packed, and it&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few). However, one area where the Groovy project can do better is with its documentation.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s look at the truth behind all this verbiage...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Documentation effort and site redesign&lt;/b&gt;&lt;/i&gt;: Laforge is redesigning the website, perceiving Groovy&amp;#39;s problem as an image problem, but hiding it behind a &amp;quot;documentation effort&amp;quot;. The website was redesigned a mere 15 months ago. Before then the documention contents were &lt;i&gt;one click away&lt;/i&gt;, but were split into four separate pages, each two clicks away, much less convenient for Groovy users but it meant more GoogleAds revenue for Codehaus and more users needing consultancy services from SpringSource. Laforge is just pretending to care about documentation.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is a very mature language on the Java platform&lt;/b&gt;&lt;/i&gt;: Groovy is declining, at the end of its life. When GPars was released at version 1.0 after being bundled in Groovy for years, it was also announcing its own end-of-life. SpringSource and Codehaus are now milking Groovy for all they can get.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is widely used, with hundreds thousands of developers worldwide&lt;/b&gt;&lt;/i&gt;: All claims, no proof. Whenever challenged, Laforge says his clients don&amp;#39;t want to be named. More likely he doesn&amp;#39;t want them poached by someone who hasn&amp;#39;t signed his contracts.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is fast&lt;/b&gt;&lt;/i&gt;: Dynamically compiled Groovy is slo.oo.ooo.oooo.ooooo.oooo.ooo.oo.ow, as Binstock was careful to point out.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is stable&lt;/b&gt;&lt;/i&gt;: Statically compiled Groovy is bug-ug-ugg-uggy. Only last week, &lt;a href="http://stackoverflow.com/questions/14774709/groovy-2-1-0-weird-behaviour-of-switch-case-break-statement-with-compilestatic"&gt;a serious static compilation bug in Groovy 2.1.0 was reported&lt;/a&gt;. Although officially released in June 2012, Groovy 2.0 really wasn&amp;#39;t released for production use until it was bundled as part of Grails 2.2 in Dec 2012. The 6 months from June to December was unofficially &lt;b&gt;just more beta-testing with a larger base of users&lt;/b&gt;, namely those who download standalone releases of Groovy. Grails, however, doesn&amp;#39;t use any of the static compilation features in Groovy 2.0. All the testing of Groovy 2.0 was just to &lt;b&gt;make sure the inclusion of static compilation in Groovy didn&amp;#39;t break any of its dynamic compilation use in Grails&lt;/b&gt;. On the day after the Grails 2.2 release came the first beta of Groovy 2.1, which has since been officially released standalone, but hasn&amp;#39;t yet shipped with Grails. Once again, Groovy&amp;#39;s timeline is determined solely by the needs of Grails.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is flexible&lt;/b&gt;&lt;/i&gt;: Laforge is just spewing buzzwords here. To me, flexible means unhindered by syntax contraints. Clojure allows easy code reorganization and macro-level syntactic manipulation, far more flexible than Groovy.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is readable&lt;/b&gt;&lt;/i&gt;: Some people find the indention used by Python and Haskell most readable, while others find the balanced brackets used by C, Java, Javascript, Scala, Groovy, and PHP more readable. &lt;b&gt;Groovy 0.5 here at Codeplex is a proof-of-concept prototype showing how Groovy-style syntax can easily be built atop Clojure&lt;/b&gt;, which, unlike Groovy, also runs atop the .NET and Javascript platforms. Why be constrained by Groovy&amp;#39;s Antlr 2.7 based grammar when we can write our own atop Clojure?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=622834" alt="ChineseCheckers.png" title="ChineseCheckers.png" /&gt; &lt;i&gt;&lt;b&gt;Groovy has got plenty of interesting use cases (DSLs, testing)&lt;/b&gt;:&lt;/i&gt; DSL is just another buzzword. Dropping semicolons, commas, and parentheses from a syntax doesn&amp;#39;t a DSL make. IDE&amp;#39;s put them in automatically without needing to type them anyway. Virtually every language has testing frameworks.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is feature-packed&lt;/b&gt;&lt;/i&gt;: More &amp;quot;features&amp;quot; means more need for consultants and conferences. Some old features such as interceptors no longer work properly. Many new features, such as static compilation and invoke dynamic, are not production ready. In both Groovy 2.0 and 2.1, the code using invoke-dynamic is bundled in a separate jar-file which only runs on Java 7. Grails and Gradle don&amp;#39;t bundle this other invoke-dynamic jar file, and don&amp;#39;t intend to for Grails 2.3 and Groovy 2.1. The Groovy roadmap claims a new MOP will be written atop this invoke-dynamic jarfile, and ship as the sole jar in Groovy 3, but every time in the past when Theodorou&amp;#39;s started on the MOP, he&amp;#39;s been redeployed. I don&amp;#39;t believe Rocher intends to pay for it. Even if it was done, how long would it take? Other statically-typed JVM languages like Scala, Kotlin, and Ceylon are coming quickly. Scala is rising, Kotlin has IntelliJ as a delivery channel, and Ceylon has JBoss backing it.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few)&lt;/b&gt;:&lt;/i&gt; Only 2 of these have any traction in industry, and even Gradle&amp;#39;s uptake is iffy. If there were any other successful projects, Laforge would&amp;#39;ve mentioned them.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;One area where the Groovy project can do better is with its documentation&lt;/b&gt;&lt;/i&gt;: What Laforge should have said was &amp;quot;&lt;i&gt;Because I can&amp;#39;t code, I should&amp;#39;ve made myself useful by writing documentation instead. I never did, and accept responsibility for Groovy&amp;#39;s failure in this area.&lt;/i&gt;&amp;quot; But Laforge is even incapable of writing correct documentation, as shown by &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog02#7"&gt;his buggy Mars Rover attempt&lt;/a&gt;, let alone accepting responsibility for it. Laforge is second only to Rocher for causing Groovy&amp;#39;s terminal decline.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="4"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#4"&gt;Groovy Confusion&lt;/a&gt;&lt;/h1&gt;
Once again, mixed messages are coming out regarding the Codehaus version of the Groovy Language.&lt;br /&gt;&lt;br /&gt;On 26 June 2012, Tech Lead Jochen Theodorou &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-tt5710334.html"&gt;announced he was beginning work on Groovy 3&lt;/a&gt;, kicking off a discussion thread with 90 replies. I asked if &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-td5710334.html#a5710338"&gt;Groovy 3 will contain a new MOP&lt;/a&gt;, to which Guillaume Laforge replied with the passive voice &amp;quot;The MOP needs to be rewritten&amp;quot;. But the MOP rewrite wasn&amp;#39;t begun.&lt;br /&gt;&lt;br /&gt;On 11 January Jochen announced &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-tt5712419.html"&gt;I will now start the implementation of the new MOP&lt;/a&gt;&amp;quot;. Graeme Rocher said he &lt;b&gt;wanted binary compatibility and ability to run old compiled Groovy code&lt;/b&gt;. Suspecting Rocher was setting up the cancellation of the MOP rewrite, I asked if &lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-td5712419.html#a5712427"&gt;VMWare&amp;#39;s not willing to pay for Jochen to rewrite the MOP if it doesn&amp;#39;t do exactly what the current one does?&lt;/a&gt; Rocher got defensive with the impersonal &amp;quot;the new MOP needs writing&amp;quot;.&lt;br /&gt;&lt;br /&gt;A week ago, VMWare told the US SEC they intended retrenching 900 workers and exiting some business lines. They didn&amp;#39;t say if they would trim up SpringSource before they sell it to JBoss, or if they would sell it to Oracle as a white elephant ripe for trimming.&lt;br /&gt;&lt;br /&gt;Two days ago, Laforge &lt;a href="http://www.infoq.com/news/2013/02/Groovy2_1_Release#.UREiSUHeTs0.dzone"&gt;dug into his posting quota on InfoQ to announce Groovy 2.1&amp;#39;s release&lt;/a&gt; a week late &lt;i&gt;(perhaps he was too busy being re-interviewed for his own job, and traded in a real developer like Champeau to save his own skin)&lt;/i&gt;. Even though Laforge didn&amp;#39;t do any technical work on Groovy 2.1, he kept on refering to &amp;quot;we&amp;quot;, putting people off by not acknowledging any of the actual programmers such as Jochen or Fred Janon in the InfoQ article or the linked-to release notes. Laforge also put people off with meaningless marketing talk, such as &lt;i&gt;&amp;quot;Groovy 2.1’s distribution bundles the recently released GPars 1.0&amp;quot;&lt;/i&gt;. Groovy has bundled the latest version of GPars for years. When GPars changed its version number to 1.0, both Groovy 2.0.x and 2.1 upgraded to it like they always had.&lt;br /&gt;&lt;br /&gt;Yesterday, Dr Dobbs editor Andrew Binstock wrote &lt;a href="http://www.drdobbs.com/jvm/the-groovy-conundrum/240147731"&gt;some pessimistic views on Codehaus Groovy&amp;#39;s future&lt;/a&gt;. He was diplomatic, though, e.g. &lt;i&gt;&amp;quot;Keying off ideas prototyped by Alex Tkachman, the Groovy team added static typing&amp;quot;&lt;/i&gt;. That&amp;#39;s putting it nicely. Unfortunately, he also neglected to mention Theodorou&amp;#39;s name anywhere, the technical guru who did most of the work, even though he managed to mention project manager Laforge. I suspect Laforge sent him some Q&amp;amp;A copy regarding Groovy 2.1, but Dr Dobbs isn&amp;#39;t InfoQ. Binstock instead published an analysis. His conclusion...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;quot;[Groovy is] a language primed to be a major player. There is the conundrum. The endless variety of features requires considerable documentation, which is simply not available, especially for the advanced features that give Groovy much of its benefit. And so, if you jump in today, you&amp;#39;ll find the language is easy to learn, but hard to master. Fortunately, this limitation is not incurable. However, time is of the essence as Groovy&amp;#39;s principal competitor for the hearts and minds of Java developers — Scala — has a small, laser-focused company behind it, which revs the product frequently and generates considerable documentation. If Groovy acts soon, it can retain leadership among Java alternatives. If not, it will have to resign itself to being an also-ran.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Binstock misses the point of Grails and Groovy&amp;#39;s business model. A lack of usable documentation means developers must pay for SpringSource consultants and seats at conferences, where lots of money is made and divvied up. By throwing in endless features, they increase the complexity of Groovy and the need for consultants from the supply side, just as the lack of documentation creates the need for conferences from the demand side. The Groovy &amp;quot;Bible&amp;quot; didn&amp;#39;t bring in much profit for its authors so why should they bother with a 2nd edn? Grails and Groovy is about making money &lt;i&gt;now&lt;/i&gt; for those involved, not investing it. Even the &lt;b&gt;&amp;quot;groovymag&amp;quot; charges money for an online subscription, while the &amp;quot;Week with Scala&amp;quot; is free!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If someone seriously creates independent doco for Groovy, the next version of Groovy changes slightly to lessen the value of the doco and increase the need for a consultant or conference. They keep a tight gateway over their test suites. I&amp;#39;ve experienced this first-hand. When I was writing free online doco for Groovy 5 yrs ago, &lt;b&gt;sociopath Rocher just couldn&amp;#39;t relate as an equal partner to me in a bazaar&lt;/b&gt;. He just had to prod people into targeting me, eventually destroying my desire to make Groovy simple to use, so he could keep as much of the take as possible at the top reaches of the cathedral.&lt;br /&gt;&lt;br /&gt;Binstock does &lt;b&gt;correctly conclude Groovy will soon be an also-ran&lt;/b&gt; because of that business strategy. Rod Johnson, former CEO of Grails company SpringSource, is now leading the board of that laser-focused Scala company. He no doubt understands the value of &amp;quot;taking a cut of a huge pie&amp;quot; instead of &amp;quot;owning all of a tiny pie&amp;quot;, and is investing in growing Scala instead of strangling it. The project managers behind Groovy, Rocher and Laforge, are probably incapable of changing their ingrained habits to steer Groovy in a new direction. They will, however, take something else away from Binstock&amp;#39;s analysis: that Groovy needs a new name for version 3. Yes, they&amp;#39;ll see a brand perception problem, rather than a widely recognized lack-of-documentation problem, and they&amp;#39;ll get busy creating a new imagery for Groovy, instead of making it easy for people to master.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="3"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#3"&gt;Roadmap&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;I&amp;#39;m moving the roadmap from its own page to this blog entry...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The Groovy Language here at Codeplex will be built with Unicode graphemes, unlike most programming languages (e.g. the fake Groovy at Codehaus) which are built solely with Ascii tokens, with bare Unicode codepoints added in as an afterthought. The rough roadmap for evolving Groovy, beginning with lower numbered items, is...&lt;br /&gt;
&lt;h3&gt;1. Groovy Grammar&lt;/h3&gt;Build a recursive-descent parsing library that can look at the internal structure of CJK tokens, and &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20Grammar%20for%20Programming&amp;referringTitle=Blog04"&gt;define the Groovy grammar&lt;/a&gt;. The grammar atop Clojure will enable developers to extend the Groovy syntax easily using parser-level macros. &lt;a href="http://groovy.codeplex.com/releases/view/91000"&gt;The latest version&lt;/a&gt; can parse a healthy subset of the Groovy grammar.&lt;br /&gt;
&lt;h3&gt;2. GUI with IME&lt;/h3&gt;Create a GUI with a input method editor (IME) to enable all Unicode tokens to be entered easily, and a J-style interactive learning environment for the Groovy Language syntax. Use &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20for%20Java%20Newbies&amp;referringTitle=Blog04"&gt;these 3-yr-old notes for learning Groovy 1.5&lt;/a&gt; as a base for writing a comprehensive test suite.&lt;br /&gt;
&lt;h3&gt;3. Unicode Properties&lt;/h3&gt;We&amp;#39;ll use &lt;a href="http://groovy.codeplex.com/wikipage?title=Unicode%20Inheritance&amp;referringTitle=Blog04"&gt;inheritance hierarchies&lt;/a&gt; to represent all the Unicode characters, one for the codepoints based on the general category and certain relevant boolean properties, the other for various decompositions. We&amp;#39;ve yet to analyze the information inside the Unihan variant data.&lt;br /&gt;
&lt;h3&gt;4. CJK Decomposition Data&lt;/h3&gt;The CJK Decomposition Data File is a graphical analysis of the approx 75,000 Chinese/Japanese characters in Unicode. They utilize approx 11,000 intermediate decompositions which are not themselves in Unicode. See &lt;a href="http://cjkdecomp.codeplex.com"&gt;the main project site&lt;/a&gt; for more details. The latest version, 0.4.0, was released on 15 August 2012. See also some notes on &lt;a href="http://groovy.codeplex.com/wikipage?title=Reflection%20and%20repetitions%20in%20the%20CJK%20decomposition%20data&amp;referringTitle=Blog04"&gt;using reflection in the CJK decompositions&lt;/a&gt;. We&amp;#39;ll use these decomps to design the IME keys for entering CJK tokens into the Groovy GUI.&lt;br /&gt;
&lt;h3&gt;5. Peer-to-Peer Engine&lt;/h3&gt;Enable the most common operator symbols and foreign-language names to be shared automatically between Groovy IME&amp;#39;s using a peer-to-peer protocol so developers will know the most commonly used names and symbols when writing code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;6 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="2"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#2"&gt;Unicode Pattern Syntax Tokens&lt;/a&gt;&lt;/h1&gt;
Each of the million-plus Unicode characters has about 50 properties associated with it. Most of them can change between different versions of Unicode or for defining private-use characters, except for six of them:
&lt;ul&gt;&lt;li&gt;Name (na)&lt;/li&gt;
&lt;li&gt;Jamo Short Name (jsn)&lt;/li&gt;
&lt;li&gt;Canonical Combining Class (ccc)&lt;/li&gt;
&lt;li&gt;Decomposition Mapping (dm)&lt;/li&gt;
&lt;li&gt;Pattern Syntax (PatSyn)&lt;/li&gt;
&lt;li&gt;Pattern White Space (PatWS)&lt;/li&gt;&lt;/ul&gt;
The first four will change from their default to a lifelong value for newly assigned characters, though. The other two, Pattern Syntax and Pattern White Space properties, both boolean values, will never change even when the character is being newly assigned. Only 11 characters have the PatWS property so they&amp;#39;re not as interesting as those with the PatSyn property, 2760 of them, 296 of which are still unassigned in Unicode 6.1.&lt;br /&gt;&lt;br /&gt;The unassigned characters are given the PatSyn property by defining all characters in certain blocks (rather than characters) as having the PatSyn property:
&lt;ul&gt;&lt;li&gt;2190..21FF; Arrows&lt;/li&gt;
&lt;li&gt;2200..22FF; Mathematical Operators&lt;/li&gt;
&lt;li&gt;2300..23FF; Miscellaneous Technical&lt;/li&gt;
&lt;li&gt;2400..243F; Control Pictures&lt;/li&gt;
&lt;li&gt;2440..245F; Optical Character Recognition&lt;/li&gt;
&lt;li&gt;2500..257F; Box Drawing&lt;/li&gt;
&lt;li&gt;2580..259F; Block Elements&lt;/li&gt;
&lt;li&gt;25A0..25FF; Geometric Shapes&lt;/li&gt;
&lt;li&gt;2600..26FF; Miscellaneous Symbols&lt;/li&gt;
&lt;li&gt;2700..27BF; Dingbats&lt;/li&gt;
&lt;li&gt;27C0..27EF; Miscellaneous Mathematical Symbols-A&lt;/li&gt;
&lt;li&gt;27F0..27FF; Supplemental Arrows-A&lt;/li&gt;
&lt;li&gt;2800..28FF; Braille Patterns&lt;/li&gt;
&lt;li&gt;2900..297F; Supplemental Arrows-B&lt;/li&gt;
&lt;li&gt;2980..29FF; Miscellaneous Mathematical Symbols-B&lt;/li&gt;
&lt;li&gt;2A00..2AFF; Supplemental Mathematical Operators&lt;/li&gt;
&lt;li&gt;2B00..2BFF; Miscellaneous Symbols and Arrows&lt;/li&gt;
&lt;li&gt;2E00..2E7F; Supplemental Punctuation&lt;/li&gt;&lt;/ul&gt;
From these, 30 exceptions (0x2776..0x2793) are subtracted, and 150 are added. The added exceptions include the ASCII symbol and punctuation characters often used for syntax in programming languages.&lt;br /&gt;&lt;br /&gt;According to Unicode standard annex 31: &lt;i&gt;&amp;quot;With a fixed set of whitespace and syntax code points, a pattern language can then have a policy requiring all possible syntax characters (even ones currently unused) to be quoted if they are literals. Using &lt;b&gt;this policy preserves the freedom to extend the syntax in the future by using those characters&lt;/b&gt;. Past patterns on future systems will always work; future patterns on past systems will signal an error instead of silently producing the wrong results.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There are, of course, many other symbol and punctuation characters in Unicode that aren&amp;#39;t Pattern Syntax characters, and more can be added that can&amp;#39;t become Pattern Syntax characters (unless they&amp;#39;re encoded in one of the remaining 296 unassigned Pattern Syntax slots). The only language I know of that utilizes Unicode&amp;#39;s pattern syntax invariance is XML 1.0, 5th edn. Perhaps the Groovy Language reboot will be the first Turing-complete language to do so.&lt;br /&gt;&lt;br /&gt;47 of the 2464 assigned Pattern Syntax are canonically equivalent to other forms, so can be ignored. 45 of those decompositions are to some other Pattern Syntax character followed by nonspacing mark 0x338( ̸ ), e.g. ≠ is = then mark ̸ . The other two, 0x2329 and 0x232A, are singleton decompositions to 0x3008(〈) and 0x3009(〉), both also Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Within the assigned pattern characters, perhaps the second most important distinction are the bidi-mirroring glyphs, those with the &lt;i&gt;bmg&lt;/i&gt; property, each of which must be swapped for its complement when used within a right-to-left rendering context, such as within Arabic and Hebrew text. There are 144 pairs of them, such as ( and ), or [ and ]. Because such pairs are used extensively in programming languages, with balancing often required to make language syntax more readable, they are an important subset of the Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Perhaps another important subset of the Pattern Syntax are the 161 bidi-mirrored characters, those with the &lt;i&gt;bidim&lt;/i&gt; property, unmatched characters which must be mirrored when rendering, e.g. ∁ ∂ ∃ ∑ . A further subset could be characters that would be bidi-mirrored but aren&amp;#39;t because they&amp;#39;re already symmetrical, e.g. ∀ ∩ ∪ . They&amp;#39;re not indicated by any specific property, but must be guessed at based on their physical proximity to related bidi-mirrored characters in the Unicode database, e.g. ∃ is bidi-mirrored so ∀ must be symmetrical. Perhaps a specific property in a future version of Unicode would be nice.&lt;br /&gt;&lt;br /&gt;There&amp;#39;s many other Pattern Syntax characters that aren&amp;#39;t symmetrical but also aren&amp;#39;t mirroring or mirrored in a right-to-left rendering context because they&amp;#39;re considered to be &lt;i&gt;pictorial&lt;/i&gt; or &lt;i&gt;ornate&lt;/i&gt; characters, including those for box-drawing and all the arrows, such as 0x2190(←) and 0x2192(→). Unlike the Pattern Syntax property, the bidi properties of a character can change in future versions of Unicode, but for now we can&amp;#39;t use ← in programming and expect it to be rendered as → when we change the naming language to Arabic or the thematic ordering of the referents. So languages that use arrows in their syntax, such as Scala, aren&amp;#39;t future-proofed. Perhaps a future version of Unicode would add more mirroring pairs.&lt;br /&gt;&lt;br /&gt;In designing the Groovy reboot, we &lt;i&gt;do&lt;/i&gt; have 305 bidi-mirroring or -mirrored symbols to choose from, so not being able to use the arrows isn&amp;#39;t a big deal. We just need to be aware of our choices, and not make syntactic mistakes, as did the first bootup of Groovy when its project managers committed to treating every Unicode token above 0xFF as an identifier character :-(&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot will utilize the full power of Unicode in both its syntax &lt;b&gt;and&lt;/b&gt; its vocabulary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;5 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#1"&gt;Groovy Japanese&lt;/a&gt;&lt;/h1&gt;
Something strange happened the other day! It&amp;#39;s difficult to explain so I better set the scene...&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve been learning Chinese for the last 10 years, between programming and teaching, so not too quickly, and my Chinese reading is better than my speaking or listening. I&amp;#39;ve noticed learning to read new Chinese characters &lt;i&gt;is different to&lt;/i&gt; reading words in other languages in that we must use both the &lt;b&gt;visual and auditory parts of the brain at the same time&lt;/b&gt;. E.g. to read 妈, we look at 女 visually and at 马 phonetically: 女 means &amp;quot;woman&amp;quot; and 马 sounds like &amp;quot;ma&amp;quot;, so when we see the word 妈, &lt;b&gt;both the visual and auditory parts of our brain together create the meaning&lt;/b&gt; &amp;quot;mother&amp;quot;. Of course, when we&amp;#39;ve learnt the word our longterm memory kicks in instead, but there&amp;#39;s always many more characters of the 3000-4000 commonly used ones we don&amp;#39;t know.&lt;br /&gt;&lt;br /&gt;A few months ago, I tried my hand at learning to read Japanese. Because I already know most of the Kanji, they being similar in meaning to the over 2000 Chinese characters I&amp;#39;ve learnt, I figured I&amp;#39;d have a head start learning to read Japanese if I weren&amp;#39;t concerned about speaking it. So I &lt;b&gt;decided to learn it visually, seeing if I can read it and understand the meaning, but without vocalizing it&lt;/b&gt; in my head. When looking through &lt;a href="http://www.guidetojapanese.org/learn/grammar"&gt;Tae Kim&amp;#39;s online tutorial&lt;/a&gt;, I&amp;#39;d noticed most of the 46 Hiragana usually have only one grammatical or functional meaning, e.g. ます for polite register.&lt;br /&gt;&lt;br /&gt;So I started practising reading Kanji/Hiragana text from some practise books. &lt;i&gt;(Language-learning books on Japanese are second in popularity to those on English in bookshops across China. They are useful to me because I can read the explanations in Chinese!)&lt;/i&gt; But one day recently something strange happened...&lt;br /&gt;&lt;br /&gt;I was looking at some Japanese text I could easily read but then I &lt;b&gt;had to cover my left eye&lt;/b&gt; because it started itching. &lt;b&gt;Suddenly I couldn&amp;#39;t understand any of the text I was looking at&lt;/b&gt;, except for some Kanji which I already knew the Chinese pronunciation for. But then I &lt;b&gt;tried covering my right eye, and suddenly I could understand the Japanese meaning easily&lt;/b&gt; again!&lt;br /&gt;&lt;br /&gt;It seems by learning to read basic Japanese so I can understand the meaning but not pronounce the words, only one side of my brain is utilized, the same side that processes vision from my left eye.&lt;br /&gt;&lt;br /&gt;This discovery also explains something else. When I&amp;#39;m programming, I usually play English-language TV shows in the background, and can follow the stories just by listening to them, only glancing at the TV screen once or twice a minute. I can code up programs that work &lt;b&gt;and&lt;/b&gt; remember the storyline of the TV shows &lt;b&gt;when I do both at the same time!&lt;/b&gt; If I do either activity by itself I get bored easily, but when I do both simultaneouly I can easily work for hours at a time. Also... these are the &lt;b&gt;only two mental activities I&amp;#39;m able to do simultaneously&lt;/b&gt;, without either activity being impacted.&lt;br /&gt;&lt;br /&gt;So I&amp;#39;ve made a picture &lt;i&gt;(using the image from Wikipedia)&lt;/i&gt; of what it seems each side of my brain does:&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=617153" alt="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" title="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" /&gt;&lt;br /&gt;Of course, all this has implications for &lt;a href="http://groovy.codeplex.com/wikipage?title=Kanji%20meets%20Programming&amp;referringTitle=Blog04"&gt;using Kanji in programming&lt;/a&gt; to make code terser. Because &lt;b&gt;the same half of the brain that reads Kanji visually also writes programming code&lt;/b&gt;, they should gel together easily, &lt;b&gt;and&lt;/b&gt; still leave the other half of the brain free for some interpersonal activity. In theory, we could write terse programs using Kanji &lt;i&gt;as well as&lt;/i&gt; use interpersonal skills to relate to clients and colleagues, and stuff like that!&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot here at Codeplex aims to bring &lt;b&gt;all&lt;/b&gt; Unicode characters to the vocabulary of programs, not just the 96 ASCII (or 70 APL) ones. When the fake Groovy dies in the grave of Grales, the real Groovy will rise, bringing &lt;b&gt;all Unicode tokens&lt;/b&gt; for the programming half of our brains to use when we code.&lt;br /&gt;
&lt;h2&gt;See &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03&amp;referringTitle=Blog04"&gt;previous blog entries&lt;/a&gt;.&lt;/h2&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Sat, 30 Mar 2013 09:46:22 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Blog04 20130330094622A</guid></item><item><title>Updated Wiki: Blog04</title><link>http://groovy.codeplex.com/wikipage?title=Blog04&amp;version=12</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;u&gt;Gavin Groovy Grover&amp;#39;s UNICODE Blo&lt;/u&gt;g&lt;/h1&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=577534" alt="Grrrroooooveeey.jpg" title="Grrrroooooveeey.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;16 March 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="7"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#7"&gt;Groovy Debates&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;Sometimes I have conversations with myself over the future direction of the Groovy Language...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Groovy was birthed in 2003, had its hijack completed by 2007, and has been in a slow terminal decline ever since. Do you really think you&amp;#39;re able to revive it?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve accepted reality. I&amp;#39;m no longer reviving it, I&amp;#39;m now &lt;b&gt;rebuilding it from scratch, spec and all&lt;/b&gt;. Is there any reason I can&amp;#39;t?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Many are saying you&amp;#39;re not just rebuilding Groovy, but actively tearing down the existing one. Should you really be openly attacking Rocher and his decoy Laforge? If you sabotage his income potential, he can easily do the same to you.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Just what can they do they haven&amp;#39;t already been doing for a long time? 5 years ago, I was told a college didn&amp;#39;t renew my teaching contract because an overseas Chinese from Australia rang its president and said bad things about me. 10 years ago, someone put ads about me in newspapers in Taiwan at least twice. 15 years ago, someone from Auckland rang around at least 2 (probably more) IT recruiters in Sydney slagging me off. &lt;b&gt;I&amp;#39;ve only been doing openly for 2 years what they&amp;#39;ve been doing in secret for much longer&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;But isn&amp;#39;t 15 years ago long before Rocher even knew about you?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;It seems he got contacted by busy-bodies from Melbourne around 2006. Instead of telling them he doesn&amp;#39;t do stuff like that, he joined in and &lt;b&gt;eventually became chief instigator in targetting me&lt;/b&gt;. Shouldn&amp;#39;t I be attacking him back?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Why are you picking on Rocher and Laforge only? After all, it sounds like you have a whole handful of people who&amp;#39;ve been slagging you. You should be attacking them too.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;BTW, the real target is &amp;quot;Scar&amp;quot; Rocher only. Laforge is just the middleman he stuck between himself and me. Sociopaths always hide behind others. Anyway, I can&amp;#39;t play any others because &lt;b&gt;there&amp;#39;s only room for two players on a Chinese Chess board&lt;/b&gt;. Don&amp;#39;t you know what Rocher&amp;#39;s done to the Groovy brand?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Rocher tried to rename the Groovy Language. He changed the name of &lt;i&gt;Groovy on Rails&lt;/i&gt; to &lt;i&gt;Grails&lt;/i&gt; in early 2006 to get rid of the &lt;i&gt;Groovy&lt;/i&gt; part of the name, pretending to comply with Heinemeier-Hansson&amp;#39;s request to not use &lt;i&gt;Rails&lt;/i&gt; in the name. In late 2007 he tried to rename the Groovy Language as well but Laforge wouldn&amp;#39;t let him. Why are you so concerned about the Groovy brand?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align:right;float:right;"&gt;Are you kidding? Groovy&amp;#39;s my middle name. Why shouldn&amp;#39;t I be?&lt;/div&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve since discovered &lt;b&gt;Groovy is nothing special, just a clone of Ruby&lt;/b&gt; with Java keywords and syntax instead. Groovy/Ruby appealed when all I knew was Java and VBA, but I&amp;#39;ve since moved up the blub heirarchy. I now know &lt;b&gt;the pinnacle of programming is Clojure, Haskell, and APL&lt;/b&gt;. Clojure has the concurrency and macros, Haskell has the static typing and terse syntax, and APL has the large vocabulary of symbols. What use is Groovy now?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Good point. But you listed not one but three languages at the top of the heirarchy. Haskell and Clojure can both easily be extended to use the APL symbols, and even many more symbols and tokens from Unicode. I&amp;#39;m having troubles, however, understanding &lt;b&gt;how to merge together the best of Clojure and Haskell&lt;/b&gt;. Neither clojure.typed.core nor Template Haskell quite feel right, and rebuilding the Groovy Language is my ongoing attempt to get it right...&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(interrupting)&lt;/i&gt; But you haven&amp;#39;t explained why you want to call it &lt;i&gt;Groovy&lt;/i&gt; when there&amp;#39;s already a programming language with that name.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;The name of what I&amp;#39;m building is the &lt;i&gt;Groovy Language&lt;/i&gt;. &amp;quot;Groovy&amp;quot; is an adjective and the only other well-known language using an adjective is &lt;i&gt;Basic&lt;/i&gt;, the language I&amp;#39;m most eager to avoid following in any way.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Groovy&lt;/i&gt; and &lt;i&gt;Groovy Language&lt;/i&gt; are the same thing. You&amp;#39;re still using the name of an existing language.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;The fake &lt;i&gt;Groovy&lt;/i&gt; at Codehaus is in terminal decline, and is &lt;b&gt;unlikely to even exist in its present name and form very much longer&lt;/b&gt;, so when the real &lt;i&gt;Groovy Language&lt;/i&gt; at Codeplex is finally ready, utilizing every Unicode token, it&amp;#39;ll be the only game in town with that name.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:left;padding-right:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639384" alt="face&amp;#32;right.jpg" title="face&amp;#32;right.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Touche! And that&amp;#39;s why you haven&amp;#39;t wanted the fake Groovy to change its name. &lt;b&gt;In order for developers to really know that the upcoming &lt;i&gt;Groovy Language&lt;/i&gt; is real, there must first be a fake one to compare it with&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=639383" alt="face&amp;#32;left.jpg" title="face&amp;#32;left.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align:right;float:right;"&gt;Exactly!&lt;/div&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 February, updated 16 March 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="6"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#6"&gt;Groovy Tweetroll&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;Just discovered I&amp;#39;ve been &lt;a href="http://www.codeplex.com/site/users/view/vorgvangeir"&gt;blogging under the name &amp;quot;Vorg van Geir&amp;quot;&lt;/a&gt;! Funny, I don&amp;#39;t remember writing any of this, but it sounds like me and the picture&amp;#39;s me, so I&amp;#39;ve copied it below. Sometimes when I&amp;#39;m writing blog posts, I&amp;#39;ll be struggling with my words then suddenly an entire paragraph will flash into my mind, usually something ripping into Rocher and Laforge. This is the first time I don&amp;#39;t remember even writing something so recent, though...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;16 Mar 2013&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Corger&amp;#39;s &lt;a href="http://langpop.corger.nl"&gt;monthly comparison of programming languages for Feb 2013&lt;/a&gt; is out - you know the one, showing &lt;i&gt;StackOverflow (tag and synonyms applied count)&lt;/i&gt; and &lt;i&gt;GitHub (lines changed)&lt;/i&gt; on x and y axes with a logarithmic scale, featuring Groovy in the center of the second-tier cluster &lt;i&gt;(though also featuring Cobol nowhere in the top 84 languages used)&lt;/i&gt;. This link is going to be liberally dumped around by handles controlled by someone trying to up the registrations for the upcoming European Gr8te Conference.&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve already exposed how &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog01#7"&gt;Stack Overflow is being gamed by someone&lt;/a&gt; for questions tagged Groovy. So I took a brief moment to check out Github...&lt;br /&gt;&lt;br /&gt;I clicked on the &lt;i&gt;languages&lt;/i&gt; tab from Github&amp;#39;s explore page and saw that &lt;a href="https://github.com/languages/Groovy"&gt;Groovy is the 22nd most popular language&lt;/a&gt;. I found &lt;a href="https://github.com/languages/Clojure"&gt;the 23rd most popular, which is Clojure&lt;/a&gt;, then clicked on the &lt;i&gt;most watched&lt;/i&gt; tab &lt;a href="https://github.com/languages/Groovy/most_watched"&gt;for&lt;/a&gt; e&lt;a href="https://github.com/languages/Clojure/most_watched"&gt;ach&lt;/a&gt;. Each listed the 200 most watched projects, so I&amp;#39;ve listed the info (starred and forked) for the top 10, plus every 20th. The results speak for themselves...&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; No &lt;/th&gt;&lt;th&gt; Gvy name &lt;/th&gt;&lt;th&gt; Gvy starred &lt;/th&gt;&lt;th&gt; Gvy forked &lt;/th&gt;&lt;th&gt; Clj name &lt;/th&gt;&lt;th&gt; Clj starred &lt;/th&gt;&lt;th&gt; Clj forked &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 1 &lt;/td&gt;&lt;td&gt; asgard &lt;/td&gt;&lt;td&gt; 755 &lt;/td&gt;&lt;td&gt; 101 &lt;/td&gt;&lt;td&gt; leiningen &lt;/td&gt;&lt;td&gt; 2175 &lt;/td&gt;&lt;td&gt; 370 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 2 &lt;/td&gt;&lt;td&gt; glu &lt;/td&gt;&lt;td&gt; 362 &lt;/td&gt;&lt;td&gt; 45 &lt;/td&gt;&lt;td&gt; clojurescript &lt;/td&gt;&lt;td&gt; 1812 &lt;/td&gt;&lt;td&gt; 193 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 3 &lt;/td&gt;&lt;td&gt; grails &lt;/td&gt;&lt;td&gt; 340 &lt;/td&gt;&lt;td&gt; 75 &lt;/td&gt;&lt;td&gt; compojure &lt;/td&gt;&lt;td&gt; 1392 &lt;/td&gt;&lt;td&gt; 108 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 4 &lt;/td&gt;&lt;td&gt; gradle-android-plugin &lt;/td&gt;&lt;td&gt; 212 &lt;/td&gt;&lt;td&gt; 59 &lt;/td&gt;&lt;td&gt; clojure-koans &lt;/td&gt;&lt;td&gt; 1035 &lt;/td&gt;&lt;td&gt; 484 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 5 &lt;/td&gt;&lt;td&gt; geb &lt;/td&gt;&lt;td&gt; 204 &lt;/td&gt;&lt;td&gt; 50 &lt;/td&gt;&lt;td&gt; overtone &lt;/td&gt;&lt;td&gt; 884 &lt;/td&gt;&lt;td&gt; 118 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 6 &lt;/td&gt;&lt;td&gt; Ratpack &lt;/td&gt;&lt;td&gt; 199 &lt;/td&gt;&lt;td&gt; 37 &lt;/td&gt;&lt;td&gt; incanter &lt;/td&gt;&lt;td&gt; 866 &lt;/td&gt;&lt;td&gt; 140 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 7 &lt;/td&gt;&lt;td&gt; gaelyk &lt;/td&gt;&lt;td&gt; 189 &lt;/td&gt;&lt;td&gt; 39 &lt;/td&gt;&lt;td&gt; ring &lt;/td&gt;&lt;td&gt; 800 &lt;/td&gt;&lt;td&gt; 150 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 8 &lt;/td&gt;&lt;td&gt; grails-doc &lt;/td&gt;&lt;td&gt; 138 &lt;/td&gt;&lt;td&gt; 118 &lt;/td&gt;&lt;td&gt; noir &lt;/td&gt;&lt;td&gt; 760 &lt;/td&gt;&lt;td&gt; 105 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 9 &lt;/td&gt;&lt;td&gt; twitter-bootstrap-scaffold &lt;/td&gt;&lt;td&gt; 137 &lt;/td&gt;&lt;td&gt; 79 &lt;/td&gt;&lt;td&gt; aleph &lt;/td&gt;&lt;td&gt; 747 &lt;/td&gt;&lt;td&gt; 52 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 10 &lt;/td&gt;&lt;td&gt; groovy-wslite &lt;/td&gt;&lt;td&gt; 119 &lt;/td&gt;&lt;td&gt; 21 &lt;/td&gt;&lt;td&gt; cascalog &lt;/td&gt;&lt;td&gt; 714 &lt;/td&gt;&lt;td&gt; 88 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 20 &lt;/td&gt;&lt;td&gt; maven2gradle &lt;/td&gt;&lt;td&gt; 64 &lt;/td&gt;&lt;td&gt; 19 &lt;/td&gt;&lt;td&gt; Korma &lt;/td&gt;&lt;td&gt; 444 &lt;/td&gt;&lt;td&gt; 79 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 40 &lt;/td&gt;&lt;td&gt; grails-spring-security-ui &lt;/td&gt;&lt;td&gt; 44 &lt;/td&gt;&lt;td&gt; 31 &lt;/td&gt;&lt;td&gt; cheshire &lt;/td&gt;&lt;td&gt; 264 &lt;/td&gt;&lt;td&gt; 18 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 60 &lt;/td&gt;&lt;td&gt; grails-executor &lt;/td&gt;&lt;td&gt; 33 &lt;/td&gt;&lt;td&gt; 6 &lt;/td&gt;&lt;td&gt; pinot &lt;/td&gt;&lt;td&gt; 193 &lt;/td&gt;&lt;td&gt; 11 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 80 &lt;/td&gt;&lt;td&gt; mongodb-grails &lt;/td&gt;&lt;td&gt; 26 &lt;/td&gt;&lt;td&gt; 4 &lt;/td&gt;&lt;td&gt; clutch &lt;/td&gt;&lt;td&gt; 150 &lt;/td&gt;&lt;td&gt; 30 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 100 &lt;/td&gt;&lt;td&gt; zkui &lt;/td&gt;&lt;td&gt; 22 &lt;/td&gt;&lt;td&gt; 9 &lt;/td&gt;&lt;td&gt; lib-noir &lt;/td&gt;&lt;td&gt; 120 &lt;/td&gt;&lt;td&gt; 15 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 120 &lt;/td&gt;&lt;td&gt; grails-oauth &lt;/td&gt;&lt;td&gt; 19 &lt;/td&gt;&lt;td&gt; 14 &lt;/td&gt;&lt;td&gt; lein-droid &lt;/td&gt;&lt;td&gt; 105 &lt;/td&gt;&lt;td&gt; 7 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 140 &lt;/td&gt;&lt;td&gt; spock-grails &lt;/td&gt;&lt;td&gt; 17 &lt;/td&gt;&lt;td&gt; 5 &lt;/td&gt;&lt;td&gt; clojure-tco &lt;/td&gt;&lt;td&gt; 93 &lt;/td&gt;&lt;td&gt; 3 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 160 &lt;/td&gt;&lt;td&gt; grails-remote-control &lt;/td&gt;&lt;td&gt; 15 &lt;/td&gt;&lt;td&gt; 2 &lt;/td&gt;&lt;td&gt; clojurejs &lt;/td&gt;&lt;td&gt; 81 &lt;/td&gt;&lt;td&gt; 10 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 180 &lt;/td&gt;&lt;td&gt; CodeNarc &lt;/td&gt;&lt;td&gt; 13 &lt;/td&gt;&lt;td&gt; 10 &lt;/td&gt;&lt;td&gt; waltz &lt;/td&gt;&lt;td&gt; 74 &lt;/td&gt;&lt;td&gt; 11 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 200 &lt;/td&gt;&lt;td&gt; siloe &lt;/td&gt;&lt;td&gt; 12 &lt;/td&gt;&lt;td&gt; 11 &lt;/td&gt;&lt;td&gt; zookeeper-clj &lt;/td&gt;&lt;td&gt; 69 &lt;/td&gt;&lt;td&gt; 6 &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;This Github data shows Clojure way ahead of Groovy in developer interest and forking, whereas the &lt;i&gt;Github Lines Changed&lt;/i&gt; shows Groovy ahead! How does this happen? The reason&amp;#39;s simple: &lt;b&gt;the &lt;i&gt;Github Lines Changed&lt;/i&gt; data is being used to measure popularity in a poll&lt;/b&gt;. The very act of measuring it changes the data itself because someone exists who&amp;#39;s using the poll data to present Groovy in a certain way.&lt;br /&gt;&lt;br /&gt;After Groovy dropped from #25 to #65 &lt;i&gt;in a single month&lt;/i&gt; (April 2011) on TIOBE when they suddenly changed their measuring metrics, the data from Stack Overflow started being gamed a month later, with many made-up questions starting to appear every day. It seems someone may have started gaming Github at the same time, specifically to target this Corger poll, which gets linked to frequently on Reddit and DZone, especially before a Groovy/Grails conference.&lt;br /&gt;&lt;br /&gt;If want to see it for yourself, though, &lt;b&gt;you&amp;#39;d better be quick&lt;/b&gt;! Now that I&amp;#39;ve published this measurement, there&amp;#39;s someone out there who wants to change it with meaningless updates on Github. It&amp;#39;s amazing what middlemen will do to justify their existence.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 Mar 2013&lt;/i&gt;&lt;br /&gt;Seems the Groovy documentation effort has been cancelled. Champeau let slip that &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/Groovy-Gradle-and-Documentation-tt5713461.html#a5713466"&gt;neither he, Jochen, Guillaume or Paul will have time to work on ... a planned rewrite of GroovyDoc for Groovy 2.2&lt;/a&gt;&amp;quot;.&lt;br /&gt;&lt;br /&gt;In other news... Laforge leaked that &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/Groovy-scripts-as-Spring-Beans-tt5713411.html#a5713412"&gt;down the road, there&amp;#39;s going to be a big Spring + Groovy theme in the next major Spring framework versions&lt;/a&gt;&amp;quot;. Laforge is probably &lt;i&gt;going public&lt;/i&gt; on something the Spring developers have only tentatively agreed to, a cheap negotiation tactic. What&amp;#39;s really happening is Rocher&amp;#39;s building a Grails-Spring stack, to fight the TypeSafe stack created by former SpringSource CEO Rod Johnson, who jumped a sinking ship to become TypeSafe board chair last year. The &amp;quot;big Spring + Groovy theme&amp;quot; Laforge is pestering for &lt;i&gt;(anything beats cutting code or building tests or writing doco)&lt;/i&gt; is a snipe at &lt;a href="http://blog.springsource.org/2012/12/10/introducing-spring-scala"&gt;Arjen Poutsma&amp;#39;s Spring Scala project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Rocher intends being the boss of this planned Grails-Spring stack&lt;/b&gt;. No longer needing the fiction of Groovy being an independent open source project, he&amp;#39;ll then fork both Groovy and GPars, rename it all to SpringLang or something, then bring back some of Theodorou, Champeau, King, Pech, and Winder &lt;i&gt;(he&amp;#39;ll ditch Laforge)&lt;/i&gt; on his own terms, playing them off against each other. This is &lt;b&gt;the true nature of the community that underlies Rocher&amp;#39;s Groovy/Grails ecosystem&lt;/b&gt;. Grails is now a 115Mb download, and Gradle a 50Mb download: their real purpose is to take over the primary distribution channels of existing Java software, then bring in the bucks for those at the top of the pyramid scheme when SpringSource and Gradleware are flipped to the likes of Oracle.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;4 Mar 2013&lt;/i&gt;&lt;br /&gt;I took another look at &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-td5712875.html"&gt;Laforge&amp;#39;s deceitful email announcing Groovy&amp;#39;s &amp;quot;documentation effort and site design&amp;quot; last month&lt;/a&gt;. After the saccharine-sick marketing blurb in the first paragraph, he wrote:&lt;br /&gt;&lt;br /&gt;&amp;quot;... However, one area where &lt;b&gt;the Groovy project can do better is with its documentation&lt;/b&gt;. For instance, if you read the recent DrDobbs editorial, there were some valid points made on this topic. And it&amp;#39;s true that our documentation can be greatly improved. Despite its 1000+ pages of wiki content, it&amp;#39;s hard to find the information you&amp;#39;re looking for, it&amp;#39;s of very uneven quality and style, lots of pages are outdated or show samples with mistakes in them, and there are also holes for features not covered or not explained in details. We&amp;#39;re launching an effort towards &lt;b&gt;overhauling our documentation and web presence&lt;/b&gt;. And I&amp;#39;d love if you could take part in that effort, even if only by telling us about your expectations &lt;b&gt;regarding the website, the documentation, etc.&lt;/b&gt;, or even by helping us authoring content, of course. For the website, we&amp;#39;ll need ...&amp;quot; &lt;i&gt;[bolding as in original]&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Notice the switch? Look at what Laforge bolded:
&lt;ul&gt;&lt;li&gt;first, he accepted Binstock&amp;#39;s criticism of Groovy&amp;#39;s lack of proper documentation&lt;/li&gt;
&lt;li&gt;then, he announced he&amp;#39;s launching an overhaul of Groovy&amp;#39;s documentation &lt;b&gt;and web presence&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;finally, he moved his reference to &lt;b&gt;the website&lt;/b&gt; before &lt;i&gt;&amp;quot;the documentation, etc&amp;quot;&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;
Everything &lt;a href="http://groovy.329449.n5.nabble.com/Website-Doc-Overview-of-the-website-and-documentation-overhaul-td5713361.html"&gt;he&amp;#39;s written since&lt;/a&gt; talks about the website redesign &lt;b&gt;before&lt;/b&gt; the documentation work. Non-technical phoney managers like Laforge are always pushing through their own agendas at the expense of what&amp;#39;s really required.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;1 Mar 2013&lt;/i&gt;&lt;br /&gt;Laforge has just published &lt;a href="http://groovy.329449.n5.nabble.com/Website-Doc-Overview-of-the-website-and-documentation-overhaul-td5713361.html"&gt;a plan of what he wants the Codehaus grbdvy website and documentation&lt;/a&gt; to look like, with fish hooks for unpaid volunteers disguised as &lt;i&gt;requests for feedback&lt;/i&gt;. Yep, the Groovy 3 MOP rewrite and Groovy 4 Antlr upgrade have been cancelled, &lt;b&gt;all the &amp;quot;full-time developers&amp;quot; are being charged out to clients full-time instead&lt;/b&gt;, and the &amp;quot;project manager&amp;quot; has intensified his marketing and recruiting activities &lt;i&gt;(recruiting for unpaid volunteers, that is)&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;With all VMWare funding for developers turned off and no fresh-of-the-boat programmer volunteers on hand, Laforge is &lt;b&gt;hiding his lack of any technical talent behind non-technical &amp;quot;progress&amp;quot;&lt;/b&gt; such as the website redesign, learning mind map software (a project plan with dates and dependencies was too much to master), and deceitful marketing talk, such as this classic: &amp;quot;&lt;i&gt;we&amp;#39;ll be contacting you guys to see who would be interested in participating in case studies to chat about why you are using Groovy, why you chose that technology, in which context, what benefits did you gain, what you would like to see improved, etc.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;18 Feb 2013&lt;/i&gt;&lt;br /&gt;&lt;a href="http://groovy.329449.n5.nabble.com/Groovy-community-website-td5713095.html"&gt;Jochen Theodorou wrote, probably on behalf of Laforge&lt;/a&gt;: &amp;quot;&lt;i&gt;I think there should be a webpage dedicated to make projects &lt;b&gt;using Groovy&lt;/b&gt; known. ... I would also like to include blogs, articles and tutorials, plus a comfortable way to search.&lt;/i&gt;&amp;quot; The first to reply was &lt;a href="http://grooscript.org"&gt;GrooScript creator Jorge Franco Leza&lt;/a&gt;, asking &amp;quot;&lt;i&gt;When I do some release in my little project, what I do? where do I announce that?&lt;/i&gt;&amp;quot;. Because GrooScript &lt;b&gt;&lt;i&gt;implements&lt;/i&gt;&lt;/b&gt; Groovy rather than uses the SpringSource/Codehaus version, would it be allowed on Jochen&amp;#39;s page? What about when &lt;b&gt;&lt;i&gt;my own reboot of Groovy atop Clojure&lt;/i&gt;&lt;/b&gt;, currently at v 0.5, is ready for beta testing? In fact, &lt;a href="http://groovy.io"&gt;someone just happens to be prototyping such a new Groovy website now&lt;/a&gt; - what a coincidence!?! Just who controls what projects and tutorials get added to the site?&lt;br /&gt;&lt;br /&gt;All the latest sudden activity expanding Groovy&amp;#39;s web presence happens around now &lt;b&gt;&lt;i&gt;every&lt;/i&gt;&lt;/b&gt; year. The European Gr8te conference is coming in May, and Laforge needs to get Groovy back into the search engines, back onto the rankings like the Tiobe Top 50, so claims about Groovy&amp;#39;s popularity sound more plausible when selling seats. And Laforge wants the linked websites to generate revenue for Codehaus and SpringSource. The &lt;a href="http://www.google.com/search?num=100&amp;amp;hl=en&amp;amp;tbo=d&amp;amp;site=&amp;amp;source=hp&amp;amp;q=groovy+programming&amp;amp;btnK=Google+Search"&gt;top 3 links in Google for &amp;quot;groovy programming&amp;quot;&lt;/a&gt; include a comprehensive 5-yr old tutorial I wrote on Groovy 1.5 for non-Java programmers. Because each page packs in a lot of info, that&amp;#39;s less Google Ads revenue for Codehaus. Laforge intends &lt;b&gt;&lt;i&gt;spoiling that link under cover of his documentation rewrite&lt;/i&gt;&lt;/b&gt;, to nudge up content-sparse pages &lt;b&gt;he controls&lt;/b&gt;, like groovy.io.&lt;br /&gt;&lt;br /&gt;Instead of rehashing his old line about Groovy making programming fun on ad-heavy webpages, or showing off endless pictures of abacuses and looms in powerpoints on DSL&amp;#39;s, Laforge should be writing &lt;b&gt;&lt;i&gt;actual content to help developers be productive&lt;/i&gt;&lt;/b&gt;. If he really wanted Groovy to be fun, he&amp;#39;d be shouting the &lt;b&gt;groovy growl&lt;/b&gt;, the &lt;b&gt;ooooooo&lt;/b&gt;, and the &lt;b&gt;veeeeey&lt;/b&gt;! But to Laforge, Groovy is just an opportunity to extract revenue from corporates giving their developers a Copenhagen beer junket, and to promote his own name to IT shops in case SpringSource&amp;#39;s new owner retrenches everyone who can&amp;#39;t pass a basic programming aptitude test.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;17 Feb 2013&lt;/i&gt;&lt;br /&gt;Word&amp;#39;s out the business line VMWare wants to exit is SpringSource with Cloud Foundry stripped out. Seems Rocher&amp;#39;s been telling Oracle and JBoss if they buy SpringSource, he can cripple the static compilation mode in Groovy and nudge developers towards Java or Ceylon. So &lt;b&gt;if you use the new CompileStatic mode in Groovy, not only is it buggy but it might not even be supported soon&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;16 Feb 2013&lt;/i&gt;&lt;br /&gt;Groovy 2.1, although officially released, is still in unofficial beta testing for inclusion in Grails 2.3, to be released in May 2013 for the SpringSource European Gr8te conference, &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03#15"&gt;just as Groovy 2.0&amp;#39;s official release was just an extended beta test for Grails 2.2&lt;/a&gt;. Groovy was long ago hijacked by Rocher to snare programmers into Grails conference seats. Expect to see Groovy 2.2 renamed to version 3.0 &amp;quot;to sync the version number with Grails 3&amp;quot;. But really it&amp;#39;s all about further delaying the MOP rewrite from Groovy 3 to 4 without &lt;a href="http://groovy.329449.n5.nabble.com/Release-Grumpy-Mode-td4978117.html"&gt;the outcry when it was delayed from Groovy 2 to 3&lt;/a&gt;. Rocher&amp;#39;s more interested in pocketing the money from flogging Grails conferences and consulting than investing in a proper MOP or grammar in Groovy so it can be more than a has-been language. And Laforge does whatever Rocher tells him to - the price of a single-track speaking slot in the conferences. No-one would listen to Laforge speak if Rocher was speaking at the same time in the other room.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;15 Feb 2013&lt;/i&gt;&lt;br /&gt;Looks like &lt;a href="http://groovy.329449.n5.nabble.com/Heads-up-on-upcoming-releases-td5713054.html"&gt;Rocher&amp;#39;s just cancelled the Groovy MOP rewrite, through his paid proxy Laforge talking about an unscheduled v 2.2 release&lt;/a&gt;, as &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog04#4"&gt;predicted by my other half&lt;/a&gt;. The rewrite was just an empty promise to string along developer Jochen Theodorou all these years. Rocher&amp;#39;s management of Groovy/Grails is all about investing as little as possible to squeeze out as much as possible. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;13 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="5"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#5"&gt;Groovy Buzzwords&lt;/a&gt;&lt;/h1&gt;
Laforge reacted to Binstock&amp;#39;s analysis by &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-td5712875.html"&gt;announcing a &amp;quot;documention effort and site redesign&amp;quot;&lt;/a&gt;: &amp;quot;&lt;i&gt;Groovy is a very mature and widely used language on the Java platform, with hundred thousands of developers worldwide. It&amp;#39;s stable and fast, flexible and readable, has got plenty of interesting use cases (DSLs, testing...), is feature-packed, and it&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few). However, one area where the Groovy project can do better is with its documentation.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s look at the truth behind all this verbiage...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Documentation effort and site redesign&lt;/b&gt;&lt;/i&gt;: Laforge is redesigning the website, perceiving Groovy&amp;#39;s problem as an image problem, but hiding it behind a &amp;quot;documentation effort&amp;quot;. The website was redesigned a mere 15 months ago. Before then the documention contents were &lt;i&gt;one click away&lt;/i&gt;, but were split into four separate pages, each two clicks away, much less convenient for Groovy users but it meant more GoogleAds revenue for Codehaus and more users needing consultancy services from SpringSource. Laforge is just pretending to care about documentation.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is a very mature language on the Java platform&lt;/b&gt;&lt;/i&gt;: Groovy is declining, at the end of its life. When GPars was released at version 1.0 after being bundled in Groovy for years, it was also announcing its own end-of-life. SpringSource and Codehaus are now milking Groovy for all they can get.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is widely used, with hundreds thousands of developers worldwide&lt;/b&gt;&lt;/i&gt;: All claims, no proof. Whenever challenged, Laforge says his clients don&amp;#39;t want to be named. More likely he doesn&amp;#39;t want them poached by someone who hasn&amp;#39;t signed his contracts.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is fast&lt;/b&gt;&lt;/i&gt;: Dynamically compiled Groovy is slo.oo.ooo.oooo.ooooo.oooo.ooo.oo.ow, as Binstock was careful to point out.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is stable&lt;/b&gt;&lt;/i&gt;: Statically compiled Groovy is bug-ug-ugg-uggy. Only last week, &lt;a href="http://stackoverflow.com/questions/14774709/groovy-2-1-0-weird-behaviour-of-switch-case-break-statement-with-compilestatic"&gt;a serious static compilation bug in Groovy 2.1.0 was reported&lt;/a&gt;. Although officially released in June 2012, Groovy 2.0 really wasn&amp;#39;t released for production use until it was bundled as part of Grails 2.2 in Dec 2012. The 6 months from June to December was unofficially &lt;b&gt;just more beta-testing with a larger base of users&lt;/b&gt;, namely those who download standalone releases of Groovy. Grails, however, doesn&amp;#39;t use any of the static compilation features in Groovy 2.0. All the testing of Groovy 2.0 was just to &lt;b&gt;make sure the inclusion of static compilation in Groovy didn&amp;#39;t break any of its dynamic compilation use in Grails&lt;/b&gt;. On the day after the Grails 2.2 release came the first beta of Groovy 2.1, which has since been officially released standalone, but hasn&amp;#39;t yet shipped with Grails. Once again, Groovy&amp;#39;s timeline is determined solely by the needs of Grails.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is flexible&lt;/b&gt;&lt;/i&gt;: Laforge is just spewing buzzwords here. To me, flexible means unhindered by syntax contraints. Clojure allows easy code reorganization and macro-level syntactic manipulation, far more flexible than Groovy.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is readable&lt;/b&gt;&lt;/i&gt;: Some people find the indention used by Python and Haskell most readable, while others find the balanced brackets used by C, Java, Javascript, Scala, Groovy, and PHP more readable. &lt;b&gt;Groovy 0.5 here at Codeplex is a proof-of-concept prototype showing how Groovy-style syntax can easily be built atop Clojure&lt;/b&gt;, which, unlike Groovy, also runs atop the .NET and Javascript platforms. Why be constrained by Groovy&amp;#39;s Antlr 2.7 based grammar when we can write our own atop Clojure?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=622834" alt="ChineseCheckers.png" title="ChineseCheckers.png" /&gt; &lt;i&gt;&lt;b&gt;Groovy has got plenty of interesting use cases (DSLs, testing)&lt;/b&gt;:&lt;/i&gt; DSL is just another buzzword. Dropping semicolons, commas, and parentheses from a syntax doesn&amp;#39;t a DSL make. IDE&amp;#39;s put them in automatically without needing to type them anyway. Virtually every language has testing frameworks.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is feature-packed&lt;/b&gt;&lt;/i&gt;: More &amp;quot;features&amp;quot; means more need for consultants and conferences. Some old features such as interceptors no longer work properly. Many new features, such as static compilation and invoke dynamic, are not production ready. In both Groovy 2.0 and 2.1, the code using invoke-dynamic is bundled in a separate jar-file which only runs on Java 7. Grails and Gradle don&amp;#39;t bundle this other invoke-dynamic jar file, and don&amp;#39;t intend to for Grails 2.3 and Groovy 2.1. The Groovy roadmap claims a new MOP will be written atop this invoke-dynamic jarfile, and ship as the sole jar in Groovy 3, but every time in the past when Theodorou&amp;#39;s started on the MOP, he&amp;#39;s been redeployed. I don&amp;#39;t believe Rocher intends to pay for it. Even if it was done, how long would it take? Other statically-typed JVM languages like Scala, Kotlin, and Ceylon are coming quickly. Scala is rising, Kotlin has IntelliJ as a delivery channel, and Ceylon has JBoss backing it.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few)&lt;/b&gt;:&lt;/i&gt; Only 2 of these have any traction in industry, and even Gradle&amp;#39;s uptake is iffy. If there were any other successful projects, Laforge would&amp;#39;ve mentioned them.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;One area where the Groovy project can do better is with its documentation&lt;/b&gt;&lt;/i&gt;: What Laforge should have said was &amp;quot;&lt;i&gt;Because I can&amp;#39;t code, I should&amp;#39;ve made myself useful by writing documentation instead. I never did, and accept responsibility for Groovy&amp;#39;s failure in this area.&lt;/i&gt;&amp;quot; But Laforge is even incapable of writing correct documentation, as shown by &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog02#7"&gt;his buggy Mars Rover attempt&lt;/a&gt;, let alone accepting responsibility for it. Laforge is second only to Rocher for causing Groovy&amp;#39;s terminal decline.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="4"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#4"&gt;Groovy Confusion&lt;/a&gt;&lt;/h1&gt;
Once again, mixed messages are coming out regarding the Codehaus version of the Groovy Language.&lt;br /&gt;&lt;br /&gt;On 26 June 2012, Tech Lead Jochen Theodorou &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-tt5710334.html"&gt;announced he was beginning work on Groovy 3&lt;/a&gt;, kicking off a discussion thread with 90 replies. I asked if &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-td5710334.html#a5710338"&gt;Groovy 3 will contain a new MOP&lt;/a&gt;, to which Guillaume Laforge replied with the passive voice &amp;quot;The MOP needs to be rewritten&amp;quot;. But the MOP rewrite wasn&amp;#39;t begun.&lt;br /&gt;&lt;br /&gt;On 11 January Jochen announced &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-tt5712419.html"&gt;I will now start the implementation of the new MOP&lt;/a&gt;&amp;quot;. Graeme Rocher said he &lt;b&gt;wanted binary compatibility and ability to run old compiled Groovy code&lt;/b&gt;. Suspecting Rocher was setting up the cancellation of the MOP rewrite, I asked if &lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-td5712419.html#a5712427"&gt;VMWare&amp;#39;s not willing to pay for Jochen to rewrite the MOP if it doesn&amp;#39;t do exactly what the current one does?&lt;/a&gt; Rocher got defensive with the impersonal &amp;quot;the new MOP needs writing&amp;quot;.&lt;br /&gt;&lt;br /&gt;A week ago, VMWare told the US SEC they intended retrenching 900 workers and exiting some business lines. They didn&amp;#39;t say if they would trim up SpringSource before they sell it to JBoss, or if they would sell it to Oracle as a white elephant ripe for trimming.&lt;br /&gt;&lt;br /&gt;Two days ago, Laforge &lt;a href="http://www.infoq.com/news/2013/02/Groovy2_1_Release#.UREiSUHeTs0.dzone"&gt;dug into his posting quota on InfoQ to announce Groovy 2.1&amp;#39;s release&lt;/a&gt; a week late &lt;i&gt;(perhaps he was too busy being re-interviewed for his own job, and traded in a real developer like Champeau to save his own skin)&lt;/i&gt;. Even though Laforge didn&amp;#39;t do any technical work on Groovy 2.1, he kept on refering to &amp;quot;we&amp;quot;, putting people off by not acknowledging any of the actual programmers such as Jochen or Fred Janon in the InfoQ article or the linked-to release notes. Laforge also put people off with meaningless marketing talk, such as &lt;i&gt;&amp;quot;Groovy 2.1’s distribution bundles the recently released GPars 1.0&amp;quot;&lt;/i&gt;. Groovy has bundled the latest version of GPars for years. When GPars changed its version number to 1.0, both Groovy 2.0.x and 2.1 upgraded to it like they always had.&lt;br /&gt;&lt;br /&gt;Yesterday, Dr Dobbs editor Andrew Binstock wrote &lt;a href="http://www.drdobbs.com/jvm/the-groovy-conundrum/240147731"&gt;some pessimistic views on Codehaus Groovy&amp;#39;s future&lt;/a&gt;. He was diplomatic, though, e.g. &lt;i&gt;&amp;quot;Keying off ideas prototyped by Alex Tkachman, the Groovy team added static typing&amp;quot;&lt;/i&gt;. That&amp;#39;s putting it nicely. Unfortunately, he also neglected to mention Theodorou&amp;#39;s name anywhere, the technical guru who did most of the work, even though he managed to mention project manager Laforge. I suspect Laforge sent him some Q&amp;amp;A copy regarding Groovy 2.1, but Dr Dobbs isn&amp;#39;t InfoQ. Binstock instead published an analysis. His conclusion...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;quot;[Groovy is] a language primed to be a major player. There is the conundrum. The endless variety of features requires considerable documentation, which is simply not available, especially for the advanced features that give Groovy much of its benefit. And so, if you jump in today, you&amp;#39;ll find the language is easy to learn, but hard to master. Fortunately, this limitation is not incurable. However, time is of the essence as Groovy&amp;#39;s principal competitor for the hearts and minds of Java developers — Scala — has a small, laser-focused company behind it, which revs the product frequently and generates considerable documentation. If Groovy acts soon, it can retain leadership among Java alternatives. If not, it will have to resign itself to being an also-ran.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Binstock misses the point of Grails and Groovy&amp;#39;s business model. A lack of usable documentation means developers must pay for SpringSource consultants and seats at conferences, where lots of money is made and divvied up. By throwing in endless features, they increase the complexity of Groovy and the need for consultants from the supply side, just as the lack of documentation creates the need for conferences from the demand side. The Groovy &amp;quot;Bible&amp;quot; didn&amp;#39;t bring in much profit for its authors so why should they bother with a 2nd edn? Grails and Groovy is about making money &lt;i&gt;now&lt;/i&gt; for those involved, not investing it. Even the &lt;b&gt;&amp;quot;groovymag&amp;quot; charges money for an online subscription, while the &amp;quot;Week with Scala&amp;quot; is free!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If someone seriously creates independent doco for Groovy, the next version of Groovy changes slightly to lessen the value of the doco and increase the need for a consultant or conference. They keep a tight gateway over their test suites. I&amp;#39;ve experienced this first-hand. When I was writing free online doco for Groovy 5 yrs ago, &lt;b&gt;sociopath Rocher just couldn&amp;#39;t relate as an equal partner to me in a bazaar&lt;/b&gt;. He just had to prod people into targeting me, eventually destroying my desire to make Groovy simple to use, so he could keep as much of the take as possible at the top reaches of the cathedral.&lt;br /&gt;&lt;br /&gt;Binstock does &lt;b&gt;correctly conclude Groovy will soon be an also-ran&lt;/b&gt; because of that business strategy. Rod Johnson, former CEO of Grails company SpringSource, is now leading the board of that laser-focused Scala company. He no doubt understands the value of &amp;quot;taking a cut of a huge pie&amp;quot; instead of &amp;quot;owning all of a tiny pie&amp;quot;, and is investing in growing Scala instead of strangling it. The project managers behind Groovy, Rocher and Laforge, are probably incapable of changing their ingrained habits to steer Groovy in a new direction. They will, however, take something else away from Binstock&amp;#39;s analysis: that Groovy needs a new name for version 3. Yes, they&amp;#39;ll see a brand perception problem, rather than a widely recognized lack-of-documentation problem, and they&amp;#39;ll get busy creating a new imagery for Groovy, instead of making it easy for people to master.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="3"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#3"&gt;Roadmap&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;I&amp;#39;m moving the roadmap from its own page to this blog entry...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The Groovy Language here at Codeplex will be built with Unicode graphemes, unlike most programming languages (e.g. the fake Groovy at Codehaus) which are built solely with Ascii tokens, with bare Unicode codepoints added in as an afterthought. The rough roadmap for evolving Groovy, beginning with lower numbered items, is...&lt;br /&gt;
&lt;h3&gt;1. Groovy Grammar&lt;/h3&gt;Build a recursive-descent parsing library that can look at the internal structure of CJK tokens, and &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20Grammar%20for%20Programming&amp;referringTitle=Blog04"&gt;define the Groovy grammar&lt;/a&gt;. The grammar atop Clojure will enable developers to extend the Groovy syntax easily using parser-level macros. &lt;a href="http://groovy.codeplex.com/releases/view/91000"&gt;The latest version&lt;/a&gt; can parse a healthy subset of the Groovy grammar.&lt;br /&gt;
&lt;h3&gt;2. GUI with IME&lt;/h3&gt;Create a GUI with a input method editor (IME) to enable all Unicode tokens to be entered easily, and a J-style interactive learning environment for the Groovy Language syntax. Use &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20for%20Java%20Newbies&amp;referringTitle=Blog04"&gt;these 3-yr-old notes for learning Groovy 1.5&lt;/a&gt; as a base for writing a comprehensive test suite.&lt;br /&gt;
&lt;h3&gt;3. Unicode Properties&lt;/h3&gt;We&amp;#39;ll use &lt;a href="http://groovy.codeplex.com/wikipage?title=Unicode%20Inheritance&amp;referringTitle=Blog04"&gt;inheritance hierarchies&lt;/a&gt; to represent all the Unicode characters, one for the codepoints based on the general category and certain relevant boolean properties, the other for various decompositions. We&amp;#39;ve yet to analyze the information inside the Unihan variant data.&lt;br /&gt;
&lt;h3&gt;4. CJK Decomposition Data&lt;/h3&gt;The CJK Decomposition Data File is a graphical analysis of the approx 75,000 Chinese/Japanese characters in Unicode. They utilize approx 11,000 intermediate decompositions which are not themselves in Unicode. See &lt;a href="http://cjkdecomp.codeplex.com"&gt;the main project site&lt;/a&gt; for more details. The latest version, 0.4.0, was released on 15 August 2012. See also some notes on &lt;a href="http://groovy.codeplex.com/wikipage?title=Reflection%20and%20repetitions%20in%20the%20CJK%20decomposition%20data&amp;referringTitle=Blog04"&gt;using reflection in the CJK decompositions&lt;/a&gt;. We&amp;#39;ll use these decomps to design the IME keys for entering CJK tokens into the Groovy GUI.&lt;br /&gt;
&lt;h3&gt;5. Peer-to-Peer Engine&lt;/h3&gt;Enable the most common operator symbols and foreign-language names to be shared automatically between Groovy IME&amp;#39;s using a peer-to-peer protocol so developers will know the most commonly used names and symbols when writing code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;6 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="2"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#2"&gt;Unicode Pattern Syntax Tokens&lt;/a&gt;&lt;/h1&gt;
Each of the million-plus Unicode characters has about 50 properties associated with it. Most of them can change between different versions of Unicode or for defining private-use characters, except for six of them:
&lt;ul&gt;&lt;li&gt;Name (na)&lt;/li&gt;
&lt;li&gt;Jamo Short Name (jsn)&lt;/li&gt;
&lt;li&gt;Canonical Combining Class (ccc)&lt;/li&gt;
&lt;li&gt;Decomposition Mapping (dm)&lt;/li&gt;
&lt;li&gt;Pattern Syntax (PatSyn)&lt;/li&gt;
&lt;li&gt;Pattern White Space (PatWS)&lt;/li&gt;&lt;/ul&gt;
The first four will change from their default to a lifelong value for newly assigned characters, though. The other two, Pattern Syntax and Pattern White Space properties, both boolean values, will never change even when the character is being newly assigned. Only 11 characters have the PatWS property so they&amp;#39;re not as interesting as those with the PatSyn property, 2760 of them, 296 of which are still unassigned in Unicode 6.1.&lt;br /&gt;&lt;br /&gt;The unassigned characters are given the PatSyn property by defining all characters in certain blocks (rather than characters) as having the PatSyn property:
&lt;ul&gt;&lt;li&gt;2190..21FF; Arrows&lt;/li&gt;
&lt;li&gt;2200..22FF; Mathematical Operators&lt;/li&gt;
&lt;li&gt;2300..23FF; Miscellaneous Technical&lt;/li&gt;
&lt;li&gt;2400..243F; Control Pictures&lt;/li&gt;
&lt;li&gt;2440..245F; Optical Character Recognition&lt;/li&gt;
&lt;li&gt;2500..257F; Box Drawing&lt;/li&gt;
&lt;li&gt;2580..259F; Block Elements&lt;/li&gt;
&lt;li&gt;25A0..25FF; Geometric Shapes&lt;/li&gt;
&lt;li&gt;2600..26FF; Miscellaneous Symbols&lt;/li&gt;
&lt;li&gt;2700..27BF; Dingbats&lt;/li&gt;
&lt;li&gt;27C0..27EF; Miscellaneous Mathematical Symbols-A&lt;/li&gt;
&lt;li&gt;27F0..27FF; Supplemental Arrows-A&lt;/li&gt;
&lt;li&gt;2800..28FF; Braille Patterns&lt;/li&gt;
&lt;li&gt;2900..297F; Supplemental Arrows-B&lt;/li&gt;
&lt;li&gt;2980..29FF; Miscellaneous Mathematical Symbols-B&lt;/li&gt;
&lt;li&gt;2A00..2AFF; Supplemental Mathematical Operators&lt;/li&gt;
&lt;li&gt;2B00..2BFF; Miscellaneous Symbols and Arrows&lt;/li&gt;
&lt;li&gt;2E00..2E7F; Supplemental Punctuation&lt;/li&gt;&lt;/ul&gt;
From these, 30 exceptions (0x2776..0x2793) are subtracted, and 150 are added. The added exceptions include the ASCII symbol and punctuation characters often used for syntax in programming languages.&lt;br /&gt;&lt;br /&gt;According to Unicode standard annex 31: &lt;i&gt;&amp;quot;With a fixed set of whitespace and syntax code points, a pattern language can then have a policy requiring all possible syntax characters (even ones currently unused) to be quoted if they are literals. Using &lt;b&gt;this policy preserves the freedom to extend the syntax in the future by using those characters&lt;/b&gt;. Past patterns on future systems will always work; future patterns on past systems will signal an error instead of silently producing the wrong results.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There are, of course, many other symbol and punctuation characters in Unicode that aren&amp;#39;t Pattern Syntax characters, and more can be added that can&amp;#39;t become Pattern Syntax characters (unless they&amp;#39;re encoded in one of the remaining 296 unassigned Pattern Syntax slots). The only language I know of that utilizes Unicode&amp;#39;s pattern syntax invariance is XML 1.0, 5th edn. Perhaps the Groovy Language reboot will be the first Turing-complete language to do so.&lt;br /&gt;&lt;br /&gt;47 of the 2464 assigned Pattern Syntax are canonically equivalent to other forms, so can be ignored. 45 of those decompositions are to some other Pattern Syntax character followed by nonspacing mark 0x338( ̸ ), e.g. ≠ is = then mark ̸ . The other two, 0x2329 and 0x232A, are singleton decompositions to 0x3008(〈) and 0x3009(〉), both also Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Within the assigned pattern characters, perhaps the second most important distinction are the bidi-mirroring glyphs, those with the &lt;i&gt;bmg&lt;/i&gt; property, each of which must be swapped for its complement when used within a right-to-left rendering context, such as within Arabic and Hebrew text. There are 144 pairs of them, such as ( and ), or [ and ]. Because such pairs are used extensively in programming languages, with balancing often required to make language syntax more readable, they are an important subset of the Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Perhaps another important subset of the Pattern Syntax are the 161 bidi-mirrored characters, those with the &lt;i&gt;bidim&lt;/i&gt; property, unmatched characters which must be mirrored when rendering, e.g. ∁ ∂ ∃ ∑ . A further subset could be characters that would be bidi-mirrored but aren&amp;#39;t because they&amp;#39;re already symmetrical, e.g. ∀ ∩ ∪ . They&amp;#39;re not indicated by any specific property, but must be guessed at based on their physical proximity to related bidi-mirrored characters in the Unicode database, e.g. ∃ is bidi-mirrored so ∀ must be symmetrical. Perhaps a specific property in a future version of Unicode would be nice.&lt;br /&gt;&lt;br /&gt;There&amp;#39;s many other Pattern Syntax characters that aren&amp;#39;t symmetrical but also aren&amp;#39;t mirroring or mirrored in a right-to-left rendering context because they&amp;#39;re considered to be &lt;i&gt;pictorial&lt;/i&gt; or &lt;i&gt;ornate&lt;/i&gt; characters, including those for box-drawing and all the arrows, such as 0x2190(←) and 0x2192(→). Unlike the Pattern Syntax property, the bidi properties of a character can change in future versions of Unicode, but for now we can&amp;#39;t use ← in programming and expect it to be rendered as → when we change the naming language to Arabic or the thematic ordering of the referents. So languages that use arrows in their syntax, such as Scala, aren&amp;#39;t future-proofed. Perhaps a future version of Unicode would add more mirroring pairs.&lt;br /&gt;&lt;br /&gt;In designing the Groovy reboot, we &lt;i&gt;do&lt;/i&gt; have 305 bidi-mirroring or -mirrored symbols to choose from, so not being able to use the arrows isn&amp;#39;t a big deal. We just need to be aware of our choices, and not make syntactic mistakes, as did the first bootup of Groovy when its project managers committed to treating every Unicode token above 0xFF as an identifier character :-(&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot will utilize the full power of Unicode in both its syntax &lt;b&gt;and&lt;/b&gt; its vocabulary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;5 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#1"&gt;Groovy Japanese&lt;/a&gt;&lt;/h1&gt;
Something strange happened the other day! It&amp;#39;s difficult to explain so I better set the scene...&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve been learning Chinese for the last 10 years, between programming and teaching, so not too quickly, and my Chinese reading is better than my speaking or listening. I&amp;#39;ve noticed learning to read new Chinese characters &lt;i&gt;is different to&lt;/i&gt; reading words in other languages in that we must use both the &lt;b&gt;visual and auditory parts of the brain at the same time&lt;/b&gt;. E.g. to read 妈, we look at 女 visually and at 马 phonetically: 女 means &amp;quot;woman&amp;quot; and 马 sounds like &amp;quot;ma&amp;quot;, so when we see the word 妈, &lt;b&gt;both the visual and auditory parts of our brain together create the meaning&lt;/b&gt; &amp;quot;mother&amp;quot;. Of course, when we&amp;#39;ve learnt the word our longterm memory kicks in instead, but there&amp;#39;s always many more characters of the 3000-4000 commonly used ones we don&amp;#39;t know.&lt;br /&gt;&lt;br /&gt;A few months ago, I tried my hand at learning to read Japanese. Because I already know most of the Kanji, they being similar in meaning to the over 2000 Chinese characters I&amp;#39;ve learnt, I figured I&amp;#39;d have a head start learning to read Japanese if I weren&amp;#39;t concerned about speaking it. So I &lt;b&gt;decided to learn it visually, seeing if I can read it and understand the meaning, but without vocalizing it&lt;/b&gt; in my head. When looking through &lt;a href="http://www.guidetojapanese.org/learn/grammar"&gt;Tae Kim&amp;#39;s online tutorial&lt;/a&gt;, I&amp;#39;d noticed most of the 46 Hiragana usually have only one grammatical or functional meaning, e.g. ます for polite register.&lt;br /&gt;&lt;br /&gt;So I started practising reading Kanji/Hiragana text from some practise books. &lt;i&gt;(Language-learning books on Japanese are second in popularity to those on English in bookshops across China. They are useful to me because I can read the explanations in Chinese!)&lt;/i&gt; But one day recently something strange happened...&lt;br /&gt;&lt;br /&gt;I was looking at some Japanese text I could easily read but then I &lt;b&gt;had to cover my left eye&lt;/b&gt; because it started itching. &lt;b&gt;Suddenly I couldn&amp;#39;t understand any of the text I was looking at&lt;/b&gt;, except for some Kanji which I already knew the Chinese pronunciation for. But then I &lt;b&gt;tried covering my right eye, and suddenly I could understand the Japanese meaning easily&lt;/b&gt; again!&lt;br /&gt;&lt;br /&gt;It seems by learning to read basic Japanese so I can understand the meaning but not pronounce the words, only one side of my brain is utilized, the same side that processes vision from my left eye.&lt;br /&gt;&lt;br /&gt;This discovery also explains something else. When I&amp;#39;m programming, I usually play English-language TV shows in the background, and can follow the stories just by listening to them, only glancing at the TV screen once or twice a minute. I can code up programs that work &lt;b&gt;and&lt;/b&gt; remember the storyline of the TV shows &lt;b&gt;when I do both at the same time!&lt;/b&gt; If I do either activity by itself I get bored easily, but when I do both simultaneouly I can easily work for hours at a time. Also... these are the &lt;b&gt;only two mental activities I&amp;#39;m able to do simultaneously&lt;/b&gt;, without either activity being impacted.&lt;br /&gt;&lt;br /&gt;So I&amp;#39;ve made a picture &lt;i&gt;(using the image from Wikipedia)&lt;/i&gt; of what it seems each side of my brain does:&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=617153" alt="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" title="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" /&gt;&lt;br /&gt;Of course, all this has implications for &lt;a href="http://groovy.codeplex.com/wikipage?title=Kanji%20meets%20Programming&amp;referringTitle=Blog04"&gt;using Kanji in programming&lt;/a&gt; to make code terser. Because &lt;b&gt;the same half of the brain that reads Kanji visually also writes programming code&lt;/b&gt;, they should gel together easily, &lt;b&gt;and&lt;/b&gt; still leave the other half of the brain free for some interpersonal activity. In theory, we could write terse programs using Kanji &lt;i&gt;as well as&lt;/i&gt; use interpersonal skills to relate to clients and colleagues, and stuff like that!&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot here at Codeplex aims to bring &lt;b&gt;all&lt;/b&gt; Unicode characters to the vocabulary of programs, not just the 96 ASCII (or 70 APL) ones. When the fake Groovy dies in the grave of Grales, the real Groovy will rise, bringing &lt;b&gt;all Unicode tokens&lt;/b&gt; for the programming half of our brains to use when we code.&lt;br /&gt;
&lt;h2&gt;See &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03&amp;referringTitle=Blog04"&gt;previous blog entries&lt;/a&gt;.&lt;/h2&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Sat, 16 Mar 2013 12:59:02 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Blog04 20130316125902P</guid></item><item><title>Updated Wiki: Blog04</title><link>http://groovy.codeplex.com/wikipage?title=Blog04&amp;version=11</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;u&gt;Gavin Groovy Grover&amp;#39;s UNICODE Blo&lt;/u&gt;g&lt;/h1&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=577534" alt="Grrrroooooveeey.jpg" title="Grrrroooooveeey.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 February, updated 16 March 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="6"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#6"&gt;Groovy Tweetroll&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;Just discovered I&amp;#39;ve been &lt;a href="http://www.codeplex.com/site/users/view/vorgvangeir"&gt;blogging under the name &amp;quot;Vorg van Geir&amp;quot;&lt;/a&gt;! Funny, I don&amp;#39;t remember writing any of this, but it sounds like me and the picture&amp;#39;s me, so I&amp;#39;ve copied it below. Sometimes when I&amp;#39;m writing blog posts, I&amp;#39;ll be struggling with my words then suddenly an entire paragraph will flash into my mind, usually something ripping into Rocher and Laforge. This is the first time I don&amp;#39;t remember even writing something so recent, though...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;16 Mar 2013&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Corger&amp;#39;s &lt;a href="http://langpop.corger.nl"&gt;monthly comparison of programming languages for Feb 2013&lt;/a&gt; is out - you know the one, showing &lt;i&gt;StackOverflow (tag and synonyms applied count)&lt;/i&gt; and &lt;i&gt;GitHub (lines changed)&lt;/i&gt; on x and y axes with a logarithmic scale, featuring Groovy in the center of the second-tier cluster &lt;i&gt;(though also featuring Cobol nowhere in the top 84 languages used)&lt;/i&gt;. This link is going to be liberally dumped around by handles controlled by someone trying to up the registrations for the upcoming European Gr8te Conference.&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve already exposed how &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog01#7"&gt;Stack Overflow is being gamed by someone&lt;/a&gt; for questions tagged Groovy. So I took a brief moment to check out Github...&lt;br /&gt;&lt;br /&gt;I clicked on the &lt;i&gt;languages&lt;/i&gt; tab from Github&amp;#39;s explore page and saw that &lt;a href="https://github.com/languages/Groovy"&gt;Groovy is the 22nd most popular language&lt;/a&gt;. I found &lt;a href="https://github.com/languages/Clojure"&gt;the 23rd most popular, which is Clojure&lt;/a&gt;, then clicked on the &lt;i&gt;most watched&lt;/i&gt; tab &lt;a href="https://github.com/languages/Groovy/most_watched"&gt;for&lt;/a&gt; e&lt;a href="https://github.com/languages/Clojure/most_watched"&gt;ach&lt;/a&gt;. Each listed the 200 most watched projects, so I&amp;#39;ve listed the info (starred and forked) for the top 10, plus every 20th. The results speak for themselves...&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; No &lt;/th&gt;&lt;th&gt; Gvy name &lt;/th&gt;&lt;th&gt; Gvy starred &lt;/th&gt;&lt;th&gt; Gvy forked &lt;/th&gt;&lt;th&gt; Clj name &lt;/th&gt;&lt;th&gt; Clj starred &lt;/th&gt;&lt;th&gt; Clj forked &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 1 &lt;/td&gt;&lt;td&gt; asgard &lt;/td&gt;&lt;td&gt; 755 &lt;/td&gt;&lt;td&gt; 101 &lt;/td&gt;&lt;td&gt; leiningen &lt;/td&gt;&lt;td&gt; 2175 &lt;/td&gt;&lt;td&gt; 370 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 2 &lt;/td&gt;&lt;td&gt; glu &lt;/td&gt;&lt;td&gt; 362 &lt;/td&gt;&lt;td&gt; 45 &lt;/td&gt;&lt;td&gt; clojurescript &lt;/td&gt;&lt;td&gt; 1812 &lt;/td&gt;&lt;td&gt; 193 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 3 &lt;/td&gt;&lt;td&gt; grails &lt;/td&gt;&lt;td&gt; 340 &lt;/td&gt;&lt;td&gt; 75 &lt;/td&gt;&lt;td&gt; compojure &lt;/td&gt;&lt;td&gt; 1392 &lt;/td&gt;&lt;td&gt; 108 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 4 &lt;/td&gt;&lt;td&gt; gradle-android-plugin &lt;/td&gt;&lt;td&gt; 212 &lt;/td&gt;&lt;td&gt; 59 &lt;/td&gt;&lt;td&gt; clojure-koans &lt;/td&gt;&lt;td&gt; 1035 &lt;/td&gt;&lt;td&gt; 484 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 5 &lt;/td&gt;&lt;td&gt; geb &lt;/td&gt;&lt;td&gt; 204 &lt;/td&gt;&lt;td&gt; 50 &lt;/td&gt;&lt;td&gt; overtone &lt;/td&gt;&lt;td&gt; 884 &lt;/td&gt;&lt;td&gt; 118 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 6 &lt;/td&gt;&lt;td&gt; Ratpack &lt;/td&gt;&lt;td&gt; 199 &lt;/td&gt;&lt;td&gt; 37 &lt;/td&gt;&lt;td&gt; incanter &lt;/td&gt;&lt;td&gt; 866 &lt;/td&gt;&lt;td&gt; 140 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 7 &lt;/td&gt;&lt;td&gt; gaelyk &lt;/td&gt;&lt;td&gt; 189 &lt;/td&gt;&lt;td&gt; 39 &lt;/td&gt;&lt;td&gt; ring &lt;/td&gt;&lt;td&gt; 800 &lt;/td&gt;&lt;td&gt; 150 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 8 &lt;/td&gt;&lt;td&gt; grails-doc &lt;/td&gt;&lt;td&gt; 138 &lt;/td&gt;&lt;td&gt; 118 &lt;/td&gt;&lt;td&gt; noir &lt;/td&gt;&lt;td&gt; 760 &lt;/td&gt;&lt;td&gt; 105 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 9 &lt;/td&gt;&lt;td&gt; twitter-bootstrap-scaffold &lt;/td&gt;&lt;td&gt; 137 &lt;/td&gt;&lt;td&gt; 79 &lt;/td&gt;&lt;td&gt; aleph &lt;/td&gt;&lt;td&gt; 747 &lt;/td&gt;&lt;td&gt; 52 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 10 &lt;/td&gt;&lt;td&gt; groovy-wslite &lt;/td&gt;&lt;td&gt; 119 &lt;/td&gt;&lt;td&gt; 21 &lt;/td&gt;&lt;td&gt; cascalog &lt;/td&gt;&lt;td&gt; 714 &lt;/td&gt;&lt;td&gt; 88 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 20 &lt;/td&gt;&lt;td&gt; maven2gradle &lt;/td&gt;&lt;td&gt; 64 &lt;/td&gt;&lt;td&gt; 19 &lt;/td&gt;&lt;td&gt; Korma &lt;/td&gt;&lt;td&gt; 444 &lt;/td&gt;&lt;td&gt; 79 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 40 &lt;/td&gt;&lt;td&gt; grails-spring-security-ui &lt;/td&gt;&lt;td&gt; 44 &lt;/td&gt;&lt;td&gt; 31 &lt;/td&gt;&lt;td&gt; cheshire &lt;/td&gt;&lt;td&gt; 264 &lt;/td&gt;&lt;td&gt; 18 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 60 &lt;/td&gt;&lt;td&gt; grails-executor &lt;/td&gt;&lt;td&gt; 33 &lt;/td&gt;&lt;td&gt; 6 &lt;/td&gt;&lt;td&gt; pinot &lt;/td&gt;&lt;td&gt; 193 &lt;/td&gt;&lt;td&gt; 11 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 80 &lt;/td&gt;&lt;td&gt; mongodb-grails &lt;/td&gt;&lt;td&gt; 26 &lt;/td&gt;&lt;td&gt; 4 &lt;/td&gt;&lt;td&gt; clutch &lt;/td&gt;&lt;td&gt; 150 &lt;/td&gt;&lt;td&gt; 30 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 100 &lt;/td&gt;&lt;td&gt; zkui &lt;/td&gt;&lt;td&gt; 22 &lt;/td&gt;&lt;td&gt; 9 &lt;/td&gt;&lt;td&gt; lib-noir &lt;/td&gt;&lt;td&gt; 120 &lt;/td&gt;&lt;td&gt; 15 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 120 &lt;/td&gt;&lt;td&gt; grails-oauth &lt;/td&gt;&lt;td&gt; 19 &lt;/td&gt;&lt;td&gt; 14 &lt;/td&gt;&lt;td&gt; lein-droid &lt;/td&gt;&lt;td&gt; 105 &lt;/td&gt;&lt;td&gt; 7 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 140 &lt;/td&gt;&lt;td&gt; spock-grails &lt;/td&gt;&lt;td&gt; 17 &lt;/td&gt;&lt;td&gt; 5 &lt;/td&gt;&lt;td&gt; clojure-tco &lt;/td&gt;&lt;td&gt; 93 &lt;/td&gt;&lt;td&gt; 3 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 160 &lt;/td&gt;&lt;td&gt; grails-remote-control &lt;/td&gt;&lt;td&gt; 15 &lt;/td&gt;&lt;td&gt; 2 &lt;/td&gt;&lt;td&gt; clojurejs &lt;/td&gt;&lt;td&gt; 81 &lt;/td&gt;&lt;td&gt; 10 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 180 &lt;/td&gt;&lt;td&gt; CodeNarc &lt;/td&gt;&lt;td&gt; 13 &lt;/td&gt;&lt;td&gt; 10 &lt;/td&gt;&lt;td&gt; waltz &lt;/td&gt;&lt;td&gt; 74 &lt;/td&gt;&lt;td&gt; 11 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; 200 &lt;/td&gt;&lt;td&gt; siloe &lt;/td&gt;&lt;td&gt; 12 &lt;/td&gt;&lt;td&gt; 11 &lt;/td&gt;&lt;td&gt; zookeeper-clj &lt;/td&gt;&lt;td&gt; 69 &lt;/td&gt;&lt;td&gt; 6 &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;This Github data shows Clojure way ahead of Groovy in developer interest and forking, whereas the &lt;i&gt;Github Lines Changed&lt;/i&gt; shows Groovy ahead! How does this happen? The reason&amp;#39;s simple: &lt;b&gt;the &lt;i&gt;Github Lines Changed&lt;/i&gt; data is being used to measure popularity in a poll&lt;/b&gt;. The very act of measuring it changes the data itself because someone exists who&amp;#39;s using the poll data to present Groovy in a certain way.&lt;br /&gt;&lt;br /&gt;After Groovy dropped from #25 to #65 &lt;i&gt;in a single month&lt;/i&gt; (April 2011) on TIOBE when they suddenly changed their measuring metrics, the data from Stack Overflow started being gamed a month later, with many made-up questions starting to appear every day. It seems someone may have started gaming Github at the same time, specifically to target this Corger poll, which gets linked to frequently on Reddit and DZone, especially before a Groovy/Grails conference.&lt;br /&gt;&lt;br /&gt;If want to see it for yourself, though, &lt;b&gt;you&amp;#39;d better be quick&lt;/b&gt;! Now that I&amp;#39;ve published this measurement, there&amp;#39;s someone out there who wants to change it with meaningless updates on Github. It&amp;#39;s amazing what middlemen will do to justify their existence.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 Mar 2013&lt;/i&gt;&lt;br /&gt;Seems the Groovy documentation effort has been cancelled. Champeau let slip that &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/Groovy-Gradle-and-Documentation-tt5713461.html#a5713466"&gt;neither he, Jochen, Guillaume or Paul will have time to work on ... a planned rewrite of GroovyDoc for Groovy 2.2&lt;/a&gt;&amp;quot;.&lt;br /&gt;&lt;br /&gt;In other news... Laforge leaked that &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/Groovy-scripts-as-Spring-Beans-tt5713411.html#a5713412"&gt;down the road, there&amp;#39;s going to be a big Spring + Groovy theme in the next major Spring framework versions&lt;/a&gt;&amp;quot;. Laforge is probably &lt;i&gt;going public&lt;/i&gt; on something the Spring developers have only tentatively agreed to, a cheap negotiation tactic. What&amp;#39;s really happening is Rocher&amp;#39;s building a Grails-Spring stack, to fight the TypeSafe stack created by former SpringSource CEO Rod Johnson, who jumped a sinking ship to become TypeSafe board chair last year. The &amp;quot;big Spring + Groovy theme&amp;quot; Laforge is pestering for &lt;i&gt;(anything beats cutting code or building tests or writing doco)&lt;/i&gt; is a snipe at &lt;a href="http://blog.springsource.org/2012/12/10/introducing-spring-scala"&gt;Arjen Poutsma&amp;#39;s Spring Scala project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Rocher intends being the boss of this planned Grails-Spring stack&lt;/b&gt;. No longer needing the fiction of Groovy being an independent open source project, he&amp;#39;ll then fork both Groovy and GPars, rename it all to SpringLang or something, then bring back some of Theodorou, Champeau, King, Pech, and Winder &lt;i&gt;(he&amp;#39;ll ditch Laforge)&lt;/i&gt; on his own terms, playing them off against each other. This is &lt;b&gt;the true nature of the community that underlies Rocher&amp;#39;s Groovy/Grails ecosystem&lt;/b&gt;. Grails is now a 115Mb download, and Gradle a 50Mb download: their real purpose is to take over the primary distribution channels of existing Java software, then bring in the bucks for those at the top of the pyramid scheme when SpringSource and Gradleware are flipped to the likes of Oracle.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;4 Mar 2013&lt;/i&gt;&lt;br /&gt;I took another look at &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-td5712875.html"&gt;Laforge&amp;#39;s deceitful email announcing Groovy&amp;#39;s &amp;quot;documentation effort and site design&amp;quot; last month&lt;/a&gt;. After the saccharine-sick marketing blurb in the first paragraph, he wrote:&lt;br /&gt;&lt;br /&gt;&amp;quot;... However, one area where &lt;b&gt;the Groovy project can do better is with its documentation&lt;/b&gt;. For instance, if you read the recent DrDobbs editorial, there were some valid points made on this topic. And it&amp;#39;s true that our documentation can be greatly improved. Despite its 1000+ pages of wiki content, it&amp;#39;s hard to find the information you&amp;#39;re looking for, it&amp;#39;s of very uneven quality and style, lots of pages are outdated or show samples with mistakes in them, and there are also holes for features not covered or not explained in details. We&amp;#39;re launching an effort towards &lt;b&gt;overhauling our documentation and web presence&lt;/b&gt;. And I&amp;#39;d love if you could take part in that effort, even if only by telling us about your expectations &lt;b&gt;regarding the website, the documentation, etc.&lt;/b&gt;, or even by helping us authoring content, of course. For the website, we&amp;#39;ll need ...&amp;quot; &lt;i&gt;[bolding as in original]&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Notice the switch? Look at what Laforge bolded:
&lt;ul&gt;&lt;li&gt;first, he accepted Binstock&amp;#39;s criticism of Groovy&amp;#39;s lack of proper documentation&lt;/li&gt;
&lt;li&gt;then, he announced he&amp;#39;s launching an overhaul of Groovy&amp;#39;s documentation &lt;b&gt;and web presence&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;finally, he moved his reference to &lt;b&gt;the website&lt;/b&gt; before &lt;i&gt;&amp;quot;the documentation, etc&amp;quot;&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;
Everything &lt;a href="http://groovy.329449.n5.nabble.com/Website-Doc-Overview-of-the-website-and-documentation-overhaul-td5713361.html"&gt;he&amp;#39;s written since&lt;/a&gt; talks about the website redesign &lt;b&gt;before&lt;/b&gt; the documentation work. Non-technical phoney managers like Laforge are always pushing through their own agendas at the expense of what&amp;#39;s really required.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;1 Mar 2013&lt;/i&gt;&lt;br /&gt;Laforge has just published &lt;a href="http://groovy.329449.n5.nabble.com/Website-Doc-Overview-of-the-website-and-documentation-overhaul-td5713361.html"&gt;a plan of what he wants the Codehaus grbdvy website and documentation&lt;/a&gt; to look like, with fish hooks for unpaid volunteers disguised as &lt;i&gt;requests for feedback&lt;/i&gt;. Yep, the Groovy 3 MOP rewrite and Groovy 4 Antlr upgrade have been cancelled, &lt;b&gt;all the &amp;quot;full-time developers&amp;quot; are being charged out to clients full-time instead&lt;/b&gt;, and the &amp;quot;project manager&amp;quot; has intensified his marketing and recruiting activities &lt;i&gt;(recruiting for unpaid volunteers, that is)&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;With all VMWare funding for developers turned off and no fresh-of-the-boat programmer volunteers on hand, Laforge is &lt;b&gt;hiding his lack of any technical talent behind non-technical &amp;quot;progress&amp;quot;&lt;/b&gt; such as the website redesign, learning mind map software (a project plan with dates and dependencies was too much to master), and deceitful marketing talk, such as this classic: &amp;quot;&lt;i&gt;we&amp;#39;ll be contacting you guys to see who would be interested in participating in case studies to chat about why you are using Groovy, why you chose that technology, in which context, what benefits did you gain, what you would like to see improved, etc.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;18 Feb 2013&lt;/i&gt;&lt;br /&gt;&lt;a href="http://groovy.329449.n5.nabble.com/Groovy-community-website-td5713095.html"&gt;Jochen Theodorou wrote, probably on behalf of Laforge&lt;/a&gt;: &amp;quot;&lt;i&gt;I think there should be a webpage dedicated to make projects &lt;b&gt;using Groovy&lt;/b&gt; known. ... I would also like to include blogs, articles and tutorials, plus a comfortable way to search.&lt;/i&gt;&amp;quot; The first to reply was &lt;a href="http://grooscript.org"&gt;GrooScript creator Jorge Franco Leza&lt;/a&gt;, asking &amp;quot;&lt;i&gt;When I do some release in my little project, what I do? where do I announce that?&lt;/i&gt;&amp;quot;. Because GrooScript &lt;b&gt;&lt;i&gt;implements&lt;/i&gt;&lt;/b&gt; Groovy rather than uses the SpringSource/Codehaus version, would it be allowed on Jochen&amp;#39;s page? What about when &lt;b&gt;&lt;i&gt;my own reboot of Groovy atop Clojure&lt;/i&gt;&lt;/b&gt;, currently at v 0.5, is ready for beta testing? In fact, &lt;a href="http://groovy.io"&gt;someone just happens to be prototyping such a new Groovy website now&lt;/a&gt; - what a coincidence!?! Just who controls what projects and tutorials get added to the site?&lt;br /&gt;&lt;br /&gt;All the latest sudden activity expanding Groovy&amp;#39;s web presence happens around now &lt;b&gt;&lt;i&gt;every&lt;/i&gt;&lt;/b&gt; year. The European Gr8te conference is coming in May, and Laforge needs to get Groovy back into the search engines, back onto the rankings like the Tiobe Top 50, so claims about Groovy&amp;#39;s popularity sound more plausible when selling seats. And Laforge wants the linked websites to generate revenue for Codehaus and SpringSource. The &lt;a href="http://www.google.com/search?num=100&amp;amp;hl=en&amp;amp;tbo=d&amp;amp;site=&amp;amp;source=hp&amp;amp;q=groovy+programming&amp;amp;btnK=Google+Search"&gt;top 3 links in Google for &amp;quot;groovy programming&amp;quot;&lt;/a&gt; include a comprehensive 5-yr old tutorial I wrote on Groovy 1.5 for non-Java programmers. Because each page packs in a lot of info, that&amp;#39;s less Google Ads revenue for Codehaus. Laforge intends &lt;b&gt;&lt;i&gt;spoiling that link under cover of his documentation rewrite&lt;/i&gt;&lt;/b&gt;, to nudge up content-sparse pages &lt;b&gt;he controls&lt;/b&gt;, like groovy.io.&lt;br /&gt;&lt;br /&gt;Instead of rehashing his old line about Groovy making programming fun on ad-heavy webpages, or showing off endless pictures of abacuses and looms in powerpoints on DSL&amp;#39;s, Laforge should be writing &lt;b&gt;&lt;i&gt;actual content to help developers be productive&lt;/i&gt;&lt;/b&gt;. If he really wanted Groovy to be fun, he&amp;#39;d be shouting the &lt;b&gt;groovy growl&lt;/b&gt;, the &lt;b&gt;ooooooo&lt;/b&gt;, and the &lt;b&gt;veeeeey&lt;/b&gt;! But to Laforge, Groovy is just an opportunity to extract revenue from corporates giving their developers a Copenhagen beer junket, and to promote his own name to IT shops in case SpringSource&amp;#39;s new owner retrenches everyone who can&amp;#39;t pass a basic programming aptitude test.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;17 Feb 2013&lt;/i&gt;&lt;br /&gt;Word&amp;#39;s out the business line VMWare wants to exit is SpringSource with Cloud Foundry stripped out. Seems Rocher&amp;#39;s been telling Oracle and JBoss if they buy SpringSource, he can cripple the static compilation mode in Groovy and nudge developers towards Java or Ceylon. So &lt;b&gt;if you use the new CompileStatic mode in Groovy, not only is it buggy but it might not even be supported soon&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;16 Feb 2013&lt;/i&gt;&lt;br /&gt;Groovy 2.1, although officially released, is still in unofficial beta testing for inclusion in Grails 2.3, to be released in May 2013 for the SpringSource European Gr8te conference, &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03#15"&gt;just as Groovy 2.0&amp;#39;s official release was just an extended beta test for Grails 2.2&lt;/a&gt;. Groovy was long ago hijacked by Rocher to snare programmers into Grails conference seats. Expect to see Groovy 2.2 renamed to version 3.0 &amp;quot;to sync the version number with Grails 3&amp;quot;. But really it&amp;#39;s all about further delaying the MOP rewrite from Groovy 3 to 4 without &lt;a href="http://groovy.329449.n5.nabble.com/Release-Grumpy-Mode-td4978117.html"&gt;the outcry when it was delayed from Groovy 2 to 3&lt;/a&gt;. Rocher&amp;#39;s more interested in pocketing the money from flogging Grails conferences and consulting than investing in a proper MOP or grammar in Groovy so it can be more than a has-been language. And Laforge does whatever Rocher tells him to - the price of a single-track speaking slot in the conferences. No-one would listen to Laforge speak if Rocher was speaking at the same time in the other room.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;15 Feb 2013&lt;/i&gt;&lt;br /&gt;Looks like &lt;a href="http://groovy.329449.n5.nabble.com/Heads-up-on-upcoming-releases-td5713054.html"&gt;Rocher&amp;#39;s just cancelled the Groovy MOP rewrite, through his paid proxy Laforge talking about an unscheduled v 2.2 release&lt;/a&gt;, as &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog04#4"&gt;predicted by my other half&lt;/a&gt;. The rewrite was just an empty promise to string along developer Jochen Theodorou all these years. Rocher&amp;#39;s management of Groovy/Grails is all about investing as little as possible to squeeze out as much as possible. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;13 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="5"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#5"&gt;Groovy Buzzwords&lt;/a&gt;&lt;/h1&gt;
Laforge reacted to Binstock&amp;#39;s analysis by &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-td5712875.html"&gt;announcing a &amp;quot;documention effort and site redesign&amp;quot;&lt;/a&gt;: &amp;quot;&lt;i&gt;Groovy is a very mature and widely used language on the Java platform, with hundred thousands of developers worldwide. It&amp;#39;s stable and fast, flexible and readable, has got plenty of interesting use cases (DSLs, testing...), is feature-packed, and it&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few). However, one area where the Groovy project can do better is with its documentation.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s look at the truth behind all this verbiage...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Documentation effort and site redesign&lt;/b&gt;&lt;/i&gt;: Laforge is redesigning the website, perceiving Groovy&amp;#39;s problem as an image problem, but hiding it behind a &amp;quot;documentation effort&amp;quot;. The website was redesigned a mere 15 months ago. Before then the documention contents were &lt;i&gt;one click away&lt;/i&gt;, but were split into four separate pages, each two clicks away, much less convenient for Groovy users but it meant more GoogleAds revenue for Codehaus and more users needing consultancy services from SpringSource. Laforge is just pretending to care about documentation.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is a very mature language on the Java platform&lt;/b&gt;&lt;/i&gt;: Groovy is declining, at the end of its life. When GPars was released at version 1.0 after being bundled in Groovy for years, it was also announcing its own end-of-life. SpringSource and Codehaus are now milking Groovy for all they can get.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is widely used, with hundreds thousands of developers worldwide&lt;/b&gt;&lt;/i&gt;: All claims, no proof. Whenever challenged, Laforge says his clients don&amp;#39;t want to be named. More likely he doesn&amp;#39;t want them poached by someone who hasn&amp;#39;t signed his contracts.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is fast&lt;/b&gt;&lt;/i&gt;: Dynamically compiled Groovy is slo.oo.ooo.oooo.ooooo.oooo.ooo.oo.ow, as Binstock was careful to point out.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is stable&lt;/b&gt;&lt;/i&gt;: Statically compiled Groovy is bug-ug-ugg-uggy. Only last week, &lt;a href="http://stackoverflow.com/questions/14774709/groovy-2-1-0-weird-behaviour-of-switch-case-break-statement-with-compilestatic"&gt;a serious static compilation bug in Groovy 2.1.0 was reported&lt;/a&gt;. Although officially released in June 2012, Groovy 2.0 really wasn&amp;#39;t released for production use until it was bundled as part of Grails 2.2 in Dec 2012. The 6 months from June to December was unofficially &lt;b&gt;just more beta-testing with a larger base of users&lt;/b&gt;, namely those who download standalone releases of Groovy. Grails, however, doesn&amp;#39;t use any of the static compilation features in Groovy 2.0. All the testing of Groovy 2.0 was just to &lt;b&gt;make sure the inclusion of static compilation in Groovy didn&amp;#39;t break any of its dynamic compilation use in Grails&lt;/b&gt;. On the day after the Grails 2.2 release came the first beta of Groovy 2.1, which has since been officially released standalone, but hasn&amp;#39;t yet shipped with Grails. Once again, Groovy&amp;#39;s timeline is determined solely by the needs of Grails.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is flexible&lt;/b&gt;&lt;/i&gt;: Laforge is just spewing buzzwords here. To me, flexible means unhindered by syntax contraints. Clojure allows easy code reorganization and macro-level syntactic manipulation, far more flexible than Groovy.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is readable&lt;/b&gt;&lt;/i&gt;: Some people find the indention used by Python and Haskell most readable, while others find the balanced brackets used by C, Java, Javascript, Scala, Groovy, and PHP more readable. &lt;b&gt;Groovy 0.5 here at Codeplex is a proof-of-concept prototype showing how Groovy-style syntax can easily be built atop Clojure&lt;/b&gt;, which, unlike Groovy, also runs atop the .NET and Javascript platforms. Why be constrained by Groovy&amp;#39;s Antlr 2.7 based grammar when we can write our own atop Clojure?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=622834" alt="ChineseCheckers.png" title="ChineseCheckers.png" /&gt; &lt;i&gt;&lt;b&gt;Groovy has got plenty of interesting use cases (DSLs, testing)&lt;/b&gt;:&lt;/i&gt; DSL is just another buzzword. Dropping semicolons, commas, and parentheses from a syntax doesn&amp;#39;t a DSL make. IDE&amp;#39;s put them in automatically without needing to type them anyway. Virtually every language has testing frameworks.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is feature-packed&lt;/b&gt;&lt;/i&gt;: More &amp;quot;features&amp;quot; means more need for consultants and conferences. Some old features such as interceptors no longer work properly. Many new features, such as static compilation and invoke dynamic, are not production ready. In both Groovy 2.0 and 2.1, the code using invoke-dynamic is bundled in a separate jar-file which only runs on Java 7. Grails and Gradle don&amp;#39;t bundle this other invoke-dynamic jar file, and don&amp;#39;t intend to for Grails 2.3 and Groovy 2.1. The Groovy roadmap claims a new MOP will be written atop this invoke-dynamic jarfile, and ship as the sole jar in Groovy 3, but every time in the past when Theodorou&amp;#39;s started on the MOP, he&amp;#39;s been redeployed. I don&amp;#39;t believe Rocher intends to pay for it. Even if it was done, how long would it take? Other statically-typed JVM languages like Scala, Kotlin, and Ceylon are coming quickly. Scala is rising, Kotlin has IntelliJ as a delivery channel, and Ceylon has JBoss backing it.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few)&lt;/b&gt;:&lt;/i&gt; Only 2 of these have any traction in industry, and even Gradle&amp;#39;s uptake is iffy. If there were any other successful projects, Laforge would&amp;#39;ve mentioned them.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;One area where the Groovy project can do better is with its documentation&lt;/b&gt;&lt;/i&gt;: What Laforge should have said was &amp;quot;&lt;i&gt;Because I can&amp;#39;t code, I should&amp;#39;ve made myself useful by writing documentation instead. I never did, and accept responsibility for Groovy&amp;#39;s failure in this area.&lt;/i&gt;&amp;quot; But Laforge is even incapable of writing correct documentation, as shown by &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog02#7"&gt;his buggy Mars Rover attempt&lt;/a&gt;, let alone accepting responsibility for it. Laforge is second only to Rocher for causing Groovy&amp;#39;s terminal decline.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="4"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#4"&gt;Groovy Confusion&lt;/a&gt;&lt;/h1&gt;
Once again, mixed messages are coming out regarding the Codehaus version of the Groovy Language.&lt;br /&gt;&lt;br /&gt;On 26 June 2012, Tech Lead Jochen Theodorou &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-tt5710334.html"&gt;announced he was beginning work on Groovy 3&lt;/a&gt;, kicking off a discussion thread with 90 replies. I asked if &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-td5710334.html#a5710338"&gt;Groovy 3 will contain a new MOP&lt;/a&gt;, to which Guillaume Laforge replied with the passive voice &amp;quot;The MOP needs to be rewritten&amp;quot;. But the MOP rewrite wasn&amp;#39;t begun.&lt;br /&gt;&lt;br /&gt;On 11 January Jochen announced &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-tt5712419.html"&gt;I will now start the implementation of the new MOP&lt;/a&gt;&amp;quot;. Graeme Rocher said he &lt;b&gt;wanted binary compatibility and ability to run old compiled Groovy code&lt;/b&gt;. Suspecting Rocher was setting up the cancellation of the MOP rewrite, I asked if &lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-td5712419.html#a5712427"&gt;VMWare&amp;#39;s not willing to pay for Jochen to rewrite the MOP if it doesn&amp;#39;t do exactly what the current one does?&lt;/a&gt; Rocher got defensive with the impersonal &amp;quot;the new MOP needs writing&amp;quot;.&lt;br /&gt;&lt;br /&gt;A week ago, VMWare told the US SEC they intended retrenching 900 workers and exiting some business lines. They didn&amp;#39;t say if they would trim up SpringSource before they sell it to JBoss, or if they would sell it to Oracle as a white elephant ripe for trimming.&lt;br /&gt;&lt;br /&gt;Two days ago, Laforge &lt;a href="http://www.infoq.com/news/2013/02/Groovy2_1_Release#.UREiSUHeTs0.dzone"&gt;dug into his posting quota on InfoQ to announce Groovy 2.1&amp;#39;s release&lt;/a&gt; a week late &lt;i&gt;(perhaps he was too busy being re-interviewed for his own job, and traded in a real developer like Champeau to save his own skin)&lt;/i&gt;. Even though Laforge didn&amp;#39;t do any technical work on Groovy 2.1, he kept on refering to &amp;quot;we&amp;quot;, putting people off by not acknowledging any of the actual programmers such as Jochen or Fred Janon in the InfoQ article or the linked-to release notes. Laforge also put people off with meaningless marketing talk, such as &lt;i&gt;&amp;quot;Groovy 2.1’s distribution bundles the recently released GPars 1.0&amp;quot;&lt;/i&gt;. Groovy has bundled the latest version of GPars for years. When GPars changed its version number to 1.0, both Groovy 2.0.x and 2.1 upgraded to it like they always had.&lt;br /&gt;&lt;br /&gt;Yesterday, Dr Dobbs editor Andrew Binstock wrote &lt;a href="http://www.drdobbs.com/jvm/the-groovy-conundrum/240147731"&gt;some pessimistic views on Codehaus Groovy&amp;#39;s future&lt;/a&gt;. He was diplomatic, though, e.g. &lt;i&gt;&amp;quot;Keying off ideas prototyped by Alex Tkachman, the Groovy team added static typing&amp;quot;&lt;/i&gt;. That&amp;#39;s putting it nicely. Unfortunately, he also neglected to mention Theodorou&amp;#39;s name anywhere, the technical guru who did most of the work, even though he managed to mention project manager Laforge. I suspect Laforge sent him some Q&amp;amp;A copy regarding Groovy 2.1, but Dr Dobbs isn&amp;#39;t InfoQ. Binstock instead published an analysis. His conclusion...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;quot;[Groovy is] a language primed to be a major player. There is the conundrum. The endless variety of features requires considerable documentation, which is simply not available, especially for the advanced features that give Groovy much of its benefit. And so, if you jump in today, you&amp;#39;ll find the language is easy to learn, but hard to master. Fortunately, this limitation is not incurable. However, time is of the essence as Groovy&amp;#39;s principal competitor for the hearts and minds of Java developers — Scala — has a small, laser-focused company behind it, which revs the product frequently and generates considerable documentation. If Groovy acts soon, it can retain leadership among Java alternatives. If not, it will have to resign itself to being an also-ran.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Binstock misses the point of Grails and Groovy&amp;#39;s business model. A lack of usable documentation means developers must pay for SpringSource consultants and seats at conferences, where lots of money is made and divvied up. By throwing in endless features, they increase the complexity of Groovy and the need for consultants from the supply side, just as the lack of documentation creates the need for conferences from the demand side. The Groovy &amp;quot;Bible&amp;quot; didn&amp;#39;t bring in much profit for its authors so why should they bother with a 2nd edn? Grails and Groovy is about making money &lt;i&gt;now&lt;/i&gt; for those involved, not investing it. Even the &lt;b&gt;&amp;quot;groovymag&amp;quot; charges money for an online subscription, while the &amp;quot;Week with Scala&amp;quot; is free!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If someone seriously creates independent doco for Groovy, the next version of Groovy changes slightly to lessen the value of the doco and increase the need for a consultant or conference. They keep a tight gateway over their test suites. I&amp;#39;ve experienced this first-hand. When I was writing free online doco for Groovy 5 yrs ago, &lt;b&gt;sociopath Rocher just couldn&amp;#39;t relate as an equal partner to me in a bazaar&lt;/b&gt;. He just had to prod people into targeting me, eventually destroying my desire to make Groovy simple to use, so he could keep as much of the take as possible at the top reaches of the cathedral.&lt;br /&gt;&lt;br /&gt;Binstock does &lt;b&gt;correctly conclude Groovy will soon be an also-ran&lt;/b&gt; because of that business strategy. Rod Johnson, former CEO of Grails company SpringSource, is now leading the board of that laser-focused Scala company. He no doubt understands the value of &amp;quot;taking a cut of a huge pie&amp;quot; instead of &amp;quot;owning all of a tiny pie&amp;quot;, and is investing in growing Scala instead of strangling it. The project managers behind Groovy, Rocher and Laforge, are probably incapable of changing their ingrained habits to steer Groovy in a new direction. They will, however, take something else away from Binstock&amp;#39;s analysis: that Groovy needs a new name for version 3. Yes, they&amp;#39;ll see a brand perception problem, rather than a widely recognized lack-of-documentation problem, and they&amp;#39;ll get busy creating a new imagery for Groovy, instead of making it easy for people to master.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="3"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#3"&gt;Roadmap&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;I&amp;#39;m moving the roadmap from its own page to this blog entry...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The Groovy Language here at Codeplex will be built with Unicode graphemes, unlike most programming languages (e.g. the fake Groovy at Codehaus) which are built solely with Ascii tokens, with bare Unicode codepoints added in as an afterthought. The rough roadmap for evolving Groovy, beginning with lower numbered items, is...&lt;br /&gt;
&lt;h3&gt;1. Groovy Grammar&lt;/h3&gt;Build a recursive-descent parsing library that can look at the internal structure of CJK tokens, and &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20Grammar%20for%20Programming&amp;referringTitle=Blog04"&gt;define the Groovy grammar&lt;/a&gt;. The grammar atop Clojure will enable developers to extend the Groovy syntax easily using parser-level macros. &lt;a href="http://groovy.codeplex.com/releases/view/91000"&gt;The latest version&lt;/a&gt; can parse a healthy subset of the Groovy grammar.&lt;br /&gt;
&lt;h3&gt;2. GUI with IME&lt;/h3&gt;Create a GUI with a input method editor (IME) to enable all Unicode tokens to be entered easily, and a J-style interactive learning environment for the Groovy Language syntax. Use &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20for%20Java%20Newbies&amp;referringTitle=Blog04"&gt;these 3-yr-old notes for learning Groovy 1.5&lt;/a&gt; as a base for writing a comprehensive test suite.&lt;br /&gt;
&lt;h3&gt;3. Unicode Properties&lt;/h3&gt;We&amp;#39;ll use &lt;a href="http://groovy.codeplex.com/wikipage?title=Unicode%20Inheritance&amp;referringTitle=Blog04"&gt;inheritance hierarchies&lt;/a&gt; to represent all the Unicode characters, one for the codepoints based on the general category and certain relevant boolean properties, the other for various decompositions. We&amp;#39;ve yet to analyze the information inside the Unihan variant data.&lt;br /&gt;
&lt;h3&gt;4. CJK Decomposition Data&lt;/h3&gt;The CJK Decomposition Data File is a graphical analysis of the approx 75,000 Chinese/Japanese characters in Unicode. They utilize approx 11,000 intermediate decompositions which are not themselves in Unicode. See &lt;a href="http://cjkdecomp.codeplex.com"&gt;the main project site&lt;/a&gt; for more details. The latest version, 0.4.0, was released on 15 August 2012. See also some notes on &lt;a href="http://groovy.codeplex.com/wikipage?title=Reflection%20and%20repetitions%20in%20the%20CJK%20decomposition%20data&amp;referringTitle=Blog04"&gt;using reflection in the CJK decompositions&lt;/a&gt;. We&amp;#39;ll use these decomps to design the IME keys for entering CJK tokens into the Groovy GUI.&lt;br /&gt;
&lt;h3&gt;5. Peer-to-Peer Engine&lt;/h3&gt;Enable the most common operator symbols and foreign-language names to be shared automatically between Groovy IME&amp;#39;s using a peer-to-peer protocol so developers will know the most commonly used names and symbols when writing code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;6 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="2"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#2"&gt;Unicode Pattern Syntax Tokens&lt;/a&gt;&lt;/h1&gt;
Each of the million-plus Unicode characters has about 50 properties associated with it. Most of them can change between different versions of Unicode or for defining private-use characters, except for six of them:
&lt;ul&gt;&lt;li&gt;Name (na)&lt;/li&gt;
&lt;li&gt;Jamo Short Name (jsn)&lt;/li&gt;
&lt;li&gt;Canonical Combining Class (ccc)&lt;/li&gt;
&lt;li&gt;Decomposition Mapping (dm)&lt;/li&gt;
&lt;li&gt;Pattern Syntax (PatSyn)&lt;/li&gt;
&lt;li&gt;Pattern White Space (PatWS)&lt;/li&gt;&lt;/ul&gt;
The first four will change from their default to a lifelong value for newly assigned characters, though. The other two, Pattern Syntax and Pattern White Space properties, both boolean values, will never change even when the character is being newly assigned. Only 11 characters have the PatWS property so they&amp;#39;re not as interesting as those with the PatSyn property, 2760 of them, 296 of which are still unassigned in Unicode 6.1.&lt;br /&gt;&lt;br /&gt;The unassigned characters are given the PatSyn property by defining all characters in certain blocks (rather than characters) as having the PatSyn property:
&lt;ul&gt;&lt;li&gt;2190..21FF; Arrows&lt;/li&gt;
&lt;li&gt;2200..22FF; Mathematical Operators&lt;/li&gt;
&lt;li&gt;2300..23FF; Miscellaneous Technical&lt;/li&gt;
&lt;li&gt;2400..243F; Control Pictures&lt;/li&gt;
&lt;li&gt;2440..245F; Optical Character Recognition&lt;/li&gt;
&lt;li&gt;2500..257F; Box Drawing&lt;/li&gt;
&lt;li&gt;2580..259F; Block Elements&lt;/li&gt;
&lt;li&gt;25A0..25FF; Geometric Shapes&lt;/li&gt;
&lt;li&gt;2600..26FF; Miscellaneous Symbols&lt;/li&gt;
&lt;li&gt;2700..27BF; Dingbats&lt;/li&gt;
&lt;li&gt;27C0..27EF; Miscellaneous Mathematical Symbols-A&lt;/li&gt;
&lt;li&gt;27F0..27FF; Supplemental Arrows-A&lt;/li&gt;
&lt;li&gt;2800..28FF; Braille Patterns&lt;/li&gt;
&lt;li&gt;2900..297F; Supplemental Arrows-B&lt;/li&gt;
&lt;li&gt;2980..29FF; Miscellaneous Mathematical Symbols-B&lt;/li&gt;
&lt;li&gt;2A00..2AFF; Supplemental Mathematical Operators&lt;/li&gt;
&lt;li&gt;2B00..2BFF; Miscellaneous Symbols and Arrows&lt;/li&gt;
&lt;li&gt;2E00..2E7F; Supplemental Punctuation&lt;/li&gt;&lt;/ul&gt;
From these, 30 exceptions (0x2776..0x2793) are subtracted, and 150 are added. The added exceptions include the ASCII symbol and punctuation characters often used for syntax in programming languages.&lt;br /&gt;&lt;br /&gt;According to Unicode standard annex 31: &lt;i&gt;&amp;quot;With a fixed set of whitespace and syntax code points, a pattern language can then have a policy requiring all possible syntax characters (even ones currently unused) to be quoted if they are literals. Using &lt;b&gt;this policy preserves the freedom to extend the syntax in the future by using those characters&lt;/b&gt;. Past patterns on future systems will always work; future patterns on past systems will signal an error instead of silently producing the wrong results.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There are, of course, many other symbol and punctuation characters in Unicode that aren&amp;#39;t Pattern Syntax characters, and more can be added that can&amp;#39;t become Pattern Syntax characters (unless they&amp;#39;re encoded in one of the remaining 296 unassigned Pattern Syntax slots). The only language I know of that utilizes Unicode&amp;#39;s pattern syntax invariance is XML 1.0, 5th edn. Perhaps the Groovy Language reboot will be the first Turing-complete language to do so.&lt;br /&gt;&lt;br /&gt;47 of the 2464 assigned Pattern Syntax are canonically equivalent to other forms, so can be ignored. 45 of those decompositions are to some other Pattern Syntax character followed by nonspacing mark 0x338( ̸ ), e.g. ≠ is = then mark ̸ . The other two, 0x2329 and 0x232A, are singleton decompositions to 0x3008(〈) and 0x3009(〉), both also Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Within the assigned pattern characters, perhaps the second most important distinction are the bidi-mirroring glyphs, those with the &lt;i&gt;bmg&lt;/i&gt; property, each of which must be swapped for its complement when used within a right-to-left rendering context, such as within Arabic and Hebrew text. There are 144 pairs of them, such as ( and ), or [ and ]. Because such pairs are used extensively in programming languages, with balancing often required to make language syntax more readable, they are an important subset of the Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Perhaps another important subset of the Pattern Syntax are the 161 bidi-mirrored characters, those with the &lt;i&gt;bidim&lt;/i&gt; property, unmatched characters which must be mirrored when rendering, e.g. ∁ ∂ ∃ ∑ . A further subset could be characters that would be bidi-mirrored but aren&amp;#39;t because they&amp;#39;re already symmetrical, e.g. ∀ ∩ ∪ . They&amp;#39;re not indicated by any specific property, but must be guessed at based on their physical proximity to related bidi-mirrored characters in the Unicode database, e.g. ∃ is bidi-mirrored so ∀ must be symmetrical. Perhaps a specific property in a future version of Unicode would be nice.&lt;br /&gt;&lt;br /&gt;There&amp;#39;s many other Pattern Syntax characters that aren&amp;#39;t symmetrical but also aren&amp;#39;t mirroring or mirrored in a right-to-left rendering context because they&amp;#39;re considered to be &lt;i&gt;pictorial&lt;/i&gt; or &lt;i&gt;ornate&lt;/i&gt; characters, including those for box-drawing and all the arrows, such as 0x2190(←) and 0x2192(→). Unlike the Pattern Syntax property, the bidi properties of a character can change in future versions of Unicode, but for now we can&amp;#39;t use ← in programming and expect it to be rendered as → when we change the naming language to Arabic or the thematic ordering of the referents. So languages that use arrows in their syntax, such as Scala, aren&amp;#39;t future-proofed. Perhaps a future version of Unicode would add more mirroring pairs.&lt;br /&gt;&lt;br /&gt;In designing the Groovy reboot, we &lt;i&gt;do&lt;/i&gt; have 305 bidi-mirroring or -mirrored symbols to choose from, so not being able to use the arrows isn&amp;#39;t a big deal. We just need to be aware of our choices, and not make syntactic mistakes, as did the first bootup of Groovy when its project managers committed to treating every Unicode token above 0xFF as an identifier character :-(&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot will utilize the full power of Unicode in both its syntax &lt;b&gt;and&lt;/b&gt; its vocabulary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;5 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#1"&gt;Groovy Japanese&lt;/a&gt;&lt;/h1&gt;
Something strange happened the other day! It&amp;#39;s difficult to explain so I better set the scene...&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve been learning Chinese for the last 10 years, between programming and teaching, so not too quickly, and my Chinese reading is better than my speaking or listening. I&amp;#39;ve noticed learning to read new Chinese characters &lt;i&gt;is different to&lt;/i&gt; reading words in other languages in that we must use both the &lt;b&gt;visual and auditory parts of the brain at the same time&lt;/b&gt;. E.g. to read 妈, we look at 女 visually and at 马 phonetically: 女 means &amp;quot;woman&amp;quot; and 马 sounds like &amp;quot;ma&amp;quot;, so when we see the word 妈, &lt;b&gt;both the visual and auditory parts of our brain together create the meaning&lt;/b&gt; &amp;quot;mother&amp;quot;. Of course, when we&amp;#39;ve learnt the word our longterm memory kicks in instead, but there&amp;#39;s always many more characters of the 3000-4000 commonly used ones we don&amp;#39;t know.&lt;br /&gt;&lt;br /&gt;A few months ago, I tried my hand at learning to read Japanese. Because I already know most of the Kanji, they being similar in meaning to the over 2000 Chinese characters I&amp;#39;ve learnt, I figured I&amp;#39;d have a head start learning to read Japanese if I weren&amp;#39;t concerned about speaking it. So I &lt;b&gt;decided to learn it visually, seeing if I can read it and understand the meaning, but without vocalizing it&lt;/b&gt; in my head. When looking through &lt;a href="http://www.guidetojapanese.org/learn/grammar"&gt;Tae Kim&amp;#39;s online tutorial&lt;/a&gt;, I&amp;#39;d noticed most of the 46 Hiragana usually have only one grammatical or functional meaning, e.g. ます for polite register.&lt;br /&gt;&lt;br /&gt;So I started practising reading Kanji/Hiragana text from some practise books. &lt;i&gt;(Language-learning books on Japanese are second in popularity to those on English in bookshops across China. They are useful to me because I can read the explanations in Chinese!)&lt;/i&gt; But one day recently something strange happened...&lt;br /&gt;&lt;br /&gt;I was looking at some Japanese text I could easily read but then I &lt;b&gt;had to cover my left eye&lt;/b&gt; because it started itching. &lt;b&gt;Suddenly I couldn&amp;#39;t understand any of the text I was looking at&lt;/b&gt;, except for some Kanji which I already knew the Chinese pronunciation for. But then I &lt;b&gt;tried covering my right eye, and suddenly I could understand the Japanese meaning easily&lt;/b&gt; again!&lt;br /&gt;&lt;br /&gt;It seems by learning to read basic Japanese so I can understand the meaning but not pronounce the words, only one side of my brain is utilized, the same side that processes vision from my left eye.&lt;br /&gt;&lt;br /&gt;This discovery also explains something else. When I&amp;#39;m programming, I usually play English-language TV shows in the background, and can follow the stories just by listening to them, only glancing at the TV screen once or twice a minute. I can code up programs that work &lt;b&gt;and&lt;/b&gt; remember the storyline of the TV shows &lt;b&gt;when I do both at the same time!&lt;/b&gt; If I do either activity by itself I get bored easily, but when I do both simultaneouly I can easily work for hours at a time. Also... these are the &lt;b&gt;only two mental activities I&amp;#39;m able to do simultaneously&lt;/b&gt;, without either activity being impacted.&lt;br /&gt;&lt;br /&gt;So I&amp;#39;ve made a picture &lt;i&gt;(using the image from Wikipedia)&lt;/i&gt; of what it seems each side of my brain does:&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=617153" alt="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" title="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" /&gt;&lt;br /&gt;Of course, all this has implications for &lt;a href="http://groovy.codeplex.com/wikipage?title=Kanji%20meets%20Programming&amp;referringTitle=Blog04"&gt;using Kanji in programming&lt;/a&gt; to make code terser. Because &lt;b&gt;the same half of the brain that reads Kanji visually also writes programming code&lt;/b&gt;, they should gel together easily, &lt;b&gt;and&lt;/b&gt; still leave the other half of the brain free for some interpersonal activity. In theory, we could write terse programs using Kanji &lt;i&gt;as well as&lt;/i&gt; use interpersonal skills to relate to clients and colleagues, and stuff like that!&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot here at Codeplex aims to bring &lt;b&gt;all&lt;/b&gt; Unicode characters to the vocabulary of programs, not just the 96 ASCII (or 70 APL) ones. When the fake Groovy dies in the grave of Grales, the real Groovy will rise, bringing &lt;b&gt;all Unicode tokens&lt;/b&gt; for the programming half of our brains to use when we code.&lt;br /&gt;
&lt;h2&gt;See &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03&amp;referringTitle=Blog04"&gt;previous blog entries&lt;/a&gt;.&lt;/h2&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Sat, 16 Mar 2013 12:21:31 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Blog04 20130316122131P</guid></item><item><title>Updated Wiki: Blog04</title><link>http://groovy.codeplex.com/wikipage?title=Blog04&amp;version=10</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;u&gt;Gavin Groovy Grover&amp;#39;s UNICODE Blo&lt;/u&gt;g&lt;/h1&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=577534" alt="Grrrroooooveeey.jpg" title="Grrrroooooveeey.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;23 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="6"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#6"&gt;Groovy Tweetroll&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;Just discovered I&amp;#39;ve been &lt;a href="http://www.codeplex.com/site/users/view/vorgvangeir"&gt;blogging under the name &amp;quot;Vorg van Geir&amp;quot;&lt;/a&gt;! Funny, I don&amp;#39;t remember writing any of this, but it sounds like me and the picture&amp;#39;s me, so I&amp;#39;ve copied it below. Sometimes when I&amp;#39;m writing blog posts, I&amp;#39;ll be struggling with my words then suddenly an entire paragraph will flash into my mind, usually something ripping into Rocher and Laforge. This is the first time I don&amp;#39;t remember even writing something so recent, though...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;18 Feb 2013&lt;/i&gt;&lt;br /&gt;&lt;a href="http://groovy.329449.n5.nabble.com/Groovy-community-website-td5713095.html"&gt;Jochen Theodorou wrote, probably on behalf of Laforge&lt;/a&gt;: &amp;quot;&lt;i&gt;I think there should be a webpage dedicated to make projects &lt;b&gt;using Groovy&lt;/b&gt; known. ... I would also like to include blogs, articles and tutorials, plus a comfortable way to search.&lt;/i&gt;&amp;quot; The first to reply was &lt;a href="http://grooscript.org"&gt;GrooScript creator Jorge Franco Leza&lt;/a&gt;, asking &amp;quot;&lt;i&gt;When I do some release in my little project, what I do? where do I announce that?&lt;/i&gt;&amp;quot;. Because GrooScript &lt;b&gt;&lt;i&gt;implements&lt;/i&gt;&lt;/b&gt; Groovy rather than uses the SpringSource/Codehaus version, would it be allowed on Jochen&amp;#39;s page? What about when &lt;b&gt;&lt;i&gt;my own reboot of Groovy atop Clojure&lt;/i&gt;&lt;/b&gt;, currently at v 0.5, is ready for beta testing? In fact, &lt;a href="http://groovy.io"&gt;someone just happens to be prototyping such a new Groovy website now&lt;/a&gt; - what a coincidence!?! Just who controls what projects and tutorials get added to the site?&lt;br /&gt;&lt;br /&gt;All the latest sudden activity expanding Groovy&amp;#39;s web presence happens around now &lt;b&gt;&lt;i&gt;every&lt;/i&gt;&lt;/b&gt; year. The European Gr8te conference is coming in May, and Laforge needs to get Groovy back into the search engines, back onto the rankings like the Tiobe Top 50, so claims about Groovy&amp;#39;s popularity sound more plausible when selling seats. And Laforge wants the linked websites to generate revenue for Codehaus and SpringSource. The &lt;a href="http://www.google.com/search?num=100&amp;amp;hl=en&amp;amp;tbo=d&amp;amp;site=&amp;amp;source=hp&amp;amp;q=groovy+programming&amp;amp;btnK=Google+Search"&gt;top 3 links in Google for &amp;quot;groovy programming&amp;quot;&lt;/a&gt; include a comprehensive 5-yr old tutorial I wrote on Groovy 1.5 for non-Java programmers. Because each page packs in a lot of info, that&amp;#39;s less Google Ads revenue for Codehaus. Laforge intends &lt;b&gt;&lt;i&gt;spoiling that link under cover of his documentation rewrite&lt;/i&gt;&lt;/b&gt;, to nudge up content-sparse pages &lt;b&gt;he controls&lt;/b&gt;, like groovy.io.&lt;br /&gt;&lt;br /&gt;Instead of rehashing his old line about Groovy making programming fun on ad-heavy webpages, or showing off endless pictures of abacuses and looms in powerpoints on DSL&amp;#39;s, Laforge should be writing &lt;b&gt;&lt;i&gt;actual content to help developers be productive&lt;/i&gt;&lt;/b&gt;. If he really wanted Groovy to be fun, he&amp;#39;d be shouting the &lt;b&gt;groovy growl&lt;/b&gt;, the &lt;b&gt;ooooooo&lt;/b&gt;, and the &lt;b&gt;veeeeey&lt;/b&gt;! But to Laforge, Groovy is just an opportunity to extract revenue from corporates giving their developers a Copenhagen beer junket, and to promote his own name to IT shops in case SpringSource&amp;#39;s new owner retrenches everyone who can&amp;#39;t pass a basic programming aptitude test.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;17 Feb 2013&lt;/i&gt;&lt;br /&gt;Word&amp;#39;s out the business line VMWare wants to exit is SpringSource with Cloud Foundry stripped out. Seems Rocher&amp;#39;s been telling Oracle and JBoss if they buy SpringSource, he can cripple the static compilation mode in Groovy and nudge developers towards Java or Ceylon. So &lt;b&gt;if you use the new CompileStatic mode in Groovy, not only is it buggy but it might not even be supported soon&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;16 Feb 2013&lt;/i&gt;&lt;br /&gt;Groovy 2.1, although officially released, is still in unofficial beta testing for inclusion in Grails 2.3, to be released in May 2013 for the SpringSource European Gr8te conference, &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03#15"&gt;just as Groovy 2.0&amp;#39;s official release was just an extended beta test for Grails 2.2&lt;/a&gt;. Groovy was long ago hijacked by Rocher to snare programmers into Grails conference seats. Expect to see Groovy 2.2 renamed to version 3.0 &amp;quot;to sync the version number with Grails 3&amp;quot;. But really it&amp;#39;s all about further delaying the MOP rewrite from Groovy 3 to 4 without &lt;a href="http://groovy.329449.n5.nabble.com/Release-Grumpy-Mode-td4978117.html"&gt;the outcry when it was delayed from Groovy 2 to 3&lt;/a&gt;. Rocher&amp;#39;s more interested in pocketing the money from flogging Grails conferences and consulting than investing in a proper MOP or grammar in Groovy so it can be more than a has-been language. And Laforge does whatever Rocher tells him to - the price of a single-track speaking slot in the conferences. No-one would listen to Laforge speak if Rocher was speaking at the same time in the other room.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;15 Feb 2013&lt;/i&gt;&lt;br /&gt;Looks like &lt;a href="http://groovy.329449.n5.nabble.com/Heads-up-on-upcoming-releases-td5713054.html"&gt;Rocher&amp;#39;s just cancelled the Groovy MOP rewrite, through his paid proxy Laforge talking about an unscheduled v 2.2 release&lt;/a&gt;, as &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog04#4"&gt;predicted by my other half&lt;/a&gt;. The rewrite was just an empty promise to string along developer Jochen Theodorou all these years. Rocher&amp;#39;s management of Groovy/Grails is all about investing as little as possible to squeeze out as much as possible. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;13 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="5"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#5"&gt;Groovy Buzzwords&lt;/a&gt;&lt;/h1&gt;
Laforge reacted to Binstock&amp;#39;s analysis by &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-td5712875.html"&gt;announcing a &amp;quot;documention effort and site redesign&amp;quot;&lt;/a&gt;: &amp;quot;&lt;i&gt;Groovy is a very mature and widely used language on the Java platform, with hundred thousands of developers worldwide. It&amp;#39;s stable and fast, flexible and readable, has got plenty of interesting use cases (DSLs, testing...), is feature-packed, and it&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few). However, one area where the Groovy project can do better is with its documentation.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s look at the truth behind all this verbiage...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Documentation effort and site redesign&lt;/b&gt;&lt;/i&gt;: Laforge is redesigning the website, perceiving Groovy&amp;#39;s problem as an image problem, but hiding it behind a &amp;quot;documentation effort&amp;quot;. The website was redesigned a mere 15 months ago. Before then the documention contents were &lt;i&gt;one click away&lt;/i&gt;, but were split into four separate pages, each two clicks away, much less convenient for Groovy users but it meant more GoogleAds revenue for Codehaus and more users needing consultancy services from SpringSource. Laforge is just pretending to care about documentation.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is a very mature language on the Java platform&lt;/b&gt;&lt;/i&gt;: Groovy is declining, at the end of its life. When GPars was released at version 1.0 after being bundled in Groovy for years, it was also announcing its own end-of-life. SpringSource and Codehaus are now milking Groovy for all they can get.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is widely used, with hundreds thousands of developers worldwide&lt;/b&gt;&lt;/i&gt;: All claims, no proof. Whenever challenged, Laforge says his clients don&amp;#39;t want to be named. More likely he doesn&amp;#39;t want them poached by someone who hasn&amp;#39;t signed his contracts.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is fast&lt;/b&gt;&lt;/i&gt;: Dynamically compiled Groovy is slo.oo.ooo.oooo.ooooo.oooo.ooo.oo.ow, as Binstock was careful to point out.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is stable&lt;/b&gt;&lt;/i&gt;: Statically compiled Groovy is bug-ug-ugg-uggy. Only last week, &lt;a href="http://stackoverflow.com/questions/14774709/groovy-2-1-0-weird-behaviour-of-switch-case-break-statement-with-compilestatic"&gt;a serious static compilation bug in Groovy 2.1.0 was reported&lt;/a&gt;. Although officially released in June 2012, Groovy 2.0 really wasn&amp;#39;t released for production use until it was bundled as part of Grails 2.2 in Dec 2012. The 6 months from June to December was unofficially &lt;b&gt;just more beta-testing with a larger base of users&lt;/b&gt;, namely those who download standalone releases of Groovy. Grails, however, doesn&amp;#39;t use any of the static compilation features in Groovy 2.0. All the testing of Groovy 2.0 was just to &lt;b&gt;make sure the inclusion of static compilation in Groovy didn&amp;#39;t break any of its dynamic compilation use in Grails&lt;/b&gt;. On the day after the Grails 2.2 release came the first beta of Groovy 2.1, which has since been officially released standalone, but hasn&amp;#39;t yet shipped with Grails. Once again, Groovy&amp;#39;s timeline is determined solely by the needs of Grails.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is flexible&lt;/b&gt;&lt;/i&gt;: Laforge is just spewing buzzwords here. To me, flexible means unhindered by syntax contraints. Clojure allows easy code reorganization and macro-level syntactic manipulation, far more flexible than Groovy.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is readable&lt;/b&gt;&lt;/i&gt;: Some people find the indention used by Python and Haskell most readable, while others find the balanced brackets used by C, Java, Javascript, Scala, Groovy, and PHP more readable. &lt;b&gt;Groovy 0.5 here at Codeplex is a proof-of-concept prototype showing how Groovy-style syntax can easily be built atop Clojure&lt;/b&gt;, which, unlike Groovy, also runs atop the .NET and Javascript platforms. Why be constrained by Groovy&amp;#39;s Antlr 2.7 based grammar when we can write our own atop Clojure?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=622834" alt="ChineseCheckers.png" title="ChineseCheckers.png" /&gt; &lt;i&gt;&lt;b&gt;Groovy has got plenty of interesting use cases (DSLs, testing)&lt;/b&gt;:&lt;/i&gt; DSL is just another buzzword. Dropping semicolons, commas, and parentheses from a syntax doesn&amp;#39;t a DSL make. IDE&amp;#39;s put them in automatically without needing to type them anyway. Virtually every language has testing frameworks.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is feature-packed&lt;/b&gt;&lt;/i&gt;: More &amp;quot;features&amp;quot; means more need for consultants and conferences. Some old features such as interceptors no longer work properly. Many new features, such as static compilation and invoke dynamic, are not production ready. In both Groovy 2.0 and 2.1, the code using invoke-dynamic is bundled in a separate jar-file which only runs on Java 7. Grails and Gradle don&amp;#39;t bundle this other invoke-dynamic jar file, and don&amp;#39;t intend to for Grails 2.3 and Groovy 2.1. The Groovy roadmap claims a new MOP will be written atop this invoke-dynamic jarfile, and ship as the sole jar in Groovy 3, but every time in the past when Theodorou&amp;#39;s started on the MOP, he&amp;#39;s been redeployed. I don&amp;#39;t believe Rocher intends to pay for it. Even if it was done, how long would it take? Other statically-typed JVM languages like Scala, Kotlin, and Ceylon are coming quickly. Scala is rising, Kotlin has IntelliJ as a delivery channel, and Ceylon has JBoss backing it.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few)&lt;/b&gt;:&lt;/i&gt; Only 2 of these have any traction in industry, and even Gradle&amp;#39;s uptake is iffy. If there were any other successful projects, Laforge would&amp;#39;ve mentioned them.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;One area where the Groovy project can do better is with its documentation&lt;/b&gt;&lt;/i&gt;: What Laforge should have said was &amp;quot;&lt;i&gt;Because I can&amp;#39;t code, I should&amp;#39;ve made myself useful by writing documentation instead. I never did, and accept responsibility for Groovy&amp;#39;s failure in this area.&lt;/i&gt;&amp;quot; But Laforge is even incapable of writing correct documentation, as shown by &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog02#7"&gt;his buggy Mars Rover attempt&lt;/a&gt;, let alone accepting responsibility for it. Laforge is second only to Rocher for causing Groovy&amp;#39;s terminal decline.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="4"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#4"&gt;Groovy Confusion&lt;/a&gt;&lt;/h1&gt;
Once again, mixed messages are coming out regarding the Codehaus version of the Groovy Language.&lt;br /&gt;&lt;br /&gt;On 26 June 2012, Tech Lead Jochen Theodorou &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-tt5710334.html"&gt;announced he was beginning work on Groovy 3&lt;/a&gt;, kicking off a discussion thread with 90 replies. I asked if &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-td5710334.html#a5710338"&gt;Groovy 3 will contain a new MOP&lt;/a&gt;, to which Guillaume Laforge replied with the passive voice &amp;quot;The MOP needs to be rewritten&amp;quot;. But the MOP rewrite wasn&amp;#39;t begun.&lt;br /&gt;&lt;br /&gt;On 11 January Jochen announced &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-tt5712419.html"&gt;I will now start the implementation of the new MOP&lt;/a&gt;&amp;quot;. Graeme Rocher said he &lt;b&gt;wanted binary compatibility and ability to run old compiled Groovy code&lt;/b&gt;. Suspecting Rocher was setting up the cancellation of the MOP rewrite, I asked if &lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-td5712419.html#a5712427"&gt;VMWare&amp;#39;s not willing to pay for Jochen to rewrite the MOP if it doesn&amp;#39;t do exactly what the current one does?&lt;/a&gt; Rocher got defensive with the impersonal &amp;quot;the new MOP needs writing&amp;quot;.&lt;br /&gt;&lt;br /&gt;A week ago, VMWare told the US SEC they intended retrenching 900 workers and exiting some business lines. They didn&amp;#39;t say if they would trim up SpringSource before they sell it to JBoss, or if they would sell it to Oracle as a white elephant ripe for trimming.&lt;br /&gt;&lt;br /&gt;Two days ago, Laforge &lt;a href="http://www.infoq.com/news/2013/02/Groovy2_1_Release#.UREiSUHeTs0.dzone"&gt;dug into his posting quota on InfoQ to announce Groovy 2.1&amp;#39;s release&lt;/a&gt; a week late &lt;i&gt;(perhaps he was too busy being re-interviewed for his own job, and traded in a real developer like Champeau to save his own skin)&lt;/i&gt;. Even though Laforge didn&amp;#39;t do any technical work on Groovy 2.1, he kept on refering to &amp;quot;we&amp;quot;, putting people off by not acknowledging any of the actual programmers such as Jochen or Fred Janon in the InfoQ article or the linked-to release notes. Laforge also put people off with meaningless marketing talk, such as &lt;i&gt;&amp;quot;Groovy 2.1’s distribution bundles the recently released GPars 1.0&amp;quot;&lt;/i&gt;. Groovy has bundled the latest version of GPars for years. When GPars changed its version number to 1.0, both Groovy 2.0.x and 2.1 upgraded to it like they always had.&lt;br /&gt;&lt;br /&gt;Yesterday, Dr Dobbs editor Andrew Binstock wrote &lt;a href="http://www.drdobbs.com/jvm/the-groovy-conundrum/240147731"&gt;some pessimistic views on Codehaus Groovy&amp;#39;s future&lt;/a&gt;. He was diplomatic, though, e.g. &lt;i&gt;&amp;quot;Keying off ideas prototyped by Alex Tkachman, the Groovy team added static typing&amp;quot;&lt;/i&gt;. That&amp;#39;s putting it nicely. Unfortunately, he also neglected to mention Theodorou&amp;#39;s name anywhere, the technical guru who did most of the work, even though he managed to mention project manager Laforge. I suspect Laforge sent him some Q&amp;amp;A copy regarding Groovy 2.1, but Dr Dobbs isn&amp;#39;t InfoQ. Binstock instead published an analysis. His conclusion...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;quot;[Groovy is] a language primed to be a major player. There is the conundrum. The endless variety of features requires considerable documentation, which is simply not available, especially for the advanced features that give Groovy much of its benefit. And so, if you jump in today, you&amp;#39;ll find the language is easy to learn, but hard to master. Fortunately, this limitation is not incurable. However, time is of the essence as Groovy&amp;#39;s principal competitor for the hearts and minds of Java developers — Scala — has a small, laser-focused company behind it, which revs the product frequently and generates considerable documentation. If Groovy acts soon, it can retain leadership among Java alternatives. If not, it will have to resign itself to being an also-ran.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Binstock misses the point of Grails and Groovy&amp;#39;s business model. A lack of usable documentation means developers must pay for SpringSource consultants and seats at conferences, where lots of money is made and divvied up. By throwing in endless features, they increase the complexity of Groovy and the need for consultants from the supply side, just as the lack of documentation creates the need for conferences from the demand side. The Groovy &amp;quot;Bible&amp;quot; didn&amp;#39;t bring in much profit for its authors so why should they bother with a 2nd edn? Grails and Groovy is about making money &lt;i&gt;now&lt;/i&gt; for those involved, not investing it. Even the &lt;b&gt;&amp;quot;groovymag&amp;quot; charges money for an online subscription, while the &amp;quot;Week with Scala&amp;quot; is free!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If someone seriously creates independent doco for Groovy, the next version of Groovy changes slightly to lessen the value of the doco and increase the need for a consultant or conference. They keep a tight gateway over their test suites. I&amp;#39;ve experienced this first-hand. When I was writing free online doco for Groovy 5 yrs ago, &lt;b&gt;sociopath Rocher just couldn&amp;#39;t relate as an equal partner to me in a bazaar&lt;/b&gt;. He just had to prod people into targeting me, eventually destroying my desire to make Groovy simple to use, so he could keep as much of the take as possible at the top reaches of the cathedral.&lt;br /&gt;&lt;br /&gt;Binstock does &lt;b&gt;correctly conclude Groovy will soon be an also-ran&lt;/b&gt; because of that business strategy. Rod Johnson, former CEO of Grails company SpringSource, is now leading the board of that laser-focused Scala company. He no doubt understands the value of &amp;quot;taking a cut of a huge pie&amp;quot; instead of &amp;quot;owning all of a tiny pie&amp;quot;, and is investing in growing Scala instead of strangling it. The project managers behind Groovy, Rocher and Laforge, are probably incapable of changing their ingrained habits to steer Groovy in a new direction. They will, however, take something else away from Binstock&amp;#39;s analysis: that Groovy needs a new name for version 3. Yes, they&amp;#39;ll see a brand perception problem, rather than a widely recognized lack-of-documentation problem, and they&amp;#39;ll get busy creating a new imagery for Groovy, instead of making it easy for people to master.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="3"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#3"&gt;Roadmap&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;I&amp;#39;m moving the roadmap from its own page to this blog entry...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The Groovy Language here at Codeplex will be built with Unicode graphemes, unlike most programming languages (e.g. the fake Groovy at Codehaus) which are built solely with Ascii tokens, with bare Unicode codepoints added in as an afterthought. The rough roadmap for evolving Groovy, beginning with lower numbered items, is...&lt;br /&gt;
&lt;h3&gt;1. Groovy Grammar&lt;/h3&gt;Build a recursive-descent parsing library that can look at the internal structure of CJK tokens, and &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20Grammar%20for%20Programming&amp;referringTitle=Blog04"&gt;define the Groovy grammar&lt;/a&gt;. The grammar atop Clojure will enable developers to extend the Groovy syntax easily using parser-level macros. &lt;a href="http://groovy.codeplex.com/releases/view/91000"&gt;The latest version&lt;/a&gt; can parse a healthy subset of the Groovy grammar.&lt;br /&gt;
&lt;h3&gt;2. GUI with IME&lt;/h3&gt;Create a GUI with a input method editor (IME) to enable all Unicode tokens to be entered easily, and a J-style interactive learning environment for the Groovy Language syntax. Use &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20for%20Java%20Newbies&amp;referringTitle=Blog04"&gt;these 3-yr-old notes for learning Groovy 1.5&lt;/a&gt; as a base for writing a comprehensive test suite.&lt;br /&gt;
&lt;h3&gt;3. Unicode Properties&lt;/h3&gt;We&amp;#39;ll use &lt;a href="http://groovy.codeplex.com/wikipage?title=Unicode%20Inheritance&amp;referringTitle=Blog04"&gt;inheritance hierarchies&lt;/a&gt; to represent all the Unicode characters, one for the codepoints based on the general category and certain relevant boolean properties, the other for various decompositions. We&amp;#39;ve yet to analyze the information inside the Unihan variant data.&lt;br /&gt;
&lt;h3&gt;4. CJK Decomposition Data&lt;/h3&gt;The CJK Decomposition Data File is a graphical analysis of the approx 75,000 Chinese/Japanese characters in Unicode. They utilize approx 11,000 intermediate decompositions which are not themselves in Unicode. See &lt;a href="http://cjkdecomp.codeplex.com"&gt;the main project site&lt;/a&gt; for more details. The latest version, 0.4.0, was released on 15 August 2012. See also some notes on &lt;a href="http://groovy.codeplex.com/wikipage?title=Reflection%20and%20repetitions%20in%20the%20CJK%20decomposition%20data&amp;referringTitle=Blog04"&gt;using reflection in the CJK decompositions&lt;/a&gt;. We&amp;#39;ll use these decomps to design the IME keys for entering CJK tokens into the Groovy GUI.&lt;br /&gt;
&lt;h3&gt;5. Peer-to-Peer Engine&lt;/h3&gt;Enable the most common operator symbols and foreign-language names to be shared automatically between Groovy IME&amp;#39;s using a peer-to-peer protocol so developers will know the most commonly used names and symbols when writing code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;6 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="2"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#2"&gt;Unicode Pattern Syntax Tokens&lt;/a&gt;&lt;/h1&gt;
Each of the million-plus Unicode characters has about 50 properties associated with it. Most of them can change between different versions of Unicode or for defining private-use characters, except for six of them:
&lt;ul&gt;&lt;li&gt;Name (na)&lt;/li&gt;
&lt;li&gt;Jamo Short Name (jsn)&lt;/li&gt;
&lt;li&gt;Canonical Combining Class (ccc)&lt;/li&gt;
&lt;li&gt;Decomposition Mapping (dm)&lt;/li&gt;
&lt;li&gt;Pattern Syntax (PatSyn)&lt;/li&gt;
&lt;li&gt;Pattern White Space (PatWS)&lt;/li&gt;&lt;/ul&gt;
The first four will change from their default to a lifelong value for newly assigned characters, though. The other two, Pattern Syntax and Pattern White Space properties, both boolean values, will never change even when the character is being newly assigned. Only 11 characters have the PatWS property so they&amp;#39;re not as interesting as those with the PatSyn property, 2760 of them, 296 of which are still unassigned in Unicode 6.1.&lt;br /&gt;&lt;br /&gt;The unassigned characters are given the PatSyn property by defining all characters in certain blocks (rather than characters) as having the PatSyn property:
&lt;ul&gt;&lt;li&gt;2190..21FF; Arrows&lt;/li&gt;
&lt;li&gt;2200..22FF; Mathematical Operators&lt;/li&gt;
&lt;li&gt;2300..23FF; Miscellaneous Technical&lt;/li&gt;
&lt;li&gt;2400..243F; Control Pictures&lt;/li&gt;
&lt;li&gt;2440..245F; Optical Character Recognition&lt;/li&gt;
&lt;li&gt;2500..257F; Box Drawing&lt;/li&gt;
&lt;li&gt;2580..259F; Block Elements&lt;/li&gt;
&lt;li&gt;25A0..25FF; Geometric Shapes&lt;/li&gt;
&lt;li&gt;2600..26FF; Miscellaneous Symbols&lt;/li&gt;
&lt;li&gt;2700..27BF; Dingbats&lt;/li&gt;
&lt;li&gt;27C0..27EF; Miscellaneous Mathematical Symbols-A&lt;/li&gt;
&lt;li&gt;27F0..27FF; Supplemental Arrows-A&lt;/li&gt;
&lt;li&gt;2800..28FF; Braille Patterns&lt;/li&gt;
&lt;li&gt;2900..297F; Supplemental Arrows-B&lt;/li&gt;
&lt;li&gt;2980..29FF; Miscellaneous Mathematical Symbols-B&lt;/li&gt;
&lt;li&gt;2A00..2AFF; Supplemental Mathematical Operators&lt;/li&gt;
&lt;li&gt;2B00..2BFF; Miscellaneous Symbols and Arrows&lt;/li&gt;
&lt;li&gt;2E00..2E7F; Supplemental Punctuation&lt;/li&gt;&lt;/ul&gt;
From these, 30 exceptions (0x2776..0x2793) are subtracted, and 150 are added. The added exceptions include the ASCII symbol and punctuation characters often used for syntax in programming languages.&lt;br /&gt;&lt;br /&gt;According to Unicode standard annex 31: &lt;i&gt;&amp;quot;With a fixed set of whitespace and syntax code points, a pattern language can then have a policy requiring all possible syntax characters (even ones currently unused) to be quoted if they are literals. Using &lt;b&gt;this policy preserves the freedom to extend the syntax in the future by using those characters&lt;/b&gt;. Past patterns on future systems will always work; future patterns on past systems will signal an error instead of silently producing the wrong results.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There are, of course, many other symbol and punctuation characters in Unicode that aren&amp;#39;t Pattern Syntax characters, and more can be added that can&amp;#39;t become Pattern Syntax characters (unless they&amp;#39;re encoded in one of the remaining 296 unassigned Pattern Syntax slots). The only language I know of that utilizes Unicode&amp;#39;s pattern syntax invariance is XML 1.0, 5th edn. Perhaps the Groovy Language reboot will be the first Turing-complete language to do so.&lt;br /&gt;&lt;br /&gt;47 of the 2464 assigned Pattern Syntax are canonically equivalent to other forms, so can be ignored. 45 of those decompositions are to some other Pattern Syntax character followed by nonspacing mark 0x338( ̸ ), e.g. ≠ is = then mark ̸ . The other two, 0x2329 and 0x232A, are singleton decompositions to 0x3008(〈) and 0x3009(〉), both also Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Within the assigned pattern characters, perhaps the second most important distinction are the bidi-mirroring glyphs, those with the &lt;i&gt;bmg&lt;/i&gt; property, each of which must be swapped for its complement when used within a right-to-left rendering context, such as within Arabic and Hebrew text. There are 144 pairs of them, such as ( and ), or [ and ]. Because such pairs are used extensively in programming languages, with balancing often required to make language syntax more readable, they are an important subset of the Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Perhaps another important subset of the Pattern Syntax are the 161 bidi-mirrored characters, those with the &lt;i&gt;bidim&lt;/i&gt; property, unmatched characters which must be mirrored when rendering, e.g. ∁ ∂ ∃ ∑ . A further subset could be characters that would be bidi-mirrored but aren&amp;#39;t because they&amp;#39;re already symmetrical, e.g. ∀ ∩ ∪ . They&amp;#39;re not indicated by any specific property, but must be guessed at based on their physical proximity to related bidi-mirrored characters in the Unicode database, e.g. ∃ is bidi-mirrored so ∀ must be symmetrical. Perhaps a specific property in a future version of Unicode would be nice.&lt;br /&gt;&lt;br /&gt;There&amp;#39;s many other Pattern Syntax characters that aren&amp;#39;t symmetrical but also aren&amp;#39;t mirroring or mirrored in a right-to-left rendering context because they&amp;#39;re considered to be &lt;i&gt;pictorial&lt;/i&gt; or &lt;i&gt;ornate&lt;/i&gt; characters, including those for box-drawing and all the arrows, such as 0x2190(←) and 0x2192(→). Unlike the Pattern Syntax property, the bidi properties of a character can change in future versions of Unicode, but for now we can&amp;#39;t use ← in programming and expect it to be rendered as → when we change the naming language to Arabic or the thematic ordering of the referents. So languages that use arrows in their syntax, such as Scala, aren&amp;#39;t future-proofed. Perhaps a future version of Unicode would add more mirroring pairs.&lt;br /&gt;&lt;br /&gt;In designing the Groovy reboot, we &lt;i&gt;do&lt;/i&gt; have 305 bidi-mirroring or -mirrored symbols to choose from, so not being able to use the arrows isn&amp;#39;t a big deal. We just need to be aware of our choices, and not make syntactic mistakes, as did the first bootup of Groovy when its project managers committed to treating every Unicode token above 0xFF as an identifier character :-(&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot will utilize the full power of Unicode in both its syntax &lt;b&gt;and&lt;/b&gt; its vocabulary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;5 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#1"&gt;Groovy Japanese&lt;/a&gt;&lt;/h1&gt;
Something strange happened the other day! It&amp;#39;s difficult to explain so I better set the scene...&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve been learning Chinese for the last 10 years, between programming and teaching, so not too quickly, and my Chinese reading is better than my speaking or listening. I&amp;#39;ve noticed learning to read new Chinese characters &lt;i&gt;is different to&lt;/i&gt; reading words in other languages in that we must use both the &lt;b&gt;visual and auditory parts of the brain at the same time&lt;/b&gt;. E.g. to read 妈, we look at 女 visually and at 马 phonetically: 女 means &amp;quot;woman&amp;quot; and 马 sounds like &amp;quot;ma&amp;quot;, so when we see the word 妈, &lt;b&gt;both the visual and auditory parts of our brain together create the meaning&lt;/b&gt; &amp;quot;mother&amp;quot;. Of course, when we&amp;#39;ve learnt the word our longterm memory kicks in instead, but there&amp;#39;s always many more characters of the 3000-4000 commonly used ones we don&amp;#39;t know.&lt;br /&gt;&lt;br /&gt;A few months ago, I tried my hand at learning to read Japanese. Because I already know most of the Kanji, they being similar in meaning to the over 2000 Chinese characters I&amp;#39;ve learnt, I figured I&amp;#39;d have a head start learning to read Japanese if I weren&amp;#39;t concerned about speaking it. So I &lt;b&gt;decided to learn it visually, seeing if I can read it and understand the meaning, but without vocalizing it&lt;/b&gt; in my head. When looking through &lt;a href="http://www.guidetojapanese.org/learn/grammar"&gt;Tae Kim&amp;#39;s online tutorial&lt;/a&gt;, I&amp;#39;d noticed most of the 46 Hiragana usually have only one grammatical or functional meaning, e.g. ます for polite register.&lt;br /&gt;&lt;br /&gt;So I started practising reading Kanji/Hiragana text from some practise books. &lt;i&gt;(Language-learning books on Japanese are second in popularity to those on English in bookshops across China. They are useful to me because I can read the explanations in Chinese!)&lt;/i&gt; But one day recently something strange happened...&lt;br /&gt;&lt;br /&gt;I was looking at some Japanese text I could easily read but then I &lt;b&gt;had to cover my left eye&lt;/b&gt; because it started itching. &lt;b&gt;Suddenly I couldn&amp;#39;t understand any of the text I was looking at&lt;/b&gt;, except for some Kanji which I already knew the Chinese pronunciation for. But then I &lt;b&gt;tried covering my right eye, and suddenly I could understand the Japanese meaning easily&lt;/b&gt; again!&lt;br /&gt;&lt;br /&gt;It seems by learning to read basic Japanese so I can understand the meaning but not pronounce the words, only one side of my brain is utilized, the same side that processes vision from my left eye.&lt;br /&gt;&lt;br /&gt;This discovery also explains something else. When I&amp;#39;m programming, I usually play English-language TV shows in the background, and can follow the stories just by listening to them, only glancing at the TV screen once or twice a minute. I can code up programs that work &lt;b&gt;and&lt;/b&gt; remember the storyline of the TV shows &lt;b&gt;when I do both at the same time!&lt;/b&gt; If I do either activity by itself I get bored easily, but when I do both simultaneouly I can easily work for hours at a time. Also... these are the &lt;b&gt;only two mental activities I&amp;#39;m able to do simultaneously&lt;/b&gt;, without either activity being impacted.&lt;br /&gt;&lt;br /&gt;So I&amp;#39;ve made a picture &lt;i&gt;(using the image from Wikipedia)&lt;/i&gt; of what it seems each side of my brain does:&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=617153" alt="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" title="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" /&gt;&lt;br /&gt;Of course, all this has implications for &lt;a href="http://groovy.codeplex.com/wikipage?title=Kanji%20meets%20Programming&amp;referringTitle=Blog04"&gt;using Kanji in programming&lt;/a&gt; to make code terser. Because &lt;b&gt;the same half of the brain that reads Kanji visually also writes programming code&lt;/b&gt;, they should gel together easily, &lt;b&gt;and&lt;/b&gt; still leave the other half of the brain free for some interpersonal activity. In theory, we could write terse programs using Kanji &lt;i&gt;as well as&lt;/i&gt; use interpersonal skills to relate to clients and colleagues, and stuff like that!&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot here at Codeplex aims to bring &lt;b&gt;all&lt;/b&gt; Unicode characters to the vocabulary of programs, not just the 96 ASCII (or 70 APL) ones. When the fake Groovy dies in the grave of Grales, the real Groovy will rise, bringing &lt;b&gt;all Unicode tokens&lt;/b&gt; for the programming half of our brains to use when we code.&lt;br /&gt;
&lt;h2&gt;See &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03&amp;referringTitle=Blog04"&gt;previous blog entries&lt;/a&gt;.&lt;/h2&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Sat, 23 Feb 2013 06:09:03 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Blog04 20130223060903A</guid></item><item><title>Updated Wiki: Blog04</title><link>http://groovy.codeplex.com/wikipage?title=Blog04&amp;version=9</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;u&gt;Gavin Groovy Grover&amp;#39;s UNICODE Blo&lt;/u&gt;g&lt;/h1&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=577534" alt="Grrrroooooveeey.jpg" title="Grrrroooooveeey.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;13 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="5"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#5"&gt;Groovy Buzzwords&lt;/a&gt;&lt;/h1&gt;
Laforge reacted to Binstock&amp;#39;s analysis by &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-td5712875.html"&gt;announcing a &amp;quot;documention effort and site redesign&amp;quot;&lt;/a&gt;: &amp;quot;&lt;i&gt;Groovy is a very mature and widely used language on the Java platform, with hundred thousands of developers worldwide. It&amp;#39;s stable and fast, flexible and readable, has got plenty of interesting use cases (DSLs, testing...), is feature-packed, and it&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few). However, one area where the Groovy project can do better is with its documentation.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s look at the truth behind all this verbiage...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Documentation effort and site redesign&lt;/b&gt;&lt;/i&gt;: Laforge is redesigning the website, perceiving Groovy&amp;#39;s problem as an image problem, but hiding it behind a &amp;quot;documentation effort&amp;quot;. The website was redesigned a mere 15 months ago. Before then the documention contents were &lt;i&gt;one click away&lt;/i&gt;, but were split into four separate pages, each two clicks away, much less convenient for Groovy users but it meant more GoogleAds revenue for Codehaus and more users needing consultancy services from SpringSource. Laforge is just pretending to care about documentation.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is a very mature language on the Java platform&lt;/b&gt;&lt;/i&gt;: Groovy is declining, at the end of its life. When GPars was released at version 1.0 after being bundled in Groovy for years, it was also announcing its own end-of-life. SpringSource and Codehaus are now milking Groovy for all they can get.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is widely used, with hundreds thousands of developers worldwide&lt;/b&gt;&lt;/i&gt;: All claims, no proof. Whenever challenged, Laforge says his clients don&amp;#39;t want to be named. More likely he doesn&amp;#39;t want them poached by someone who hasn&amp;#39;t signed his contracts.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is fast&lt;/b&gt;&lt;/i&gt;: Dynamically compiled Groovy is slo.oo.ooo.oooo.ooooo.oooo.ooo.oo.ow, as Binstock was careful to point out.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is stable&lt;/b&gt;&lt;/i&gt;: Statically compiled Groovy is bug-ug-ugg-uggy. Only last week, &lt;a href="http://stackoverflow.com/questions/14774709/groovy-2-1-0-weird-behaviour-of-switch-case-break-statement-with-compilestatic"&gt;a serious static compilation bug in Groovy 2.1.0 was reported&lt;/a&gt;. Although officially released in June 2012, Groovy 2.0 really wasn&amp;#39;t released for production use until it was bundled as part of Grails 2.2 in Dec 2012. The 6 months from June to December was unofficially &lt;b&gt;just more beta-testing with a larger base of users&lt;/b&gt;, namely those who download standalone releases of Groovy. Grails, however, doesn&amp;#39;t use any of the static compilation features in Groovy 2.0. All the testing of Groovy 2.0 was just to &lt;b&gt;make sure the inclusion of static compilation in Groovy didn&amp;#39;t break any of its dynamic compilation use in Grails&lt;/b&gt;. On the day after the Grails 2.2 release came the first beta of Groovy 2.1, which has since been officially released standalone, but hasn&amp;#39;t yet shipped with Grails. Once again, Groovy&amp;#39;s timeline is determined solely by the needs of Grails.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is flexible&lt;/b&gt;&lt;/i&gt;: Laforge is just spewing buzzwords here. To me, flexible means unhindered by syntax contraints. Clojure allows easy code reorganization and macro-level syntactic manipulation, far more flexible than Groovy.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is readable&lt;/b&gt;&lt;/i&gt;: Some people find the indention used by Python and Haskell most readable, while others find the balanced brackets used by C, Java, Javascript, Scala, Groovy, and PHP more readable. &lt;b&gt;Groovy 0.5 here at Codeplex is a proof-of-concept prototype showing how Groovy-style syntax can easily be built atop Clojure&lt;/b&gt;, which, unlike Groovy, also runs atop the .NET and Javascript platforms. Why be constrained by Groovy&amp;#39;s Antlr 2.7 based grammar when we can write our own atop Clojure?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=622834" alt="ChineseCheckers.png" title="ChineseCheckers.png" /&gt; &lt;i&gt;&lt;b&gt;Groovy has got plenty of interesting use cases (DSLs, testing)&lt;/b&gt;:&lt;/i&gt; DSL is just another buzzword. Dropping semicolons, commas, and parentheses from a syntax doesn&amp;#39;t a DSL make. IDE&amp;#39;s put them in automatically without needing to type them anyway. Virtually every language has testing frameworks.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is feature-packed&lt;/b&gt;&lt;/i&gt;: More &amp;quot;features&amp;quot; means more need for consultants and conferences. Some old features such as interceptors no longer work properly. Many new features, such as static compilation and invoke dynamic, are not production ready. In both Groovy 2.0 and 2.1, the code using invoke-dynamic is bundled in a separate jar-file which only runs on Java 7. Grails and Gradle don&amp;#39;t bundle this other invoke-dynamic jar file, and don&amp;#39;t intend to for Grails 2.3 and Groovy 2.1. The Groovy roadmap claims a new MOP will be written atop this invoke-dynamic jarfile, and ship as the sole jar in Groovy 3, but every time in the past when Theodorou&amp;#39;s started on the MOP, he&amp;#39;s been redeployed. I don&amp;#39;t believe Rocher intends to pay for it. Even if it was done, how long would it take? Other statically-typed JVM languages like Scala, Kotlin, and Ceylon are coming quickly. Scala is rising, Kotlin has IntelliJ as a delivery channel, and Ceylon has JBoss backing it.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few)&lt;/b&gt;:&lt;/i&gt; Only 2 of these have any traction in industry, and even Gradle&amp;#39;s uptake is iffy. If there were any other successful projects, Laforge would&amp;#39;ve mentioned them.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;One area where the Groovy project can do better is with its documentation&lt;/b&gt;&lt;/i&gt;: What Laforge should have said was &amp;quot;&lt;i&gt;Because I can&amp;#39;t code, I should&amp;#39;ve made myself useful by writing documentation instead. I never did, and accept responsibility for Groovy&amp;#39;s failure in this area.&lt;/i&gt;&amp;quot; But Laforge is even incapable of writing correct documentation, as shown by &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog02#7"&gt;his buggy Mars Rover attempt&lt;/a&gt;, let alone accepting responsibility for it. Laforge is second only to Rocher for causing Groovy&amp;#39;s terminal decline.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="4"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#4"&gt;Groovy Confusion&lt;/a&gt;&lt;/h1&gt;
Once again, mixed messages are coming out regarding the Codehaus version of the Groovy Language.&lt;br /&gt;&lt;br /&gt;On 26 June 2012, Tech Lead Jochen Theodorou &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-tt5710334.html"&gt;announced he was beginning work on Groovy 3&lt;/a&gt;, kicking off a discussion thread with 90 replies. I asked if &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-td5710334.html#a5710338"&gt;Groovy 3 will contain a new MOP&lt;/a&gt;, to which Guillaume Laforge replied with the passive voice &amp;quot;The MOP needs to be rewritten&amp;quot;. But the MOP rewrite wasn&amp;#39;t begun.&lt;br /&gt;&lt;br /&gt;On 11 January Jochen announced &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-tt5712419.html"&gt;I will now start the implementation of the new MOP&lt;/a&gt;&amp;quot;. Graeme Rocher said he &lt;b&gt;wanted binary compatibility and ability to run old compiled Groovy code&lt;/b&gt;. Suspecting Rocher was setting up the cancellation of the MOP rewrite, I asked if &lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-td5712419.html#a5712427"&gt;VMWare&amp;#39;s not willing to pay for Jochen to rewrite the MOP if it doesn&amp;#39;t do exactly what the current one does?&lt;/a&gt; Rocher got defensive with the impersonal &amp;quot;the new MOP needs writing&amp;quot;.&lt;br /&gt;&lt;br /&gt;A week ago, VMWare told the US SEC they intended retrenching 900 workers and exiting some business lines. They didn&amp;#39;t say if they would trim up SpringSource before they sell it to JBoss, or if they would sell it to Oracle as a white elephant ripe for trimming.&lt;br /&gt;&lt;br /&gt;Two days ago, Laforge &lt;a href="http://www.infoq.com/news/2013/02/Groovy2_1_Release#.UREiSUHeTs0.dzone"&gt;dug into his posting quota on InfoQ to announce Groovy 2.1&amp;#39;s release&lt;/a&gt; a week late &lt;i&gt;(perhaps he was too busy being re-interviewed for his own job, and traded in a real developer like Champeau to save his own skin)&lt;/i&gt;. Even though Laforge didn&amp;#39;t do any technical work on Groovy 2.1, he kept on refering to &amp;quot;we&amp;quot;, putting people off by not acknowledging any of the actual programmers such as Jochen or Fred Janon in the InfoQ article or the linked-to release notes. Laforge also put people off with meaningless marketing talk, such as &lt;i&gt;&amp;quot;Groovy 2.1’s distribution bundles the recently released GPars 1.0&amp;quot;&lt;/i&gt;. Groovy has bundled the latest version of GPars for years. When GPars changed its version number to 1.0, both Groovy 2.0.x and 2.1 upgraded to it like they always had.&lt;br /&gt;&lt;br /&gt;Yesterday, Dr Dobbs editor Andrew Binstock wrote &lt;a href="http://www.drdobbs.com/jvm/the-groovy-conundrum/240147731"&gt;some pessimistic views on Codehaus Groovy&amp;#39;s future&lt;/a&gt;. He was diplomatic, though, e.g. &lt;i&gt;&amp;quot;Keying off ideas prototyped by Alex Tkachman, the Groovy team added static typing&amp;quot;&lt;/i&gt;. That&amp;#39;s putting it nicely. Unfortunately, he also neglected to mention Theodorou&amp;#39;s name anywhere, the technical guru who did most of the work, even though he managed to mention project manager Laforge. I suspect Laforge sent him some Q&amp;amp;A copy regarding Groovy 2.1, but Dr Dobbs isn&amp;#39;t InfoQ. Binstock instead published an analysis. His conclusion...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;quot;[Groovy is] a language primed to be a major player. There is the conundrum. The endless variety of features requires considerable documentation, which is simply not available, especially for the advanced features that give Groovy much of its benefit. And so, if you jump in today, you&amp;#39;ll find the language is easy to learn, but hard to master. Fortunately, this limitation is not incurable. However, time is of the essence as Groovy&amp;#39;s principal competitor for the hearts and minds of Java developers — Scala — has a small, laser-focused company behind it, which revs the product frequently and generates considerable documentation. If Groovy acts soon, it can retain leadership among Java alternatives. If not, it will have to resign itself to being an also-ran.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Binstock misses the point of Grails and Groovy&amp;#39;s business model. A lack of usable documentation means developers must pay for SpringSource consultants and seats at conferences, where lots of money is made and divvied up. By throwing in endless features, they increase the complexity of Groovy and the need for consultants from the supply side, just as the lack of documentation creates the need for conferences from the demand side. The Groovy &amp;quot;Bible&amp;quot; didn&amp;#39;t bring in much profit for its authors so why should they bother with a 2nd edn? Grails and Groovy is about making money &lt;i&gt;now&lt;/i&gt; for those involved, not investing it. Even the &lt;b&gt;&amp;quot;groovymag&amp;quot; charges money for an online subscription, while the &amp;quot;Week with Scala&amp;quot; is free!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If someone seriously creates independent doco for Groovy, the next version of Groovy changes slightly to lessen the value of the doco and increase the need for a consultant or conference. They keep a tight gateway over their test suites. I&amp;#39;ve experienced this first-hand. When I was writing free online doco for Groovy 5 yrs ago, &lt;b&gt;sociopath Rocher just couldn&amp;#39;t relate as an equal partner to me in a bazaar&lt;/b&gt;. He just had to prod people into targeting me, eventually destroying my desire to make Groovy simple to use, so he could keep as much of the take as possible at the top reaches of the cathedral.&lt;br /&gt;&lt;br /&gt;Binstock does &lt;b&gt;correctly conclude Groovy will soon be an also-ran&lt;/b&gt; because of that business strategy. Rod Johnson, former CEO of Grails company SpringSource, is now leading the board of that laser-focused Scala company. He no doubt understands the value of &amp;quot;taking a cut of a huge pie&amp;quot; instead of &amp;quot;owning all of a tiny pie&amp;quot;, and is investing in growing Scala instead of strangling it. The project managers behind Groovy, Rocher and Laforge, are probably incapable of changing their ingrained habits to steer Groovy in a new direction. They will, however, take something else away from Binstock&amp;#39;s analysis: that Groovy needs a new name for version 3. Yes, they&amp;#39;ll see a brand perception problem, rather than a widely recognized lack-of-documentation problem, and they&amp;#39;ll get busy creating a new imagery for Groovy, instead of making it easy for people to master.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="3"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#3"&gt;Roadmap&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;I&amp;#39;m moving the roadmap from its own page to this blog entry...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The Groovy Language here at Codeplex will be built with Unicode graphemes, unlike most programming languages (e.g. the fake Groovy at Codehaus) which are built solely with Ascii tokens, with bare Unicode codepoints added in as an afterthought. The rough roadmap for evolving Groovy, beginning with lower numbered items, is...&lt;br /&gt;
&lt;h3&gt;1. Groovy Grammar&lt;/h3&gt;Build a recursive-descent parsing library that can look at the internal structure of CJK tokens, and &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20Grammar%20for%20Programming&amp;referringTitle=Blog04"&gt;define the Groovy grammar&lt;/a&gt;. The grammar atop Clojure will enable developers to extend the Groovy syntax easily using parser-level macros. &lt;a href="http://groovy.codeplex.com/releases/view/91000"&gt;The latest version&lt;/a&gt; can parse a healthy subset of the Groovy grammar.&lt;br /&gt;
&lt;h3&gt;2. GUI with IME&lt;/h3&gt;Create a GUI with a input method editor (IME) to enable all Unicode tokens to be entered easily, and a J-style interactive learning environment for the Groovy Language syntax. Use &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20for%20Java%20Newbies&amp;referringTitle=Blog04"&gt;these 3-yr-old notes for learning Groovy 1.5&lt;/a&gt; as a base for writing a comprehensive test suite.&lt;br /&gt;
&lt;h3&gt;3. Unicode Properties&lt;/h3&gt;We&amp;#39;ll use &lt;a href="http://groovy.codeplex.com/wikipage?title=Unicode%20Inheritance&amp;referringTitle=Blog04"&gt;inheritance hierarchies&lt;/a&gt; to represent all the Unicode characters, one for the codepoints based on the general category and certain relevant boolean properties, the other for various decompositions. We&amp;#39;ve yet to analyze the information inside the Unihan variant data.&lt;br /&gt;
&lt;h3&gt;4. CJK Decomposition Data&lt;/h3&gt;The CJK Decomposition Data File is a graphical analysis of the approx 75,000 Chinese/Japanese characters in Unicode. They utilize approx 11,000 intermediate decompositions which are not themselves in Unicode. See &lt;a href="http://cjkdecomp.codeplex.com"&gt;the main project site&lt;/a&gt; for more details. The latest version, 0.4.0, was released on 15 August 2012. See also some notes on &lt;a href="http://groovy.codeplex.com/wikipage?title=Reflection%20and%20repetitions%20in%20the%20CJK%20decomposition%20data&amp;referringTitle=Blog04"&gt;using reflection in the CJK decompositions&lt;/a&gt;. We&amp;#39;ll use these decomps to design the IME keys for entering CJK tokens into the Groovy GUI.&lt;br /&gt;
&lt;h3&gt;5. Peer-to-Peer Engine&lt;/h3&gt;Enable the most common operator symbols and foreign-language names to be shared automatically between Groovy IME&amp;#39;s using a peer-to-peer protocol so developers will know the most commonly used names and symbols when writing code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;6 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="2"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#2"&gt;Unicode Pattern Syntax Tokens&lt;/a&gt;&lt;/h1&gt;
Each of the million-plus Unicode characters has about 50 properties associated with it. Most of them can change between different versions of Unicode or for defining private-use characters, except for six of them:
&lt;ul&gt;&lt;li&gt;Name (na)&lt;/li&gt;
&lt;li&gt;Jamo Short Name (jsn)&lt;/li&gt;
&lt;li&gt;Canonical Combining Class (ccc)&lt;/li&gt;
&lt;li&gt;Decomposition Mapping (dm)&lt;/li&gt;
&lt;li&gt;Pattern Syntax (PatSyn)&lt;/li&gt;
&lt;li&gt;Pattern White Space (PatWS)&lt;/li&gt;&lt;/ul&gt;
The first four will change from their default to a lifelong value for newly assigned characters, though. The other two, Pattern Syntax and Pattern White Space properties, both boolean values, will never change even when the character is being newly assigned. Only 11 characters have the PatWS property so they&amp;#39;re not as interesting as those with the PatSyn property, 2760 of them, 296 of which are still unassigned in Unicode 6.1.&lt;br /&gt;&lt;br /&gt;The unassigned characters are given the PatSyn property by defining all characters in certain blocks (rather than characters) as having the PatSyn property:
&lt;ul&gt;&lt;li&gt;2190..21FF; Arrows&lt;/li&gt;
&lt;li&gt;2200..22FF; Mathematical Operators&lt;/li&gt;
&lt;li&gt;2300..23FF; Miscellaneous Technical&lt;/li&gt;
&lt;li&gt;2400..243F; Control Pictures&lt;/li&gt;
&lt;li&gt;2440..245F; Optical Character Recognition&lt;/li&gt;
&lt;li&gt;2500..257F; Box Drawing&lt;/li&gt;
&lt;li&gt;2580..259F; Block Elements&lt;/li&gt;
&lt;li&gt;25A0..25FF; Geometric Shapes&lt;/li&gt;
&lt;li&gt;2600..26FF; Miscellaneous Symbols&lt;/li&gt;
&lt;li&gt;2700..27BF; Dingbats&lt;/li&gt;
&lt;li&gt;27C0..27EF; Miscellaneous Mathematical Symbols-A&lt;/li&gt;
&lt;li&gt;27F0..27FF; Supplemental Arrows-A&lt;/li&gt;
&lt;li&gt;2800..28FF; Braille Patterns&lt;/li&gt;
&lt;li&gt;2900..297F; Supplemental Arrows-B&lt;/li&gt;
&lt;li&gt;2980..29FF; Miscellaneous Mathematical Symbols-B&lt;/li&gt;
&lt;li&gt;2A00..2AFF; Supplemental Mathematical Operators&lt;/li&gt;
&lt;li&gt;2B00..2BFF; Miscellaneous Symbols and Arrows&lt;/li&gt;
&lt;li&gt;2E00..2E7F; Supplemental Punctuation&lt;/li&gt;&lt;/ul&gt;
From these, 30 exceptions (0x2776..0x2793) are subtracted, and 150 are added. The added exceptions include the ASCII symbol and punctuation characters often used for syntax in programming languages.&lt;br /&gt;&lt;br /&gt;According to Unicode standard annex 31: &lt;i&gt;&amp;quot;With a fixed set of whitespace and syntax code points, a pattern language can then have a policy requiring all possible syntax characters (even ones currently unused) to be quoted if they are literals. Using &lt;b&gt;this policy preserves the freedom to extend the syntax in the future by using those characters&lt;/b&gt;. Past patterns on future systems will always work; future patterns on past systems will signal an error instead of silently producing the wrong results.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There are, of course, many other symbol and punctuation characters in Unicode that aren&amp;#39;t Pattern Syntax characters, and more can be added that can&amp;#39;t become Pattern Syntax characters (unless they&amp;#39;re encoded in one of the remaining 296 unassigned Pattern Syntax slots). The only language I know of that utilizes Unicode&amp;#39;s pattern syntax invariance is XML 1.0, 5th edn. Perhaps the Groovy Language reboot will be the first Turing-complete language to do so.&lt;br /&gt;&lt;br /&gt;47 of the 2464 assigned Pattern Syntax are canonically equivalent to other forms, so can be ignored. 45 of those decompositions are to some other Pattern Syntax character followed by nonspacing mark 0x338( ̸ ), e.g. ≠ is = then mark ̸ . The other two, 0x2329 and 0x232A, are singleton decompositions to 0x3008(〈) and 0x3009(〉), both also Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Within the assigned pattern characters, perhaps the second most important distinction are the bidi-mirroring glyphs, those with the &lt;i&gt;bmg&lt;/i&gt; property, each of which must be swapped for its complement when used within a right-to-left rendering context, such as within Arabic and Hebrew text. There are 144 pairs of them, such as ( and ), or [ and ]. Because such pairs are used extensively in programming languages, with balancing often required to make language syntax more readable, they are an important subset of the Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Perhaps another important subset of the Pattern Syntax are the 161 bidi-mirrored characters, those with the &lt;i&gt;bidim&lt;/i&gt; property, unmatched characters which must be mirrored when rendering, e.g. ∁ ∂ ∃ ∑ . A further subset could be characters that would be bidi-mirrored but aren&amp;#39;t because they&amp;#39;re already symmetrical, e.g. ∀ ∩ ∪ . They&amp;#39;re not indicated by any specific property, but must be guessed at based on their physical proximity to related bidi-mirrored characters in the Unicode database, e.g. ∃ is bidi-mirrored so ∀ must be symmetrical. Perhaps a specific property in a future version of Unicode would be nice.&lt;br /&gt;&lt;br /&gt;There&amp;#39;s many other Pattern Syntax characters that aren&amp;#39;t symmetrical but also aren&amp;#39;t mirroring or mirrored in a right-to-left rendering context because they&amp;#39;re considered to be &lt;i&gt;pictorial&lt;/i&gt; or &lt;i&gt;ornate&lt;/i&gt; characters, including those for box-drawing and all the arrows, such as 0x2190(←) and 0x2192(→). Unlike the Pattern Syntax property, the bidi properties of a character can change in future versions of Unicode, but for now we can&amp;#39;t use ← in programming and expect it to be rendered as → when we change the naming language to Arabic or the thematic ordering of the referents. So languages that use arrows in their syntax, such as Scala, aren&amp;#39;t future-proofed. Perhaps a future version of Unicode would add more mirroring pairs.&lt;br /&gt;&lt;br /&gt;In designing the Groovy reboot, we &lt;i&gt;do&lt;/i&gt; have 305 bidi-mirroring or -mirrored symbols to choose from, so not being able to use the arrows isn&amp;#39;t a big deal. We just need to be aware of our choices, and not make syntactic mistakes, as did the first bootup of Groovy when its project managers committed to treating every Unicode token above 0xFF as an identifier character :-(&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot will utilize the full power of Unicode in both its syntax &lt;b&gt;and&lt;/b&gt; its vocabulary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;5 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#1"&gt;Groovy Japanese&lt;/a&gt;&lt;/h1&gt;
Something strange happened the other day! It&amp;#39;s difficult to explain so I better set the scene...&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve been learning Chinese for the last 10 years, between programming and teaching, so not too quickly, and my Chinese reading is better than my speaking or listening. I&amp;#39;ve noticed learning to read new Chinese characters &lt;i&gt;is different to&lt;/i&gt; reading words in other languages in that we must use both the &lt;b&gt;visual and auditory parts of the brain at the same time&lt;/b&gt;. E.g. to read 妈, we look at 女 visually and at 马 phonetically: 女 means &amp;quot;woman&amp;quot; and 马 sounds like &amp;quot;ma&amp;quot;, so when we see the word 妈, &lt;b&gt;both the visual and auditory parts of our brain together create the meaning&lt;/b&gt; &amp;quot;mother&amp;quot;. Of course, when we&amp;#39;ve learnt the word our longterm memory kicks in instead, but there&amp;#39;s always many more characters of the 3000-4000 commonly used ones we don&amp;#39;t know.&lt;br /&gt;&lt;br /&gt;A few months ago, I tried my hand at learning to read Japanese. Because I already know most of the Kanji, they being similar in meaning to the over 2000 Chinese characters I&amp;#39;ve learnt, I figured I&amp;#39;d have a head start learning to read Japanese if I weren&amp;#39;t concerned about speaking it. So I &lt;b&gt;decided to learn it visually, seeing if I can read it and understand the meaning, but without vocalizing it&lt;/b&gt; in my head. When looking through &lt;a href="http://www.guidetojapanese.org/learn/grammar"&gt;Tae Kim&amp;#39;s online tutorial&lt;/a&gt;, I&amp;#39;d noticed most of the 46 Hiragana usually have only one grammatical or functional meaning, e.g. ます for polite register.&lt;br /&gt;&lt;br /&gt;So I started practising reading Kanji/Hiragana text from some practise books. &lt;i&gt;(Language-learning books on Japanese are second in popularity to those on English in bookshops across China. They are useful to me because I can read the explanations in Chinese!)&lt;/i&gt; But one day recently something strange happened...&lt;br /&gt;&lt;br /&gt;I was looking at some Japanese text I could easily read but then I &lt;b&gt;had to cover my left eye&lt;/b&gt; because it started itching. &lt;b&gt;Suddenly I couldn&amp;#39;t understand any of the text I was looking at&lt;/b&gt;, except for some Kanji which I already knew the Chinese pronunciation for. But then I &lt;b&gt;tried covering my right eye, and suddenly I could understand the Japanese meaning easily&lt;/b&gt; again!&lt;br /&gt;&lt;br /&gt;It seems by learning to read basic Japanese so I can understand the meaning but not pronounce the words, only one side of my brain is utilized, the same side that processes vision from my left eye.&lt;br /&gt;&lt;br /&gt;This discovery also explains something else. When I&amp;#39;m programming, I usually play English-language TV shows in the background, and can follow the stories just by listening to them, only glancing at the TV screen once or twice a minute. I can code up programs that work &lt;b&gt;and&lt;/b&gt; remember the storyline of the TV shows &lt;b&gt;when I do both at the same time!&lt;/b&gt; If I do either activity by itself I get bored easily, but when I do both simultaneouly I can easily work for hours at a time. Also... these are the &lt;b&gt;only two mental activities I&amp;#39;m able to do simultaneously&lt;/b&gt;, without either activity being impacted.&lt;br /&gt;&lt;br /&gt;So I&amp;#39;ve made a picture &lt;i&gt;(using the image from Wikipedia)&lt;/i&gt; of what it seems each side of my brain does:&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=617153" alt="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" title="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" /&gt;&lt;br /&gt;Of course, all this has implications for &lt;a href="http://groovy.codeplex.com/wikipage?title=Kanji%20meets%20Programming&amp;referringTitle=Blog04"&gt;using Kanji in programming&lt;/a&gt; to make code terser. Because &lt;b&gt;the same half of the brain that reads Kanji visually also writes programming code&lt;/b&gt;, they should gel together easily, &lt;b&gt;and&lt;/b&gt; still leave the other half of the brain free for some interpersonal activity. In theory, we could write terse programs using Kanji &lt;i&gt;as well as&lt;/i&gt; use interpersonal skills to relate to clients and colleagues, and stuff like that!&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot here at Codeplex aims to bring &lt;b&gt;all&lt;/b&gt; Unicode characters to the vocabulary of programs, not just the 96 ASCII (or 70 APL) ones. When the fake Groovy dies in the grave of Grales, the real Groovy will rise, bringing &lt;b&gt;all Unicode tokens&lt;/b&gt; for the programming half of our brains to use when we code.&lt;br /&gt;
&lt;h2&gt;See &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03&amp;referringTitle=Blog04"&gt;previous blog entries&lt;/a&gt;.&lt;/h2&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Wed, 13 Feb 2013 06:11:42 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Blog04 20130213061142A</guid></item><item><title>Updated Wiki: Blog04</title><link>http://groovy.codeplex.com/wikipage?title=Blog04&amp;version=8</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;u&gt;Gavin Groovy Grover&amp;#39;s UNICODE Blo&lt;/u&gt;g&lt;/h1&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=577534" alt="Grrrroooooveeey.jpg" title="Grrrroooooveeey.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;13 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="5"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#5"&gt;Groovy Buzzwords&lt;/a&gt;&lt;/h1&gt;
Laforge reacted to Binstock&amp;#39;s analysis by &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-td5712875.html"&gt;announcing a &amp;quot;documention effort and site redesign&amp;quot;&lt;/a&gt;: &amp;quot;&lt;i&gt;Groovy is a very mature and widely used language on the Java platform, with hundred thousands of developers worldwide. It&amp;#39;s stable and fast, flexible and readable, has got plenty of interesting use cases (DSLs, testing...), is feature-packed, and it&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few). However, one area where the Groovy project can do better is with its documentation.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s look at the truth behind all this verbiage...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Documentation effort and site redesign&lt;/b&gt;&lt;/i&gt;: Laforge is redesigning the website, perceiving Groovy&amp;#39;s problem as an image problem, but hiding it behind a &amp;quot;documentation effort&amp;quot;. The website was redesigned a mere 15 months ago. Before then the documention contents were &lt;i&gt;one click away&lt;/i&gt;, but were split into four separate pages, each two clicks away, much less convenient for Groovy users but it meant more GoogleAds revenue for Codehaus and more users needing consultancy services from SpringSource. Laforge is just pretending to care about documentation.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is a very mature language on the Java platform&lt;/b&gt;&lt;/i&gt;: Groovy is declining, at the end of its life. When GPars was released at version 1.0 after being bundled in Groovy for years, it was also announcing its own end-of-life. SpringSource and Codehaus are now milking Groovy for all they can get.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is widely used, with hundreds thousands of developers worldwide&lt;/b&gt;&lt;/i&gt;: All claims, no proof. Whenever challenged, Laforge says his clients don&amp;#39;t want to be named. More likely he doesn&amp;#39;t want them poached by someone who hasn&amp;#39;t signed his contracts.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is fast&lt;/b&gt;&lt;/i&gt;: Dynamically compiled Groovy is slo.oo.ooo.oooo.ooooo.oooo.ooo.oo.ow, as Binstock was careful to point out.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is stable&lt;/b&gt;&lt;/i&gt;: Statically compiled Groovy is bug-ug-ugg-uggy. Only last week, &lt;a href="http://stackoverflow.com/questions/14774709/groovy-2-1-0-weird-behaviour-of-switch-case-break-statement-with-compilestatic"&gt;a serious static compilation bug in Groovy 2.1.0 was reported&lt;/a&gt;. Although officially released in June 2012, Groovy 2.0 really wasn&amp;#39;t released for production use until it was bundled as part of Grails 2.2 in Dec 2012. The 6 months from June to December was unofficially &lt;b&gt;just more beta-testing with a larger base of users&lt;/b&gt;, namely those who download standalone releases of Groovy. Grails, however, doesn&amp;#39;t use any of the static compilation features in Groovy 2.0. All the testing of Groovy 2.0 was just to &lt;b&gt;make sure the inclusion of static compilation in Groovy didn&amp;#39;t break any of its dynamic compilation use in Grails&lt;/b&gt;. On the day after the Grails 2.2 release came the first beta of Groovy 2.1, which has since been officially released standalone, but hasn&amp;#39;t yet shipped with Grails. Once again, Groovy&amp;#39;s timeline is determined solely by the needs of Grails.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is flexible&lt;/b&gt;&lt;/i&gt;: Laforge is just spewing buzzwords here. To me, flexible means unhindered by syntax contraints. Clojure allows easy code reorganization and macro-level syntactic manipulation, far more flexible than Groovy.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is readable&lt;/b&gt;&lt;/i&gt;: Some people find the indention used by Python and Haskell most readable, while others find the balanced brackets used by C, Java, Javascript, Scala, Groovy, and PHP more readable. &lt;b&gt;Groovy 0.5 here at Codeplex is a proof-of-concept prototype showing how Groovy-style syntax can easily be built atop Clojure&lt;/b&gt;, which, unlike Groovy, also runs atop the .NET and Javascript platforms. Why be constrained by Groovy&amp;#39;s Antlr 2.7 based grammar when we can write our own atop Clojure?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=622834" alt="ChineseCheckers.png" title="ChineseCheckers.png" /&gt; &lt;i&gt;&lt;b&gt;Groovy has got plenty of interesting use cases (DSLs, testing)&lt;/b&gt;:&lt;/i&gt; DSL is just another buzzword. Dropping semicolons, commas, and parentheses from a syntax doesn&amp;#39;t a DSL make. IDE&amp;#39;s put them in automatically without needing to type them anyway. Virtually every language has testing frameworks.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy is feature-packed&lt;/b&gt;&lt;/i&gt;: More &amp;quot;features&amp;quot; means more need for consultants and conferences. Some old features such as interceptors no longer work properly. Many new features, such as static compilation and invoke dynamic, are not production ready. In both Groovy 2.0 and 2.1, the code using invoke-dynamic is bundled in a separate jar-file which only runs on Java 7. Grails and Gradle don&amp;#39;t bundle this other invoke-dynamic jar file, and don&amp;#39;t intend to for Grails 2.3 and Groovy 2.1. The Groovy roadmap claims a new MOP will be written atop this invoke-dynamic jarfile, and ship as the sole jar in Groovy 3, but every time in the past when Theodorou&amp;#39;s started on the MOP, he&amp;#39;s been redeployed. I don&amp;#39;t believe Rocher intends to pay for it. Even if it was done, how long would it take? Other statically-typed JVM languages like Scala, Kotlin, and Ceylon are coming quickly. Scala is rising, Kotlin has IntelliJ as a delivery channel, and Ceylon has JBoss backing it.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Groovy&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few)&lt;/b&gt;:&lt;/i&gt; Only 2 of these have any traction in industry, and even Gradle&amp;#39;s uptake is iffy. If there were any other successful projects, Laforge would&amp;#39;ve mentioned them.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;One area where the Groovy project can do better is with its documentation&lt;/b&gt;&lt;/i&gt;: What Laforge should have said was &amp;quot;Because I can&amp;#39;t code, I should&amp;#39;ve made myself useful by writing documentation instead. I never did, and accept responsibility for Groovy&amp;#39;s failure in this area.&amp;quot; But Laforge is even incapable of writing correct documentation, as shown by &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog02#7"&gt;his buggy Mars Rover attempt&lt;/a&gt;, let alone accepting responsibility for it. Laforge is second alone to Rocher for causing Groovy&amp;#39;s terminal decline.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="4"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#4"&gt;Groovy Confusion&lt;/a&gt;&lt;/h1&gt;
Once again, mixed messages are coming out regarding the Codehaus version of the Groovy Language.&lt;br /&gt;&lt;br /&gt;On 26 June 2012, Tech Lead Jochen Theodorou &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-tt5710334.html"&gt;announced he was beginning work on Groovy 3&lt;/a&gt;, kicking off a discussion thread with 90 replies. I asked if &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-td5710334.html#a5710338"&gt;Groovy 3 will contain a new MOP&lt;/a&gt;, to which Guillaume Laforge replied with the passive voice &amp;quot;The MOP needs to be rewritten&amp;quot;. But the MOP rewrite wasn&amp;#39;t begun.&lt;br /&gt;&lt;br /&gt;On 11 January Jochen announced &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-tt5712419.html"&gt;I will now start the implementation of the new MOP&lt;/a&gt;&amp;quot;. Graeme Rocher said he &lt;b&gt;wanted binary compatibility and ability to run old compiled Groovy code&lt;/b&gt;. Suspecting Rocher was setting up the cancellation of the MOP rewrite, I asked if &lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-td5712419.html#a5712427"&gt;VMWare&amp;#39;s not willing to pay for Jochen to rewrite the MOP if it doesn&amp;#39;t do exactly what the current one does?&lt;/a&gt; Rocher got defensive with the impersonal &amp;quot;the new MOP needs writing&amp;quot;.&lt;br /&gt;&lt;br /&gt;A week ago, VMWare told the US SEC they intended retrenching 900 workers and exiting some business lines. They didn&amp;#39;t say if they would trim up SpringSource before they sell it to JBoss, or if they would sell it to Oracle as a white elephant ripe for trimming.&lt;br /&gt;&lt;br /&gt;Two days ago, Laforge &lt;a href="http://www.infoq.com/news/2013/02/Groovy2_1_Release#.UREiSUHeTs0.dzone"&gt;dug into his posting quota on InfoQ to announce Groovy 2.1&amp;#39;s release&lt;/a&gt; a week late &lt;i&gt;(perhaps he was too busy being re-interviewed for his own job, and traded in a real developer like Champeau to save his own skin)&lt;/i&gt;. Even though Laforge didn&amp;#39;t do any technical work on Groovy 2.1, he kept on refering to &amp;quot;we&amp;quot;, putting people off by not acknowledging any of the actual programmers such as Jochen or Fred Janon in the InfoQ article or the linked-to release notes. Laforge also put people off with meaningless marketing talk, such as &lt;i&gt;&amp;quot;Groovy 2.1’s distribution bundles the recently released GPars 1.0&amp;quot;&lt;/i&gt;. Groovy has bundled the latest version of GPars for years. When GPars changed its version number to 1.0, both Groovy 2.0.x and 2.1 upgraded to it like they always had.&lt;br /&gt;&lt;br /&gt;Yesterday, Dr Dobbs editor Andrew Binstock wrote &lt;a href="http://www.drdobbs.com/jvm/the-groovy-conundrum/240147731"&gt;some pessimistic views on Codehaus Groovy&amp;#39;s future&lt;/a&gt;. He was diplomatic, though, e.g. &lt;i&gt;&amp;quot;Keying off ideas prototyped by Alex Tkachman, the Groovy team added static typing&amp;quot;&lt;/i&gt;. That&amp;#39;s putting it nicely. Unfortunately, he also neglected to mention Theodorou&amp;#39;s name anywhere, the technical guru who did most of the work, even though he managed to mention project manager Laforge. I suspect Laforge sent him some Q&amp;amp;A copy regarding Groovy 2.1, but Dr Dobbs isn&amp;#39;t InfoQ. Binstock instead published an analysis. His conclusion...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;quot;[Groovy is] a language primed to be a major player. There is the conundrum. The endless variety of features requires considerable documentation, which is simply not available, especially for the advanced features that give Groovy much of its benefit. And so, if you jump in today, you&amp;#39;ll find the language is easy to learn, but hard to master. Fortunately, this limitation is not incurable. However, time is of the essence as Groovy&amp;#39;s principal competitor for the hearts and minds of Java developers — Scala — has a small, laser-focused company behind it, which revs the product frequently and generates considerable documentation. If Groovy acts soon, it can retain leadership among Java alternatives. If not, it will have to resign itself to being an also-ran.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Binstock misses the point of Grails and Groovy&amp;#39;s business model. A lack of usable documentation means developers must pay for SpringSource consultants and seats at conferences, where lots of money is made and divvied up. By throwing in endless features, they increase the complexity of Groovy and the need for consultants from the supply side, just as the lack of documentation creates the need for conferences from the demand side. The Groovy &amp;quot;Bible&amp;quot; didn&amp;#39;t bring in much profit for its authors so why should they bother with a 2nd edn? Grails and Groovy is about making money &lt;i&gt;now&lt;/i&gt; for those involved, not investing it. Even the &lt;b&gt;&amp;quot;groovymag&amp;quot; charges money for an online subscription, while the &amp;quot;Week with Scala&amp;quot; is free!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If someone seriously creates independent doco for Groovy, the next version of Groovy changes slightly to lessen the value of the doco and increase the need for a consultant or conference. They keep a tight gateway over their test suites. I&amp;#39;ve experienced this first-hand. When I was writing free online doco for Groovy 5 yrs ago, &lt;b&gt;sociopath Rocher just couldn&amp;#39;t relate as an equal partner to me in a bazaar&lt;/b&gt;. He just had to prod people into targeting me, eventually destroying my desire to make Groovy simple to use, so he could keep as much of the take as possible at the top reaches of the cathedral.&lt;br /&gt;&lt;br /&gt;Binstock does &lt;b&gt;correctly conclude Groovy will soon be an also-ran&lt;/b&gt; because of that business strategy. Rod Johnson, former CEO of Grails company SpringSource, is now leading the board of that laser-focused Scala company. He no doubt understands the value of &amp;quot;taking a cut of a huge pie&amp;quot; instead of &amp;quot;owning all of a tiny pie&amp;quot;, and is investing in growing Scala instead of strangling it. The project managers behind Groovy, Rocher and Laforge, are probably incapable of changing their ingrained habits to steer Groovy in a new direction. They will, however, take something else away from Binstock&amp;#39;s analysis: that Groovy needs a new name for version 3. Yes, they&amp;#39;ll see a brand perception problem, rather than a widely recognized lack-of-documentation problem, and they&amp;#39;ll get busy creating a new imagery for Groovy, instead of making it easy for people to master.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="3"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#3"&gt;Roadmap&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;I&amp;#39;m moving the roadmap from its own page to this blog entry...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The Groovy Language here at Codeplex will be built with Unicode graphemes, unlike most programming languages (e.g. the fake Groovy at Codehaus) which are built solely with Ascii tokens, with bare Unicode codepoints added in as an afterthought. The rough roadmap for evolving Groovy, beginning with lower numbered items, is...&lt;br /&gt;
&lt;h3&gt;1. Groovy Grammar&lt;/h3&gt;Build a recursive-descent parsing library that can look at the internal structure of CJK tokens, and &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20Grammar%20for%20Programming&amp;referringTitle=Blog04"&gt;define the Groovy grammar&lt;/a&gt;. The grammar atop Clojure will enable developers to extend the Groovy syntax easily using parser-level macros. &lt;a href="http://groovy.codeplex.com/releases/view/91000"&gt;The latest version&lt;/a&gt; can parse a healthy subset of the Groovy grammar.&lt;br /&gt;
&lt;h3&gt;2. GUI with IME&lt;/h3&gt;Create a GUI with a input method editor (IME) to enable all Unicode tokens to be entered easily, and a J-style interactive learning environment for the Groovy Language syntax. Use &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20for%20Java%20Newbies&amp;referringTitle=Blog04"&gt;these 3-yr-old notes for learning Groovy 1.5&lt;/a&gt; as a base for writing a comprehensive test suite.&lt;br /&gt;
&lt;h3&gt;3. Unicode Properties&lt;/h3&gt;We&amp;#39;ll use &lt;a href="http://groovy.codeplex.com/wikipage?title=Unicode%20Inheritance&amp;referringTitle=Blog04"&gt;inheritance hierarchies&lt;/a&gt; to represent all the Unicode characters, one for the codepoints based on the general category and certain relevant boolean properties, the other for various decompositions. We&amp;#39;ve yet to analyze the information inside the Unihan variant data.&lt;br /&gt;
&lt;h3&gt;4. CJK Decomposition Data&lt;/h3&gt;The CJK Decomposition Data File is a graphical analysis of the approx 75,000 Chinese/Japanese characters in Unicode. They utilize approx 11,000 intermediate decompositions which are not themselves in Unicode. See &lt;a href="http://cjkdecomp.codeplex.com"&gt;the main project site&lt;/a&gt; for more details. The latest version, 0.4.0, was released on 15 August 2012. See also some notes on &lt;a href="http://groovy.codeplex.com/wikipage?title=Reflection%20and%20repetitions%20in%20the%20CJK%20decomposition%20data&amp;referringTitle=Blog04"&gt;using reflection in the CJK decompositions&lt;/a&gt;. We&amp;#39;ll use these decomps to design the IME keys for entering CJK tokens into the Groovy GUI.&lt;br /&gt;
&lt;h3&gt;5. Peer-to-Peer Engine&lt;/h3&gt;Enable the most common operator symbols and foreign-language names to be shared automatically between Groovy IME&amp;#39;s using a peer-to-peer protocol so developers will know the most commonly used names and symbols when writing code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;6 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="2"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#2"&gt;Unicode Pattern Syntax Tokens&lt;/a&gt;&lt;/h1&gt;
Each of the million-plus Unicode characters has about 50 properties associated with it. Most of them can change between different versions of Unicode or for defining private-use characters, except for six of them:
&lt;ul&gt;&lt;li&gt;Name (na)&lt;/li&gt;
&lt;li&gt;Jamo Short Name (jsn)&lt;/li&gt;
&lt;li&gt;Canonical Combining Class (ccc)&lt;/li&gt;
&lt;li&gt;Decomposition Mapping (dm)&lt;/li&gt;
&lt;li&gt;Pattern Syntax (PatSyn)&lt;/li&gt;
&lt;li&gt;Pattern White Space (PatWS)&lt;/li&gt;&lt;/ul&gt;
The first four will change from their default to a lifelong value for newly assigned characters, though. The other two, Pattern Syntax and Pattern White Space properties, both boolean values, will never change even when the character is being newly assigned. Only 11 characters have the PatWS property so they&amp;#39;re not as interesting as those with the PatSyn property, 2760 of them, 296 of which are still unassigned in Unicode 6.1.&lt;br /&gt;&lt;br /&gt;The unassigned characters are given the PatSyn property by defining all characters in certain blocks (rather than characters) as having the PatSyn property:
&lt;ul&gt;&lt;li&gt;2190..21FF; Arrows&lt;/li&gt;
&lt;li&gt;2200..22FF; Mathematical Operators&lt;/li&gt;
&lt;li&gt;2300..23FF; Miscellaneous Technical&lt;/li&gt;
&lt;li&gt;2400..243F; Control Pictures&lt;/li&gt;
&lt;li&gt;2440..245F; Optical Character Recognition&lt;/li&gt;
&lt;li&gt;2500..257F; Box Drawing&lt;/li&gt;
&lt;li&gt;2580..259F; Block Elements&lt;/li&gt;
&lt;li&gt;25A0..25FF; Geometric Shapes&lt;/li&gt;
&lt;li&gt;2600..26FF; Miscellaneous Symbols&lt;/li&gt;
&lt;li&gt;2700..27BF; Dingbats&lt;/li&gt;
&lt;li&gt;27C0..27EF; Miscellaneous Mathematical Symbols-A&lt;/li&gt;
&lt;li&gt;27F0..27FF; Supplemental Arrows-A&lt;/li&gt;
&lt;li&gt;2800..28FF; Braille Patterns&lt;/li&gt;
&lt;li&gt;2900..297F; Supplemental Arrows-B&lt;/li&gt;
&lt;li&gt;2980..29FF; Miscellaneous Mathematical Symbols-B&lt;/li&gt;
&lt;li&gt;2A00..2AFF; Supplemental Mathematical Operators&lt;/li&gt;
&lt;li&gt;2B00..2BFF; Miscellaneous Symbols and Arrows&lt;/li&gt;
&lt;li&gt;2E00..2E7F; Supplemental Punctuation&lt;/li&gt;&lt;/ul&gt;
From these, 30 exceptions (0x2776..0x2793) are subtracted, and 150 are added. The added exceptions include the ASCII symbol and punctuation characters often used for syntax in programming languages.&lt;br /&gt;&lt;br /&gt;According to Unicode standard annex 31: &lt;i&gt;&amp;quot;With a fixed set of whitespace and syntax code points, a pattern language can then have a policy requiring all possible syntax characters (even ones currently unused) to be quoted if they are literals. Using &lt;b&gt;this policy preserves the freedom to extend the syntax in the future by using those characters&lt;/b&gt;. Past patterns on future systems will always work; future patterns on past systems will signal an error instead of silently producing the wrong results.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There are, of course, many other symbol and punctuation characters in Unicode that aren&amp;#39;t Pattern Syntax characters, and more can be added that can&amp;#39;t become Pattern Syntax characters (unless they&amp;#39;re encoded in one of the remaining 296 unassigned Pattern Syntax slots). The only language I know of that utilizes Unicode&amp;#39;s pattern syntax invariance is XML 1.0, 5th edn. Perhaps the Groovy Language reboot will be the first Turing-complete language to do so.&lt;br /&gt;&lt;br /&gt;47 of the 2464 assigned Pattern Syntax are canonically equivalent to other forms, so can be ignored. 45 of those decompositions are to some other Pattern Syntax character followed by nonspacing mark 0x338( ̸ ), e.g. ≠ is = then mark ̸ . The other two, 0x2329 and 0x232A, are singleton decompositions to 0x3008(〈) and 0x3009(〉), both also Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Within the assigned pattern characters, perhaps the second most important distinction are the bidi-mirroring glyphs, those with the &lt;i&gt;bmg&lt;/i&gt; property, each of which must be swapped for its complement when used within a right-to-left rendering context, such as within Arabic and Hebrew text. There are 144 pairs of them, such as ( and ), or [ and ]. Because such pairs are used extensively in programming languages, with balancing often required to make language syntax more readable, they are an important subset of the Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Perhaps another important subset of the Pattern Syntax are the 161 bidi-mirrored characters, those with the &lt;i&gt;bidim&lt;/i&gt; property, unmatched characters which must be mirrored when rendering, e.g. ∁ ∂ ∃ ∑ . A further subset could be characters that would be bidi-mirrored but aren&amp;#39;t because they&amp;#39;re already symmetrical, e.g. ∀ ∩ ∪ . They&amp;#39;re not indicated by any specific property, but must be guessed at based on their physical proximity to related bidi-mirrored characters in the Unicode database, e.g. ∃ is bidi-mirrored so ∀ must be symmetrical. Perhaps a specific property in a future version of Unicode would be nice.&lt;br /&gt;&lt;br /&gt;There&amp;#39;s many other Pattern Syntax characters that aren&amp;#39;t symmetrical but also aren&amp;#39;t mirroring or mirrored in a right-to-left rendering context because they&amp;#39;re considered to be &lt;i&gt;pictorial&lt;/i&gt; or &lt;i&gt;ornate&lt;/i&gt; characters, including those for box-drawing and all the arrows, such as 0x2190(←) and 0x2192(→). Unlike the Pattern Syntax property, the bidi properties of a character can change in future versions of Unicode, but for now we can&amp;#39;t use ← in programming and expect it to be rendered as → when we change the naming language to Arabic or the thematic ordering of the referents. So languages that use arrows in their syntax, such as Scala, aren&amp;#39;t future-proofed. Perhaps a future version of Unicode would add more mirroring pairs.&lt;br /&gt;&lt;br /&gt;In designing the Groovy reboot, we &lt;i&gt;do&lt;/i&gt; have 305 bidi-mirroring or -mirrored symbols to choose from, so not being able to use the arrows isn&amp;#39;t a big deal. We just need to be aware of our choices, and not make syntactic mistakes, as did the first bootup of Groovy when its project managers committed to treating every Unicode token above 0xFF as an identifier character :-(&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot will utilize the full power of Unicode in both its syntax &lt;b&gt;and&lt;/b&gt; its vocabulary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;5 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#1"&gt;Groovy Japanese&lt;/a&gt;&lt;/h1&gt;
Something strange happened the other day! It&amp;#39;s difficult to explain so I better set the scene...&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve been learning Chinese for the last 10 years, between programming and teaching, so not too quickly, and my Chinese reading is better than my speaking or listening. I&amp;#39;ve noticed learning to read new Chinese characters &lt;i&gt;is different to&lt;/i&gt; reading words in other languages in that we must use both the &lt;b&gt;visual and auditory parts of the brain at the same time&lt;/b&gt;. E.g. to read 妈, we look at 女 visually and at 马 phonetically: 女 means &amp;quot;woman&amp;quot; and 马 sounds like &amp;quot;ma&amp;quot;, so when we see the word 妈, &lt;b&gt;both the visual and auditory parts of our brain together create the meaning&lt;/b&gt; &amp;quot;mother&amp;quot;. Of course, when we&amp;#39;ve learnt the word our longterm memory kicks in instead, but there&amp;#39;s always many more characters of the 3000-4000 commonly used ones we don&amp;#39;t know.&lt;br /&gt;&lt;br /&gt;A few months ago, I tried my hand at learning to read Japanese. Because I already know most of the Kanji, they being similar in meaning to the over 2000 Chinese characters I&amp;#39;ve learnt, I figured I&amp;#39;d have a head start learning to read Japanese if I weren&amp;#39;t concerned about speaking it. So I &lt;b&gt;decided to learn it visually, seeing if I can read it and understand the meaning, but without vocalizing it&lt;/b&gt; in my head. When looking through &lt;a href="http://www.guidetojapanese.org/learn/grammar"&gt;Tae Kim&amp;#39;s online tutorial&lt;/a&gt;, I&amp;#39;d noticed most of the 46 Hiragana usually have only one grammatical or functional meaning, e.g. ます for polite register.&lt;br /&gt;&lt;br /&gt;So I started practising reading Kanji/Hiragana text from some practise books. &lt;i&gt;(Language-learning books on Japanese are second in popularity to those on English in bookshops across China. They are useful to me because I can read the explanations in Chinese!)&lt;/i&gt; But one day recently something strange happened...&lt;br /&gt;&lt;br /&gt;I was looking at some Japanese text I could easily read but then I &lt;b&gt;had to cover my left eye&lt;/b&gt; because it started itching. &lt;b&gt;Suddenly I couldn&amp;#39;t understand any of the text I was looking at&lt;/b&gt;, except for some Kanji which I already knew the Chinese pronunciation for. But then I &lt;b&gt;tried covering my right eye, and suddenly I could understand the Japanese meaning easily&lt;/b&gt; again!&lt;br /&gt;&lt;br /&gt;It seems by learning to read basic Japanese so I can understand the meaning but not pronounce the words, only one side of my brain is utilized, the same side that processes vision from my left eye.&lt;br /&gt;&lt;br /&gt;This discovery also explains something else. When I&amp;#39;m programming, I usually play English-language TV shows in the background, and can follow the stories just by listening to them, only glancing at the TV screen once or twice a minute. I can code up programs that work &lt;b&gt;and&lt;/b&gt; remember the storyline of the TV shows &lt;b&gt;when I do both at the same time!&lt;/b&gt; If I do either activity by itself I get bored easily, but when I do both simultaneouly I can easily work for hours at a time. Also... these are the &lt;b&gt;only two mental activities I&amp;#39;m able to do simultaneously&lt;/b&gt;, without either activity being impacted.&lt;br /&gt;&lt;br /&gt;So I&amp;#39;ve made a picture &lt;i&gt;(using the image from Wikipedia)&lt;/i&gt; of what it seems each side of my brain does:&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=617153" alt="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" title="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" /&gt;&lt;br /&gt;Of course, all this has implications for &lt;a href="http://groovy.codeplex.com/wikipage?title=Kanji%20meets%20Programming&amp;referringTitle=Blog04"&gt;using Kanji in programming&lt;/a&gt; to make code terser. Because &lt;b&gt;the same half of the brain that reads Kanji visually also writes programming code&lt;/b&gt;, they should gel together easily, &lt;b&gt;and&lt;/b&gt; still leave the other half of the brain free for some interpersonal activity. In theory, we could write terse programs using Kanji &lt;i&gt;as well as&lt;/i&gt; use interpersonal skills to relate to clients and colleagues, and stuff like that!&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot here at Codeplex aims to bring &lt;b&gt;all&lt;/b&gt; Unicode characters to the vocabulary of programs, not just the 96 ASCII (or 70 APL) ones. When the fake Groovy dies in the grave of Grales, the real Groovy will rise, bringing &lt;b&gt;all Unicode tokens&lt;/b&gt; for the programming half of our brains to use when we code.&lt;br /&gt;
&lt;h2&gt;See &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03&amp;referringTitle=Blog04"&gt;previous blog entries&lt;/a&gt;.&lt;/h2&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Wed, 13 Feb 2013 06:03:22 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Blog04 20130213060322A</guid></item><item><title>Updated Wiki: Blog04</title><link>http://groovy.codeplex.com/wikipage?title=Blog04&amp;version=7</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;u&gt;Gavin Groovy Grover&amp;#39;s UNICODE Blo&lt;/u&gt;g&lt;/h1&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=577534" alt="Grrrroooooveeey.jpg" title="Grrrroooooveeey.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;13 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="5"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#5"&gt;Groovy Buzzwords&lt;/a&gt;&lt;/h1&gt;
Laforge reacted to Binstock&amp;#39;s analysis by &lt;a href="http://groovy.329449.n5.nabble.com/ANN-Documentation-effort-and-site-redesign-td5712875.html"&gt;announcing a &amp;quot;documention effort and site redesign&amp;quot;&lt;/a&gt;: &amp;quot;&lt;i&gt;Groovy is a very mature and widely used language on the Java platform, with hundred thousands of developers worldwide. It&amp;#39;s stable and fast, flexible and readable, has got plenty of interesting use cases (DSLs, testing...), is feature-packed, and it&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few). However, one area where the Groovy project can do better is with its documentation.&lt;/i&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s look at the truth behind all this verbiage...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Documentation effort and site design&lt;/i&gt;: Laforge is redesigning the website, perceiving Groovy&amp;#39;s problem as an image problem, but hiding it behind a &amp;quot;documentation effort&amp;quot;. The website was redesigned a mere 15 months ago. Before then the documention contents were &lt;i&gt;one click away&lt;/i&gt;, but were split into four separate pages, each two clicks away, much less convenient for Groovy users but it meant more GoogleAds revenue for Codehaus and more users needing consultancy services from SpringSource. Laforge is just pretending to care about documentation.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Groovy is a very mature language on the Java platform&lt;/i&gt;: Groovy is declining, at the end of its life. When GPars was released at version 1.0 after being bundled in Groovy for years, it was also announcing its own end-of-life. SpringSource and Codehaus are now milking Groovy for all they can get.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Groovy is widely used, with hundreds thousands of developers worldwide&lt;/i&gt;: All claims, no proof. Whenever challenged, Laforge says his clients don&amp;#39;t want to be named. More likely he doesn&amp;#39;t want them poached by someone who hasn&amp;#39;t signed his contracts.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Groovy is fast&lt;/i&gt;: Dynamically compiled Groovy is slo.oo.ooo.oooo.ooooo.oooo.ooo.oo.ow, as Binstock was careful to point out.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Groovy is stable&lt;/i&gt;: Statically compiled Groovy is bug-ug-ugg-uggy. Only last week, &lt;a href="http://stackoverflow.com/questions/14774709/groovy-2-1-0-weird-behaviour-of-switch-case-break-statement-with-compilestatic"&gt;a serious static compilation bug in Groovy 2.1.0 was reported&lt;/a&gt;. Although officially released in June 2012, Groovy 2.0 really wasn&amp;#39;t released for production use until it was bundled as part of Grails 2.2 in Dec 2012. The 6 months from June to December was unofficially &lt;b&gt;just more beta-testing with a larger base of users&lt;/b&gt;, namely those who download standalone releases of Groovy. Grails, however, doesn&amp;#39;t use any of the static compilation features in Groovy 2.0. All the testing of Groovy 2.0 was just to &lt;b&gt;make sure the inclusion of static compilation in Groovy didn&amp;#39;t break any of its dynamic compilation use in Grails&lt;/b&gt;. On the day after the Grails 2.2 release came the first beta of Groovy 2.1, which has since been officially released standalone, but hasn&amp;#39;t yet shipped with Grails. Once again, Groovy&amp;#39;s timeline is determined solely by the needs of Grails.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Groovy is flexible&lt;/i&gt;: Laforge is just spewing buzzwords here. To me, flexible means unhindered by syntax contraints. Clojure allows easy code reorganization and macro-level syntactic manipulation, far more flexible than Groovy.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Groovy is readable&lt;/i&gt;: Some people find the indention used by Python and Haskell most readable, while others find the balanced brackets used by C, Java, Javascript, Scala, Groovy, and PHP more readable. &lt;b&gt;Groovy 0.5 here at Codeplex is a proof-of-concept prototype showing how Groovy-style syntax can easily be built atop Clojure&lt;/b&gt;, which, unlike Groovy, also runs atop the .NET and Javascript platforms. Why be constrained by Groovy&amp;#39;s Antlr 2.7 based grammar when we can write our own atop Clojure?&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;height:0;"&gt;&amp;nbsp;&lt;/div&gt;&lt;img style="float:right;padding-left:.5em;" src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=622834" alt="ChineseCheckers.png" title="ChineseCheckers.png" /&gt; &lt;i&gt;Groovy has got plenty of interesting use cases (DSLs, testing):&lt;/i&gt; DSL is just another buzzword. Dropping semicolons, commas, and parentheses from a syntax doesn&amp;#39;t a DSL make. IDE&amp;#39;s put them in automatically without needing to type them anyway. Virtually every language has testing frameworks.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Groovy is feature-packed&lt;/i&gt;: More &amp;quot;features&amp;quot; means more need for consultants and conferences. Some old features such as interceptors no longer work properly. Many new features, such as static compilation and invoke dynamic, are not production ready. In both Groovy 2.0 and 2.1, the code using invoke-dynamic is bundled in a separate jar-file which only runs on Java 7. Grails and Gradle don&amp;#39;t bundle this other invoke-dynamic jar file, and don&amp;#39;t intend to for Grails 2.3 and Groovy 2.1. The Groovy roadmap claims a new MOP will be written atop this invoke-dynamic jarfile, and ship as the sole jar in Groovy 3, but every time in the past when Theodorou&amp;#39;s started on the MOP, he&amp;#39;s been redeployed. I don&amp;#39;t believe Rocher intends to pay for it. Even if it was done, how long would it take? Other statically-typed JVM languages like Scala, Kotlin, and Ceylon are coming quickly. Scala is rising, Kotlin has IntelliJ as a delivery channel, and Ceylon has JBoss backing it.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Groovy&amp;#39;s got a very rich ecosystem of successful projects (Grails, Gradle, Griffon, Spock, Geb, Gaelyk, to name but a few):&lt;/i&gt; Only 2 of these have any traction in industry, and even Gradle&amp;#39;s uptake is iffy. If there were any other successful projects, Laforge would&amp;#39;ve mentioned them.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;One area where the Groovy project can do better is with its documentation&lt;/i&gt;: What Laforge should have said was &amp;quot;Because I can&amp;#39;t code, I should&amp;#39;ve made myself useful by writing documentation instead. I never did, and accept responsibility for Groovy&amp;#39;s failure in this area.&amp;quot; But Laforge is even incapable of writing correct documentation, as shown by &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog02#7"&gt;his buggy Mars Rover attempt&lt;/a&gt;, let alone accepting responsibility for it. Laforge is second alone to Rocher for causing Groovy&amp;#39;s terminal decline.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="4"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#4"&gt;Groovy Confusion&lt;/a&gt;&lt;/h1&gt;
Once again, mixed messages are coming out regarding the Codehaus version of the Groovy Language.&lt;br /&gt;&lt;br /&gt;On 26 June 2012, Tech Lead Jochen Theodorou &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-tt5710334.html"&gt;announced he was beginning work on Groovy 3&lt;/a&gt;, kicking off a discussion thread with 90 replies. I asked if &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-td5710334.html#a5710338"&gt;Groovy 3 will contain a new MOP&lt;/a&gt;, to which Guillaume Laforge replied with the passive voice &amp;quot;The MOP needs to be rewritten&amp;quot;. But the MOP rewrite wasn&amp;#39;t begun.&lt;br /&gt;&lt;br /&gt;On 11 January Jochen announced &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-tt5712419.html"&gt;I will now start the implementation of the new MOP&lt;/a&gt;&amp;quot;. Graeme Rocher said he &lt;b&gt;wanted binary compatibility and ability to run old compiled Groovy code&lt;/b&gt;. Suspecting Rocher was setting up the cancellation of the MOP rewrite, I asked if &lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-td5712419.html#a5712427"&gt;VMWare&amp;#39;s not willing to pay for Jochen to rewrite the MOP if it doesn&amp;#39;t do exactly what the current one does?&lt;/a&gt; Rocher got defensive with the impersonal &amp;quot;the new MOP needs writing&amp;quot;.&lt;br /&gt;&lt;br /&gt;A week ago, VMWare told the US SEC they intended retrenching 900 workers and exiting some business lines. They didn&amp;#39;t say if they would trim up SpringSource before they sell it to JBoss, or if they would sell it to Oracle as a white elephant ripe for trimming.&lt;br /&gt;&lt;br /&gt;Two days ago, Laforge &lt;a href="http://www.infoq.com/news/2013/02/Groovy2_1_Release#.UREiSUHeTs0.dzone"&gt;dug into his posting quota on InfoQ to announce Groovy 2.1&amp;#39;s release&lt;/a&gt; a week late &lt;i&gt;(perhaps he was too busy being re-interviewed for his own job, and traded in a real developer like Champeau to save his own skin)&lt;/i&gt;. Even though Laforge didn&amp;#39;t do any technical work on Groovy 2.1, he kept on refering to &amp;quot;we&amp;quot;, putting people off by not acknowledging any of the actual programmers such as Jochen or Fred Janon in the InfoQ article or the linked-to release notes. Laforge also put people off with meaningless marketing talk, such as &lt;i&gt;&amp;quot;Groovy 2.1’s distribution bundles the recently released GPars 1.0&amp;quot;&lt;/i&gt;. Groovy has bundled the latest version of GPars for years. When GPars changed its version number to 1.0, both Groovy 2.0.x and 2.1 upgraded to it like they always had.&lt;br /&gt;&lt;br /&gt;Yesterday, Dr Dobbs editor Andrew Binstock wrote &lt;a href="http://www.drdobbs.com/jvm/the-groovy-conundrum/240147731"&gt;some pessimistic views on Codehaus Groovy&amp;#39;s future&lt;/a&gt;. He was diplomatic, though, e.g. &lt;i&gt;&amp;quot;Keying off ideas prototyped by Alex Tkachman, the Groovy team added static typing&amp;quot;&lt;/i&gt;. That&amp;#39;s putting it nicely. Unfortunately, he also neglected to mention Theodorou&amp;#39;s name anywhere, the technical guru who did most of the work, even though he managed to mention project manager Laforge. I suspect Laforge sent him some Q&amp;amp;A copy regarding Groovy 2.1, but Dr Dobbs isn&amp;#39;t InfoQ. Binstock instead published an analysis. His conclusion...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;quot;[Groovy is] a language primed to be a major player. There is the conundrum. The endless variety of features requires considerable documentation, which is simply not available, especially for the advanced features that give Groovy much of its benefit. And so, if you jump in today, you&amp;#39;ll find the language is easy to learn, but hard to master. Fortunately, this limitation is not incurable. However, time is of the essence as Groovy&amp;#39;s principal competitor for the hearts and minds of Java developers — Scala — has a small, laser-focused company behind it, which revs the product frequently and generates considerable documentation. If Groovy acts soon, it can retain leadership among Java alternatives. If not, it will have to resign itself to being an also-ran.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Binstock misses the point of Grails and Groovy&amp;#39;s business model. A lack of usable documentation means developers must pay for SpringSource consultants and seats at conferences, where lots of money is made and divvied up. By throwing in endless features, they increase the complexity of Groovy and the need for consultants from the supply side, just as the lack of documentation creates the need for conferences from the demand side. The Groovy &amp;quot;Bible&amp;quot; didn&amp;#39;t bring in much profit for its authors so why should they bother with a 2nd edn? Grails and Groovy is about making money &lt;i&gt;now&lt;/i&gt; for those involved, not investing it. Even the &lt;b&gt;&amp;quot;groovymag&amp;quot; charges money for an online subscription, while the &amp;quot;Week with Scala&amp;quot; is free!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If someone seriously creates independent doco for Groovy, the next version of Groovy changes slightly to lessen the value of the doco and increase the need for a consultant or conference. They keep a tight gateway over their test suites. I&amp;#39;ve experienced this first-hand. When I was writing free online doco for Groovy 5 yrs ago, &lt;b&gt;sociopath Rocher just couldn&amp;#39;t relate as an equal partner to me in a bazaar&lt;/b&gt;. He just had to prod people into targeting me, eventually destroying my desire to make Groovy simple to use, so he could keep as much of the take as possible at the top reaches of the cathedral.&lt;br /&gt;&lt;br /&gt;Binstock does &lt;b&gt;correctly conclude Groovy will soon be an also-ran&lt;/b&gt; because of that business strategy. Rod Johnson, former CEO of Grails company SpringSource, is now leading the board of that laser-focused Scala company. He no doubt understands the value of &amp;quot;taking a cut of a huge pie&amp;quot; instead of &amp;quot;owning all of a tiny pie&amp;quot;, and is investing in growing Scala instead of strangling it. The project managers behind Groovy, Rocher and Laforge, are probably incapable of changing their ingrained habits to steer Groovy in a new direction. They will, however, take something else away from Binstock&amp;#39;s analysis: that Groovy needs a new name for version 3. Yes, they&amp;#39;ll see a brand perception problem, rather than a widely recognized lack-of-documentation problem, and they&amp;#39;ll get busy creating a new imagery for Groovy, instead of making it easy for people to master.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="3"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#3"&gt;Roadmap&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;I&amp;#39;m moving the roadmap from its own page to this blog entry...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The Groovy Language here at Codeplex will be built with Unicode graphemes, unlike most programming languages (e.g. the fake Groovy at Codehaus) which are built solely with Ascii tokens, with bare Unicode codepoints added in as an afterthought. The rough roadmap for evolving Groovy, beginning with lower numbered items, is...&lt;br /&gt;
&lt;h3&gt;1. Groovy Grammar&lt;/h3&gt;Build a recursive-descent parsing library that can look at the internal structure of CJK tokens, and &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20Grammar%20for%20Programming&amp;referringTitle=Blog04"&gt;define the Groovy grammar&lt;/a&gt;. The grammar atop Clojure will enable developers to extend the Groovy syntax easily using parser-level macros. &lt;a href="http://groovy.codeplex.com/releases/view/91000"&gt;The latest version&lt;/a&gt; can parse a healthy subset of the Groovy grammar.&lt;br /&gt;
&lt;h3&gt;2. GUI with IME&lt;/h3&gt;Create a GUI with a input method editor (IME) to enable all Unicode tokens to be entered easily, and a J-style interactive learning environment for the Groovy Language syntax. Use &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20for%20Java%20Newbies&amp;referringTitle=Blog04"&gt;these 3-yr-old notes for learning Groovy 1.5&lt;/a&gt; as a base for writing a comprehensive test suite.&lt;br /&gt;
&lt;h3&gt;3. Unicode Properties&lt;/h3&gt;We&amp;#39;ll use &lt;a href="http://groovy.codeplex.com/wikipage?title=Unicode%20Inheritance&amp;referringTitle=Blog04"&gt;inheritance hierarchies&lt;/a&gt; to represent all the Unicode characters, one for the codepoints based on the general category and certain relevant boolean properties, the other for various decompositions. We&amp;#39;ve yet to analyze the information inside the Unihan variant data.&lt;br /&gt;
&lt;h3&gt;4. CJK Decomposition Data&lt;/h3&gt;The CJK Decomposition Data File is a graphical analysis of the approx 75,000 Chinese/Japanese characters in Unicode. They utilize approx 11,000 intermediate decompositions which are not themselves in Unicode. See &lt;a href="http://cjkdecomp.codeplex.com"&gt;the main project site&lt;/a&gt; for more details. The latest version, 0.4.0, was released on 15 August 2012. See also some notes on &lt;a href="http://groovy.codeplex.com/wikipage?title=Reflection%20and%20repetitions%20in%20the%20CJK%20decomposition%20data&amp;referringTitle=Blog04"&gt;using reflection in the CJK decompositions&lt;/a&gt;. We&amp;#39;ll use these decomps to design the IME keys for entering CJK tokens into the Groovy GUI.&lt;br /&gt;
&lt;h3&gt;5. Peer-to-Peer Engine&lt;/h3&gt;Enable the most common operator symbols and foreign-language names to be shared automatically between Groovy IME&amp;#39;s using a peer-to-peer protocol so developers will know the most commonly used names and symbols when writing code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;6 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="2"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#2"&gt;Unicode Pattern Syntax Tokens&lt;/a&gt;&lt;/h1&gt;
Each of the million-plus Unicode characters has about 50 properties associated with it. Most of them can change between different versions of Unicode or for defining private-use characters, except for six of them:
&lt;ul&gt;&lt;li&gt;Name (na)&lt;/li&gt;
&lt;li&gt;Jamo Short Name (jsn)&lt;/li&gt;
&lt;li&gt;Canonical Combining Class (ccc)&lt;/li&gt;
&lt;li&gt;Decomposition Mapping (dm)&lt;/li&gt;
&lt;li&gt;Pattern Syntax (PatSyn)&lt;/li&gt;
&lt;li&gt;Pattern White Space (PatWS)&lt;/li&gt;&lt;/ul&gt;
The first four will change from their default to a lifelong value for newly assigned characters, though. The other two, Pattern Syntax and Pattern White Space properties, both boolean values, will never change even when the character is being newly assigned. Only 11 characters have the PatWS property so they&amp;#39;re not as interesting as those with the PatSyn property, 2760 of them, 296 of which are still unassigned in Unicode 6.1.&lt;br /&gt;&lt;br /&gt;The unassigned characters are given the PatSyn property by defining all characters in certain blocks (rather than characters) as having the PatSyn property:
&lt;ul&gt;&lt;li&gt;2190..21FF; Arrows&lt;/li&gt;
&lt;li&gt;2200..22FF; Mathematical Operators&lt;/li&gt;
&lt;li&gt;2300..23FF; Miscellaneous Technical&lt;/li&gt;
&lt;li&gt;2400..243F; Control Pictures&lt;/li&gt;
&lt;li&gt;2440..245F; Optical Character Recognition&lt;/li&gt;
&lt;li&gt;2500..257F; Box Drawing&lt;/li&gt;
&lt;li&gt;2580..259F; Block Elements&lt;/li&gt;
&lt;li&gt;25A0..25FF; Geometric Shapes&lt;/li&gt;
&lt;li&gt;2600..26FF; Miscellaneous Symbols&lt;/li&gt;
&lt;li&gt;2700..27BF; Dingbats&lt;/li&gt;
&lt;li&gt;27C0..27EF; Miscellaneous Mathematical Symbols-A&lt;/li&gt;
&lt;li&gt;27F0..27FF; Supplemental Arrows-A&lt;/li&gt;
&lt;li&gt;2800..28FF; Braille Patterns&lt;/li&gt;
&lt;li&gt;2900..297F; Supplemental Arrows-B&lt;/li&gt;
&lt;li&gt;2980..29FF; Miscellaneous Mathematical Symbols-B&lt;/li&gt;
&lt;li&gt;2A00..2AFF; Supplemental Mathematical Operators&lt;/li&gt;
&lt;li&gt;2B00..2BFF; Miscellaneous Symbols and Arrows&lt;/li&gt;
&lt;li&gt;2E00..2E7F; Supplemental Punctuation&lt;/li&gt;&lt;/ul&gt;
From these, 30 exceptions (0x2776..0x2793) are subtracted, and 150 are added. The added exceptions include the ASCII symbol and punctuation characters often used for syntax in programming languages.&lt;br /&gt;&lt;br /&gt;According to Unicode standard annex 31: &lt;i&gt;&amp;quot;With a fixed set of whitespace and syntax code points, a pattern language can then have a policy requiring all possible syntax characters (even ones currently unused) to be quoted if they are literals. Using &lt;b&gt;this policy preserves the freedom to extend the syntax in the future by using those characters&lt;/b&gt;. Past patterns on future systems will always work; future patterns on past systems will signal an error instead of silently producing the wrong results.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There are, of course, many other symbol and punctuation characters in Unicode that aren&amp;#39;t Pattern Syntax characters, and more can be added that can&amp;#39;t become Pattern Syntax characters (unless they&amp;#39;re encoded in one of the remaining 296 unassigned Pattern Syntax slots). The only language I know of that utilizes Unicode&amp;#39;s pattern syntax invariance is XML 1.0, 5th edn. Perhaps the Groovy Language reboot will be the first Turing-complete language to do so.&lt;br /&gt;&lt;br /&gt;47 of the 2464 assigned Pattern Syntax are canonically equivalent to other forms, so can be ignored. 45 of those decompositions are to some other Pattern Syntax character followed by nonspacing mark 0x338( ̸ ), e.g. ≠ is = then mark ̸ . The other two, 0x2329 and 0x232A, are singleton decompositions to 0x3008(〈) and 0x3009(〉), both also Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Within the assigned pattern characters, perhaps the second most important distinction are the bidi-mirroring glyphs, those with the &lt;i&gt;bmg&lt;/i&gt; property, each of which must be swapped for its complement when used within a right-to-left rendering context, such as within Arabic and Hebrew text. There are 144 pairs of them, such as ( and ), or [ and ]. Because such pairs are used extensively in programming languages, with balancing often required to make language syntax more readable, they are an important subset of the Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Perhaps another important subset of the Pattern Syntax are the 161 bidi-mirrored characters, those with the &lt;i&gt;bidim&lt;/i&gt; property, unmatched characters which must be mirrored when rendering, e.g. ∁ ∂ ∃ ∑ . A further subset could be characters that would be bidi-mirrored but aren&amp;#39;t because they&amp;#39;re already symmetrical, e.g. ∀ ∩ ∪ . They&amp;#39;re not indicated by any specific property, but must be guessed at based on their physical proximity to related bidi-mirrored characters in the Unicode database, e.g. ∃ is bidi-mirrored so ∀ must be symmetrical. Perhaps a specific property in a future version of Unicode would be nice.&lt;br /&gt;&lt;br /&gt;There&amp;#39;s many other Pattern Syntax characters that aren&amp;#39;t symmetrical but also aren&amp;#39;t mirroring or mirrored in a right-to-left rendering context because they&amp;#39;re considered to be &lt;i&gt;pictorial&lt;/i&gt; or &lt;i&gt;ornate&lt;/i&gt; characters, including those for box-drawing and all the arrows, such as 0x2190(←) and 0x2192(→). Unlike the Pattern Syntax property, the bidi properties of a character can change in future versions of Unicode, but for now we can&amp;#39;t use ← in programming and expect it to be rendered as → when we change the naming language to Arabic or the thematic ordering of the referents. So languages that use arrows in their syntax, such as Scala, aren&amp;#39;t future-proofed. Perhaps a future version of Unicode would add more mirroring pairs.&lt;br /&gt;&lt;br /&gt;In designing the Groovy reboot, we &lt;i&gt;do&lt;/i&gt; have 305 bidi-mirroring or -mirrored symbols to choose from, so not being able to use the arrows isn&amp;#39;t a big deal. We just need to be aware of our choices, and not make syntactic mistakes, as did the first bootup of Groovy when its project managers committed to treating every Unicode token above 0xFF as an identifier character :-(&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot will utilize the full power of Unicode in both its syntax &lt;b&gt;and&lt;/b&gt; its vocabulary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;5 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#1"&gt;Groovy Japanese&lt;/a&gt;&lt;/h1&gt;
Something strange happened the other day! It&amp;#39;s difficult to explain so I better set the scene...&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve been learning Chinese for the last 10 years, between programming and teaching, so not too quickly, and my Chinese reading is better than my speaking or listening. I&amp;#39;ve noticed learning to read new Chinese characters &lt;i&gt;is different to&lt;/i&gt; reading words in other languages in that we must use both the &lt;b&gt;visual and auditory parts of the brain at the same time&lt;/b&gt;. E.g. to read 妈, we look at 女 visually and at 马 phonetically: 女 means &amp;quot;woman&amp;quot; and 马 sounds like &amp;quot;ma&amp;quot;, so when we see the word 妈, &lt;b&gt;both the visual and auditory parts of our brain together create the meaning&lt;/b&gt; &amp;quot;mother&amp;quot;. Of course, when we&amp;#39;ve learnt the word our longterm memory kicks in instead, but there&amp;#39;s always many more characters of the 3000-4000 commonly used ones we don&amp;#39;t know.&lt;br /&gt;&lt;br /&gt;A few months ago, I tried my hand at learning to read Japanese. Because I already know most of the Kanji, they being similar in meaning to the over 2000 Chinese characters I&amp;#39;ve learnt, I figured I&amp;#39;d have a head start learning to read Japanese if I weren&amp;#39;t concerned about speaking it. So I &lt;b&gt;decided to learn it visually, seeing if I can read it and understand the meaning, but without vocalizing it&lt;/b&gt; in my head. When looking through &lt;a href="http://www.guidetojapanese.org/learn/grammar"&gt;Tae Kim&amp;#39;s online tutorial&lt;/a&gt;, I&amp;#39;d noticed most of the 46 Hiragana usually have only one grammatical or functional meaning, e.g. ます for polite register.&lt;br /&gt;&lt;br /&gt;So I started practising reading Kanji/Hiragana text from some practise books. &lt;i&gt;(Language-learning books on Japanese are second in popularity to those on English in bookshops across China. They are useful to me because I can read the explanations in Chinese!)&lt;/i&gt; But one day recently something strange happened...&lt;br /&gt;&lt;br /&gt;I was looking at some Japanese text I could easily read but then I &lt;b&gt;had to cover my left eye&lt;/b&gt; because it started itching. &lt;b&gt;Suddenly I couldn&amp;#39;t understand any of the text I was looking at&lt;/b&gt;, except for some Kanji which I already knew the Chinese pronunciation for. But then I &lt;b&gt;tried covering my right eye, and suddenly I could understand the Japanese meaning easily&lt;/b&gt; again!&lt;br /&gt;&lt;br /&gt;It seems by learning to read basic Japanese so I can understand the meaning but not pronounce the words, only one side of my brain is utilized, the same side that processes vision from my left eye.&lt;br /&gt;&lt;br /&gt;This discovery also explains something else. When I&amp;#39;m programming, I usually play English-language TV shows in the background, and can follow the stories just by listening to them, only glancing at the TV screen once or twice a minute. I can code up programs that work &lt;b&gt;and&lt;/b&gt; remember the storyline of the TV shows &lt;b&gt;when I do both at the same time!&lt;/b&gt; If I do either activity by itself I get bored easily, but when I do both simultaneouly I can easily work for hours at a time. Also... these are the &lt;b&gt;only two mental activities I&amp;#39;m able to do simultaneously&lt;/b&gt;, without either activity being impacted.&lt;br /&gt;&lt;br /&gt;So I&amp;#39;ve made a picture &lt;i&gt;(using the image from Wikipedia)&lt;/i&gt; of what it seems each side of my brain does:&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=617153" alt="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" title="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" /&gt;&lt;br /&gt;Of course, all this has implications for &lt;a href="http://groovy.codeplex.com/wikipage?title=Kanji%20meets%20Programming&amp;referringTitle=Blog04"&gt;using Kanji in programming&lt;/a&gt; to make code terser. Because &lt;b&gt;the same half of the brain that reads Kanji visually also writes programming code&lt;/b&gt;, they should gel together easily, &lt;b&gt;and&lt;/b&gt; still leave the other half of the brain free for some interpersonal activity. In theory, we could write terse programs using Kanji &lt;i&gt;as well as&lt;/i&gt; use interpersonal skills to relate to clients and colleagues, and stuff like that!&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot here at Codeplex aims to bring &lt;b&gt;all&lt;/b&gt; Unicode characters to the vocabulary of programs, not just the 96 ASCII (or 70 APL) ones. When the fake Groovy dies in the grave of Grales, the real Groovy will rise, bringing &lt;b&gt;all Unicode tokens&lt;/b&gt; for the programming half of our brains to use when we code.&lt;br /&gt;
&lt;h2&gt;See &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03&amp;referringTitle=Blog04"&gt;previous blog entries&lt;/a&gt;.&lt;/h2&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Wed, 13 Feb 2013 06:01:10 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Blog04 20130213060110A</guid></item><item><title>Updated Wiki: Blog04</title><link>http://groovy.codeplex.com/wikipage?title=Blog04&amp;version=6</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;u&gt;Gavin Groovy Grover&amp;#39;s UNICODE Blo&lt;/u&gt;g&lt;/h1&gt;
&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=577534" alt="Grrrroooooveeey.jpg" title="Grrrroooooveeey.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="4"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#4"&gt;Groovy Confusion&lt;/a&gt;&lt;/h1&gt;
Once again, mixed messages are coming out regarding the Codehaus version of the Groovy Language.&lt;br /&gt;&lt;br /&gt;On 26 June 2012, Tech Lead Jochen Theodorou &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-tt5710334.html"&gt;announced he was beginning work on Groovy 3&lt;/a&gt;, kicking off a discussion thread with 90 replies. I asked if &lt;a href="http://groovy.329449.n5.nabble.com/Groovy-3-td5710334.html#a5710338"&gt;Groovy 3 will contain a new MOP&lt;/a&gt;, to which Guillaume Laforge replied with the passive voice &amp;quot;The MOP needs to be rewritten&amp;quot;. But the MOP rewrite wasn&amp;#39;t begun.&lt;br /&gt;&lt;br /&gt;On 11 January Jochen announced &amp;quot;&lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-tt5712419.html"&gt;I will now start the implementation of the new MOP&lt;/a&gt;&amp;quot;. Graeme Rocher said he &lt;b&gt;wanted binary compatibility and ability to run old compiled Groovy code&lt;/b&gt;. Suspecting Rocher was setting up the cancellation of the MOP rewrite, I asked if &lt;a href="http://groovy.329449.n5.nabble.com/starting-the-MOP2-implementation-td5712419.html#a5712427"&gt;VMWare&amp;#39;s not willing to pay for Jochen to rewrite the MOP if it doesn&amp;#39;t do exactly what the current one does?&lt;/a&gt; Rocher got defensive with the impersonal &amp;quot;the new MOP needs writing&amp;quot;.&lt;br /&gt;&lt;br /&gt;A week ago, VMWare told the US SEC they intended retrenching 900 workers and exiting some business lines. They didn&amp;#39;t say if they would trim up SpringSource before they sell it to JBoss, or if they would sell it to Oracle as a white elephant ripe for trimming.&lt;br /&gt;&lt;br /&gt;Two days ago, Laforge &lt;a href="http://www.infoq.com/news/2013/02/Groovy2_1_Release#.UREiSUHeTs0.dzone"&gt;dug into his posting quota on InfoQ to announce Groovy 2.1&amp;#39;s release&lt;/a&gt; a week late &lt;i&gt;(perhaps he was too busy being re-interviewed for his own job, and traded in a real developer like Champeau to save his own skin)&lt;/i&gt;. Even though Laforge didn&amp;#39;t do any technical work on Groovy 2.1, he kept on refering to &amp;quot;we&amp;quot;, putting people off by not acknowledging any of the actually programmers such as Jochen or Fred Janon in the InfoQ article or the linked-to release notes. Laforge also put people off with meaningless marketing talk, such as &lt;i&gt;&amp;quot;Groovy 2.1’s distribution bundles the recently released GPars 1.0&amp;quot;&lt;/i&gt;. Groovy has bundled the latest version of GPars for years. When GPars changed its version number to 1.0, both Groovy 2.0.x and 2.1 upgraded to it like they always had.&lt;br /&gt;&lt;br /&gt;Yesterday, Dr Dobbs editor Andrew Binstock wrote &lt;a href="http://www.drdobbs.com/jvm/the-groovy-conundrum/240147731"&gt;some pessimistic views on Codehaus Groovy&amp;#39;s future&lt;/a&gt;. He was diplomatic, though, e.g. &lt;i&gt;&amp;quot;Keying off ideas prototyped by Alex Tkachman, the Groovy team added static typing&amp;quot;&lt;/i&gt;. That&amp;#39;s putting it nicely. Unfortunately, he also neglected to mention Theodorou&amp;#39;s name anywhere, the technical guru who did most of the work, even though he managed to mention project manager Laforge. I suspect Laforge sent him some Q&amp;amp;A copy regarding Groovy 2.1, but Dr Dobbs isn&amp;#39;t InfoQ. Binstock instead published an analysis. His conclusion...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;quot;&lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20is&amp;referringTitle=Blog04"&gt;Groovy is&lt;/a&gt; a language primed to be a major player. There is the conundrum. The endless variety of features requires considerable documentation, which is simply not available, especially for the advanced features that give Groovy much of its benefit. And so, if you jump in today, you&amp;#39;ll find the language is easy to learn, but hard to master. Fortunately, this limitation is not incurable. However, time is of the essence as Groovy&amp;#39;s principal competitor for the hearts and minds of Java developers — Scala — has a small, laser-focused company behind it, which revs the product frequently and generates considerable documentation. If Groovy acts soon, it can retain leadership among Java alternatives. If not, it will have to resign itself to being an also-ran.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Binstock misses the point of Grails and Groovy&amp;#39;s business model. A lack of usable documentation means developers must pay for SpringSource consultants and seats at conferences, where lots of money is made and divvied up. By throwing in endless features, they increase the complexity of Groovy and the need for consultants from the supply side, just as the lack of documentation creates the need for conferences from the demand side. The Groovy &amp;quot;Bible&amp;quot; didn&amp;#39;t bring in much profit for its authors so why should they bother with a 2nd edn? Grails and Groovy is about making money &lt;i&gt;now&lt;/i&gt; for those involved, not investing it. Even the &lt;b&gt;&amp;quot;groovymag&amp;quot; charges money for an online subscription, while the &amp;quot;Week with Scala&amp;quot; is free!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If someone seriously creates independent doco for Groovy, the next version of Groovy changes slightly to lessen the value of the doco and increase the need for a consultant or conference. They keep a tight gateway over their test suites. I&amp;#39;ve experienced this first-hand. When I was writing free online doco for Groovy 5 yrs ago, &lt;b&gt;sociopath Rocher just couldn&amp;#39;t relate as an equal partner to me in a bazaar&lt;/b&gt;. He just had to prod people into targeting me, eventually destroying my desire to make Groovy simple to use, so he could keep as much of the take as possible at the top reaches of the cathedral.&lt;br /&gt;&lt;br /&gt;Binstock does &lt;b&gt;correctly conclude Groovy will soon be an also-ran&lt;/b&gt; because of that business strategy. Rod Johnson, former CEO of Grails company SpringSource, is now leading the board of that laser-focused Scala company. He no doubt understands the value of &amp;quot;taking a cut of a huge pie&amp;quot; instead of &amp;quot;owning all of a tiny pie&amp;quot;, and is investing in growing Scala instead of strangling it. The project managers behind Groovy, Rocher and Laforge, are probably incapable of changing their ingrained habits to steer Groovy in a new direction. They will, however, take something else away from Binstock&amp;#39;s analysis: that Groovy needs a new name for version 3. Yes, they&amp;#39;ll see an brand perception problem, rather than a widely recognized lack-of-documentation problem, and they&amp;#39;ll get busy creating a new imagery for Groovy, instead of making it easy for people to master.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;7 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="3"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#3"&gt;Roadmap&lt;/a&gt;&lt;/h1&gt;
&lt;i&gt;I&amp;#39;m moving the roadmap from its own page to this blog entry...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The Groovy Language here at Codeplex will be built with Unicode graphemes, unlike most programming languages (e.g. the fake Groovy at Codehaus) which are built solely with Ascii tokens, with bare Unicode codepoints added in as an afterthought. The rough roadmap for evolving Groovy, beginning with lower numbered items, is...&lt;br /&gt;
&lt;h3&gt;1. Groovy Grammar&lt;/h3&gt;Build a recursive-descent parsing library that can look at the internal structure of CJK tokens, and &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20Grammar%20for%20Programming&amp;referringTitle=Blog04"&gt;define the Groovy grammar&lt;/a&gt;. The grammar atop Clojure will enable developers to extend the Groovy syntax easily using parser-level macros. &lt;a href="http://groovy.codeplex.com/releases/view/91000"&gt;The latest version&lt;/a&gt; can parse a healthy subset of the Groovy grammar.&lt;br /&gt;
&lt;h3&gt;2. GUI with IME&lt;/h3&gt;Create a GUI with a input method editor (IME) to enable all Unicode tokens to be entered easily, and a J-style interactive learning environment for the Groovy Language syntax. Use &lt;a href="http://groovy.codeplex.com/wikipage?title=Groovy%20for%20Java%20Newbies&amp;referringTitle=Blog04"&gt;these 3-yr-old notes for learning Groovy 1.5&lt;/a&gt; as a base for writing a comprehensive test suite.&lt;br /&gt;
&lt;h3&gt;3. Unicode Properties&lt;/h3&gt;We&amp;#39;ll use &lt;a href="http://groovy.codeplex.com/wikipage?title=Unicode%20Inheritance&amp;referringTitle=Blog04"&gt;inheritance hierarchies&lt;/a&gt; to represent all the Unicode characters, one for the codepoints based on the general category and certain relevant boolean properties, the other for various decompositions. We&amp;#39;ve yet to analyze the information inside the Unihan variant data.&lt;br /&gt;
&lt;h3&gt;4. CJK Decomposition Data&lt;/h3&gt;The CJK Decomposition Data File is a graphical analysis of the approx 75,000 Chinese/Japanese characters in Unicode. They utilize approx 11,000 intermediate decompositions which are not themselves in Unicode. See &lt;a href="http://cjkdecomp.codeplex.com"&gt;the main project site&lt;/a&gt; for more details. The latest version, 0.4.0, was released on 15 August 2012. See also some notes on &lt;a href="http://groovy.codeplex.com/wikipage?title=Reflection%20and%20repetitions%20in%20the%20CJK%20decomposition%20data&amp;referringTitle=Blog04"&gt;using reflection in the CJK decompositions&lt;/a&gt;. We&amp;#39;ll use these decomps to design the IME keys for entering CJK tokens into the Groovy GUI.&lt;br /&gt;
&lt;h3&gt;5. Peer-to-Peer Engine&lt;/h3&gt;Enable the most common operator symbols and foreign-language names to be shared automatically between Groovy IME&amp;#39;s using a peer-to-peer protocol so developers will know the most commonly used names and symbols when writing code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;6 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="2"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#2"&gt;Unicode Pattern Syntax Tokens&lt;/a&gt;&lt;/h1&gt;
Each of the million-plus Unicode characters has about 50 properties associated with it. Most of them can change between different versions of Unicode or for defining private-use characters, except for six of them:
&lt;ul&gt;&lt;li&gt;Name (na)&lt;/li&gt;
&lt;li&gt;Jamo Short Name (jsn)&lt;/li&gt;
&lt;li&gt;Canonical Combining Class (ccc)&lt;/li&gt;
&lt;li&gt;Decomposition Mapping (dm)&lt;/li&gt;
&lt;li&gt;Pattern Syntax (PatSyn)&lt;/li&gt;
&lt;li&gt;Pattern White Space (PatWS)&lt;/li&gt;&lt;/ul&gt;
The first four will change from their default to a lifelong value for newly assigned characters, though. The other two, Pattern Syntax and Pattern White Space properties, both boolean values, will never change even when the character is being newly assigned. Only 11 characters have the PatWS property so they&amp;#39;re not as interesting as those with the PatSyn property, 2760 of them, 296 of which are still unassigned in Unicode 6.1.&lt;br /&gt;&lt;br /&gt;The unassigned characters are given the PatSyn property by defining all characters in certain blocks (rather than characters) as having the PatSyn property:
&lt;ul&gt;&lt;li&gt;2190..21FF; Arrows&lt;/li&gt;
&lt;li&gt;2200..22FF; Mathematical Operators&lt;/li&gt;
&lt;li&gt;2300..23FF; Miscellaneous Technical&lt;/li&gt;
&lt;li&gt;2400..243F; Control Pictures&lt;/li&gt;
&lt;li&gt;2440..245F; Optical Character Recognition&lt;/li&gt;
&lt;li&gt;2500..257F; Box Drawing&lt;/li&gt;
&lt;li&gt;2580..259F; Block Elements&lt;/li&gt;
&lt;li&gt;25A0..25FF; Geometric Shapes&lt;/li&gt;
&lt;li&gt;2600..26FF; Miscellaneous Symbols&lt;/li&gt;
&lt;li&gt;2700..27BF; Dingbats&lt;/li&gt;
&lt;li&gt;27C0..27EF; Miscellaneous Mathematical Symbols-A&lt;/li&gt;
&lt;li&gt;27F0..27FF; Supplemental Arrows-A&lt;/li&gt;
&lt;li&gt;2800..28FF; Braille Patterns&lt;/li&gt;
&lt;li&gt;2900..297F; Supplemental Arrows-B&lt;/li&gt;
&lt;li&gt;2980..29FF; Miscellaneous Mathematical Symbols-B&lt;/li&gt;
&lt;li&gt;2A00..2AFF; Supplemental Mathematical Operators&lt;/li&gt;
&lt;li&gt;2B00..2BFF; Miscellaneous Symbols and Arrows&lt;/li&gt;
&lt;li&gt;2E00..2E7F; Supplemental Punctuation&lt;/li&gt;&lt;/ul&gt;
From these, 30 exceptions (0x2776..0x2793) are subtracted, and 150 are added. The added exceptions include the ASCII symbol and punctuation characters often used for syntax in programming languages.&lt;br /&gt;&lt;br /&gt;According to Unicode standard annex 31: &lt;i&gt;&amp;quot;With a fixed set of whitespace and syntax code points, a pattern language can then have a policy requiring all possible syntax characters (even ones currently unused) to be quoted if they are literals. Using &lt;b&gt;this policy preserves the freedom to extend the syntax in the future by using those characters&lt;/b&gt;. Past patterns on future systems will always work; future patterns on past systems will signal an error instead of silently producing the wrong results.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There are, of course, many other symbol and punctuation characters in Unicode that aren&amp;#39;t Pattern Syntax characters, and more can be added that can&amp;#39;t become Pattern Syntax characters (unless they&amp;#39;re encoded in one of the remaining 296 unassigned Pattern Syntax slots). The only language I know of that utilizes Unicode&amp;#39;s pattern syntax invariance is XML 1.0, 5th edn. Perhaps the Groovy Language reboot will be the first Turing-complete language to do so.&lt;br /&gt;&lt;br /&gt;47 of the 2464 assigned Pattern Syntax are canonically equivalent to other forms, so can be ignored. 45 of those decompositions are to some other Pattern Syntax character followed by nonspacing mark 0x338( ̸ ), e.g. ≠ is = then mark ̸ . The other two, 0x2329 and 0x232A, are singleton decompositions to 0x3008(〈) and 0x3009(〉), both also Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Within the assigned pattern characters, perhaps the second most important distinction are the bidi-mirroring glyphs, those with the &lt;i&gt;bmg&lt;/i&gt; property, each of which must be swapped for its complement when used within a right-to-left rendering context, such as within Arabic and Hebrew text. There are 144 pairs of them, such as ( and ), or [ and ]. Because such pairs are used extensively in programming languages, with balancing often required to make language syntax more readable, they are an important subset of the Pattern Syntax characters.&lt;br /&gt;&lt;br /&gt;Perhaps another important subset of the Pattern Syntax are the 161 bidi-mirrored characters, those with the &lt;i&gt;bidim&lt;/i&gt; property, unmatched characters which must be mirrored when rendering, e.g. ∁ ∂ ∃ ∑ . A further subset could be characters that would be bidi-mirrored but aren&amp;#39;t because they&amp;#39;re already symmetrical, e.g. ∀ ∩ ∪ . They&amp;#39;re not indicated by any specific property, but must be guessed at based on their physical proximity to related bidi-mirrored characters in the Unicode database, e.g. ∃ is bidi-mirrored so ∀ must be symmetrical. Perhaps a specific property in a future version of Unicode would be nice.&lt;br /&gt;&lt;br /&gt;There&amp;#39;s many other Pattern Syntax characters that aren&amp;#39;t symmetrical but also aren&amp;#39;t mirroring or mirrored in a right-to-left rendering context because they&amp;#39;re considered to be &lt;i&gt;pictorial&lt;/i&gt; or &lt;i&gt;ornate&lt;/i&gt; characters, including those for box-drawing and all the arrows, such as 0x2190(←) and 0x2192(→). Unlike the Pattern Syntax property, the bidi properties of a character can change in future versions of Unicode, but for now we can&amp;#39;t use ← in programming and expect it to be rendered as → when we change the naming language to Arabic or the thematic ordering of the referents. So languages that use arrows in their syntax, such as Scala, aren&amp;#39;t future-proofed. Perhaps a future version of Unicode would add more mirroring pairs.&lt;br /&gt;&lt;br /&gt;In designing the Groovy reboot, we &lt;i&gt;do&lt;/i&gt; have 305 bidi-mirroring or -mirrored symbols to choose from, so not being able to use the arrows isn&amp;#39;t a big deal. We just need to be aware of our choices, and not make syntactic mistakes, as did the first bootup of Groovy when its project managers committed to treating every Unicode token above 0xFF as an identifier character :-(&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot will utilize the full power of Unicode in both its syntax &lt;b&gt;and&lt;/b&gt; its vocabulary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;5 February 2013&lt;/i&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href="#1"&gt;Groovy Japanese&lt;/a&gt;&lt;/h1&gt;
Something strange happened the other day! It&amp;#39;s difficult to explain so I better set the scene...&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve been learning Chinese for the last 10 years, between programming and teaching, so not too quickly, and my Chinese reading is better than my speaking or listening. I&amp;#39;ve noticed learning to read new Chinese characters &lt;i&gt;is different to&lt;/i&gt; reading words in other languages in that we must use both the &lt;b&gt;visual and auditory parts of the brain at the same time&lt;/b&gt;. E.g. to read 妈, we look at 女 visually and at 马 phonetically: 女 means &amp;quot;woman&amp;quot; and 马 sounds like &amp;quot;ma&amp;quot;, so when we see the word 妈, &lt;b&gt;both the visual and auditory parts of our brain together create the meaning&lt;/b&gt; &amp;quot;mother&amp;quot;. Of course, when we&amp;#39;ve learnt the word our longterm memory kicks in instead, but there&amp;#39;s always many more characters of the 3000-4000 commonly used ones we don&amp;#39;t know.&lt;br /&gt;&lt;br /&gt;A few months ago, I tried my hand at learning to read Japanese. Because I already know most of the Kanji, they being similar in meaning to the over 2000 Chinese characters I&amp;#39;ve learnt, I figured I&amp;#39;d have a head start learning to read Japanese if I weren&amp;#39;t concerned about speaking it. So I &lt;b&gt;decided to learn it visually, seeing if I can read it and understand the meaning, but without vocalizing it&lt;/b&gt; in my head. When looking through &lt;a href="http://www.guidetojapanese.org/learn/grammar"&gt;Tae Kim&amp;#39;s online tutorial&lt;/a&gt;, I&amp;#39;d noticed most of the 46 Hiragana usually have only one grammatical or functional meaning, e.g. ます for polite register.&lt;br /&gt;&lt;br /&gt;So I started practising reading Kanji/Hiragana text from some practise books. &lt;i&gt;(Language-learning books on Japanese are second in popularity to those on English in bookshops across China. They are useful to me because I can read the explanations in Chinese!)&lt;/i&gt; But one day recently something strange happened...&lt;br /&gt;&lt;br /&gt;I was looking at some Japanese text I could easily read but then I &lt;b&gt;had to cover my left eye&lt;/b&gt; because it started itching. &lt;b&gt;Suddenly I couldn&amp;#39;t understand any of the text I was looking at&lt;/b&gt;, except for some Kanji which I already knew the Chinese pronunciation for. But then I &lt;b&gt;tried covering my right eye, and suddenly I could understand the Japanese meaning easily&lt;/b&gt; again!&lt;br /&gt;&lt;br /&gt;It seems by learning to read basic Japanese so I can understand the meaning but not pronounce the words, only one side of my brain is utilized, the same side that processes vision from my left eye.&lt;br /&gt;&lt;br /&gt;This discovery also explains something else. When I&amp;#39;m programming, I usually play English-language TV shows in the background, and can follow the stories just by listening to them, only glancing at the TV screen once or twice a minute. I can code up programs that work &lt;b&gt;and&lt;/b&gt; remember the storyline of the TV shows &lt;b&gt;when I do both at the same time!&lt;/b&gt; If I do either activity by itself I get bored easily, but when I do both simultaneouly I can easily work for hours at a time. Also... these are the &lt;b&gt;only two mental activities I&amp;#39;m able to do simultaneously&lt;/b&gt;, without either activity being impacted.&lt;br /&gt;&lt;br /&gt;So I&amp;#39;ve made a picture &lt;i&gt;(using the image from Wikipedia)&lt;/i&gt; of what it seems each side of my brain does:&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=groovy&amp;DownloadId=617153" alt="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" title="Gavin&amp;#32;Grover&amp;#39;s&amp;#32;brain.gif" /&gt;&lt;br /&gt;Of course, all this has implications for &lt;a href="http://groovy.codeplex.com/wikipage?title=Kanji%20meets%20Programming&amp;referringTitle=Blog04"&gt;using Kanji in programming&lt;/a&gt; to make code terser. Because &lt;b&gt;the same half of the brain that reads Kanji visually also writes programming code&lt;/b&gt;, they should gel together easily, &lt;b&gt;and&lt;/b&gt; still leave the other half of the brain free for some interpersonal activity. In theory, we could write terse programs using Kanji &lt;i&gt;as well as&lt;/i&gt; use interpersonal skills to relate to clients and colleagues, and stuff like that!&lt;br /&gt;&lt;br /&gt;The Groovy Language reboot here at Codeplex aims to bring &lt;b&gt;all&lt;/b&gt; Unicode characters to the vocabulary of programs, not just the 96 ASCII (or 70 APL) ones. When the fake Groovy dies in the grave of Grales, the real Groovy will rise, bringing &lt;b&gt;all Unicode tokens&lt;/b&gt; for the programming half of our brains to use when we code.&lt;br /&gt;
&lt;h2&gt;See &lt;a href="http://groovy.codeplex.com/wikipage?title=Blog03&amp;referringTitle=Blog04"&gt;previous blog entries&lt;/a&gt;.&lt;/h2&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>gavingrover</author><pubDate>Thu, 07 Feb 2013 07:36:30 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Blog04 20130207073630A</guid></item></channel></rss>