This is an automated email from the ASF dual-hosted git repository. paulk pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/groovy-website.git
The following commit(s) were added to refs/heads/asf-site by this push: new 1f293ef draft coceu 2024 trip report 1f293ef is described below commit 1f293ef31bcd53eb7a2fc3ec827172cd5d5a7988 Author: Paul King <pa...@asert.com.au> AuthorDate: Mon Jun 17 15:40:46 2024 +1000 draft coceu 2024 trip report --- .../src/site/blog/community-over-code-eu-2024.adoc | 227 +++++++++++++++++++++ site/src/site/blog/img/coceu2024_groovy_poster.jpg | Bin 0 -> 2027745 bytes site/src/site/blog/img/coceu2024_iris.png | Bin 0 -> 1168632 bytes site/src/site/blog/img/coceu2024_iris1.png | Bin 0 -> 403154 bytes site/src/site/blog/img/coceu2024_iris2.png | Bin 0 -> 1168576 bytes site/src/site/blog/img/coceu2024_iris3.png | Bin 0 -> 678103 bytes site/src/site/blog/img/coceu2024_iris4.png | Bin 0 -> 240257 bytes site/src/site/blog/img/coceu2024_iris5.png | Bin 0 -> 139948 bytes site/src/site/blog/img/coceu2024_iris6.png | Bin 0 -> 729219 bytes site/src/site/blog/img/coceu2024_iris7.png | Bin 0 -> 474498 bytes site/src/site/blog/img/coceu2024_micronaut.png | Bin 0 -> 891504 bytes site/src/site/blog/img/coceu2024_micronaut1.png | Bin 0 -> 192806 bytes site/src/site/blog/img/coceu2024_micronaut2.png | Bin 0 -> 206204 bytes site/src/site/blog/img/coceu2024_micronaut3.png | Bin 0 -> 130992 bytes site/src/site/blog/img/coceu2024_micronaut4.png | Bin 0 -> 230666 bytes site/src/site/blog/img/coceu2024_micronaut5.png | Bin 0 -> 225572 bytes .../blog/img/coceu2024_micronaut_groovy_spock.png | Bin 0 -> 134239 bytes .../blog/img/coceu2024_operator_overloading.png | Bin 0 -> 906204 bytes site/src/site/blog/img/coceu2024_posters.jpg | Bin 0 -> 50822 bytes site/src/site/blog/img/coceu2024_primitives.png | Bin 0 -> 948781 bytes .../blog/img/coceu2024_static_roman_numerals.png | Bin 0 -> 186719 bytes site/src/site/blog/img/coceu2024_tac_dinner.jpg | Bin 0 -> 948786 bytes site/src/site/blog/img/coceu2024_transforms.png | Bin 0 -> 860063 bytes site/src/site/blog/img/coceu2024_whiskey.png | Bin 0 -> 1592195 bytes site/src/site/blog/img/coceu2024_whiskey1.png | Bin 0 -> 1380587 bytes site/src/site/blog/img/coceu2024_whiskey2.png | Bin 0 -> 698641 bytes site/src/site/blog/img/coceu2024_whiskey3.png | Bin 0 -> 836600 bytes site/src/site/blog/img/coceu2024_whiskey4.png | Bin 0 -> 891702 bytes site/src/site/blog/img/coceu2024_why_groovy.png | Bin 0 -> 1321987 bytes 29 files changed, 227 insertions(+) diff --git a/site/src/site/blog/community-over-code-eu-2024.adoc b/site/src/site/blog/community-over-code-eu-2024.adoc new file mode 100644 index 0000000..e106105 --- /dev/null +++ b/site/src/site/blog/community-over-code-eu-2024.adoc @@ -0,0 +1,227 @@ += Community Over Code (Europe) 2024 +Paul King +:revdate: 2024-06-17T17:00:00+00:00 +:draft: true +:description: This post looks at the ASF Community Over Code EU conference in Bratislava, Slovakia, June 3-5 2024, with a particular focus on the Groovy Track. +:keywords: groovy, asf, apachecon, communityovercode + +This year's European edition of the ASF conference, https://communityovercode.org/[Community Over Code], +featured three in-person days of sessions (June 3-5) at the Halifax Convention Centre, including a Groovy track on the last day. + +NOTE: The presentation slides and audio/video (where available) are still being added onto the conference site. +If additional material becomes available, this post will be updated with links to the additional content. + +This post gives a short trip report on the conference mostly focussed on the Groovy track. + +== The Conference, Venue, and Host city + +The conference was hosted at the Radisson Blu Carlton in Bratislava, Slovakia. The facilities were great, +and it was a great city to visit. + +image:https://eu.communityovercode.org/images/blog/images-bratislava1.jpg[width=47%] +image:https://photos.apachecon.com/_data/i/upload/2024/06/05/20240605134031-d3953d86-xx.jpg[width=42%] +image:https://photos.apachecon.com/_data/i/upload/2024/06/10/20240610202025-1ac29b1e-xx.jpg[width=44.4%] +image:https://photos.apachecon.com/_data/i/upload/2024/06/05/20240605081228-926eecf0-xx.jpg[width=44.4%] +image:img/coceu2024_tac_dinner.jpg[width=55%] +image:https://photos.apachecon.com/_data/i/upload/2023/10/20/20231020033313-d56c0136-me.jpg[stickers,width=33%] + +Kudos to all involved for making the event a fruitful and rewarding one! + +== Highlights from the Groovy BoF and Groovy Track + +We had a very engaging Birds-of-a-Feather (BoF) session with various users of the +Groovy programming language including a large contingent from the https://ofbiz.apache.org/[Apache OFBiz] +project. We also discussed some of the reasons why Groovy is still a compelling +language choice in 2024. + +=== Why use Groovy in 2024? + +This talk looked at some of the compelling reasons for using Groovy today. + +https://speakerdeck.com/paulk/groovy-today[image:img/coceu2024_why_groovy.png[first slide of slide deck]] +https://speakerdeck.com/paulk/groovy-today[Why use Groovy in 2024?] + +Some highlights: + +* Groovy's 80+ AST transforms allow you to write concise declarative style code. +As one example, here's an example of a deeply immutable `Book` class with +additional generated code for comparators (sorting), custom serialization and deserialization, +and some special JavaBean index handling code: ++ +image:img/coceu2024_transforms.png[AST transform example] +* Groovy's 2000+ extension methods enrich the Java class libraries with additional +functionality. As one example, primitive array extensions speed up certain operations +where you might otherwise use streams: ++ +image:img/coceu2024_primitives.png[performance of primitive int array extension methods] +* Groovy's operator overloading and extensible tooling greatly simplifies +use of the libraries and APIs that Java programmers are familiar with. +Here's an example of using Apache Commons Math: ++ +image:img/coceu2024_operator_overloading.png[matrix example] +* Groovy has excellent scripting and domain specific language (DSL) support. As one example, +in about 10 lines of code, you can write a statically-typed DSL for working with Roman +numerals. Once the DSL is defined, you can use it in scripts like this: ++ +[source,groovy] +---- +assert [LVII + LVII, V * III, V ** II, IV..(V+I), [X, V, I].sort()] + == [ cxiv, xv, xxv, iv..vi, [i, v, x] ] +---- ++ +Invalid roman numerals are detected at compile-time: ++ +image:img/coceu2024_static_roman_numerals.png[error,width=80%] + +Check out the https://speakerdeck.com/paulk/groovy-today[slide deck] for more information. + +=== Classifying Iris flowers with Groovy, Deep Learning, and GraalVM + +This talk looked at the machine language problem of classification using a classic Iris flowers dataset. + +https://speakerdeck.com/paulk/groovy-iris[image:img/coceu2024_iris.png[cover slide for slide deck]] +https://speakerdeck.com/paulk/groovy-iris[Classifying Iris flowers with Groovy, Deep Learning, and GraalVM] + +Highlights: + +* Classification predicts the class of something using models trained +on measured features given a known class: ++ +image:img/coceu2024_iris1.png[classifiation,width=80%] + +* The case study uses a well-known Iris dataset. +The measured features are sepal width and length, and petal width and length: ++ +image:img/coceu2024_iris2.png[classifiation,width=80%] + +* First, a number of classic algorithms for doing classification were examined +including the Naïve Bayes algorithm, here using the Weka data science library: ++ +image:img/coceu2024_iris3.png[classifiation,width=80%] + +* Then neural networks are explained. A potential network for the case study +is shown here: ++ +image:img/coceu2024_iris4.png[classifiation,width=80%] + +* Each node acts like a neuron in the human brain: +image:img/coceu2024_iris5.png[classifiation,width=80%] + +* Several libraries for deep learning were discussed including Deep Netts: ++ +image:img/coceu2024_iris6.png[classifiation,width=80%] + +* Compiling the script using the Groovy compiler with the `--compile-static` switch and +then using GraalVM to build a native image gave a more than 10 times speed increase: ++ +image:img/coceu2024_iris7.png[classifiation,width=80%] + +Check out the https://speakerdeck.com/paulk/groovy-iris[slide deck] for more information. + +=== Getting Started with the Micronaut Framework + +https://sergiodelamo.com/[Sergio del Amo] gave a talk on +https://speakerdeck.com/sdelamo/getting-started-with-the-micronaut-framework[Getting Started with the Micronaut Framework], in particular +its support for using Groovy when building microservices. +https://speakerdeck.com/sdelamo/getting-started-with-the-micronaut-framework[image:img/coceu2024_micronaut.png[slide deck first slide]] + +Highlights: + +* The speed of Micronaut applications comes from its ahead-of-time approach: ++ +image:img/coceu2024_micronaut1.png[Using Micronaut Launch] + +* Micronaut supports a range of runtimes: ++ +image:img/coceu2024_micronaut2.png[Using Micronaut Launch] + +* Micronaut supports a range of messaging technologies: ++ +image:img/coceu2024_micronaut3.png[Using Micronaut Launch] + +* Micronaut supports a range of persistence technologies: ++ +image:img/coceu2024_micronaut4.png[Using Micronaut Launch] + +* Micronaut supports a range of view technologies: ++ +image:img/coceu2024_micronaut5.png[Using Micronaut Launch] + +* You can create Microservices applications using Micronaut launch: ++ +image:img/coceu2024_micronaut_groovy_spock.png[Using Micronaut Launch] + +Check out the https://speakerdeck.com/sdelamo/getting-started-with-the-micronaut-framework[slide deck] for more information. + +=== Whiskey Clustering with Apache Projects:Groovy, Commons CSV, Commons Math, Ignite, Spark, Wayang, Beam, and Flink + +This talk looked at the machine language problem of clustering using a well-known whiskey flavor profiles dataset. + +https://speakerdeck.com/paulk/groovy-whiskey[image:img/coceu2024_whiskey.png[cover slide for slide deck]] +https://speakerdeck.com/paulk/groovy-whiskey[Whiskey Clustering with Apache Projects:Groovy, Commons CSV, Commons Math, Ignite, Spark, Wayang, Beam, & Flink] + +Highlights: + +* The case study looked at how to cluster 86 single malt scotch whiskies based on rankings of 12 flavor categories: ++ +image:img/Clustering0.png[Whiskey flavour profiles] + +* There are different algorithms that can be used to do the clustering. +K-Means clustering was the key algorithm covered: ++ +image:img/Clustering1.png[The k-means algorithm] + +* The talk covers using vanilla data science libraries +including Apache Commons Math to solve this problem, then looks at +how you might scale up the problem using a range of Apache technologies. +The first technology considered was Apache Ignite. First we read in the data: ++ +image:img/Clustering2.png[Whiskey flavour profiles] + +* Then we use Ignite's distributed clustering libraries to find the centroids: ++ +image:img/Clustering3.png[Whiskey flavour profiles] + +* Various options to tweak the algorithm and various +ways to visualize the results were examined: ++ +image:img/Clustering4.png[Whiskey flavour profiles with Ignite] + +* The same case study was also done using Spark: ++ +image:img/coceu2024_whiskey1.png[Whiskey flavour profiles with Spark] + +* The same case study was also done using Wayang: ++ +image:img/coceu2024_whiskey2.png[Whiskey flavour profiles with Wayang] + +* The same case study was also done using Beam (Python-style version shown here): ++ +image:img/coceu2024_whiskey3.png[Whiskey flavour profiles with Beam] + +* The same case study was also done using Flink: ++ +image:img/coceu2024_whiskey4.png[Whiskey flavour profiles with Flink] + +== Posters + +Community over Code EU also featured a dedicated area for poster sessions. +Corridor conversations are a key part of any ASF conference. +The posters provided a complimentary way to trigger conversations +as well as to learn about a range of topics if the folks who might know +all about those topics aren't in the corridor at the same time as you. + +image:img/coceu2024_posters.jpg[Posters,width=51%] +https://github.com/apache/apachecon-eu/blob/main/static/posters/CoCEU_WhyGroovyToday.pdf[image:img/coceu2024_groovy_poster.jpg[Why use Groovy in 2024? Poster,width=35%]] + +Check out the Groovy https://github.com/apache/apachecon-eu/blob/main/static/posters/CoCEU_WhyGroovyToday.pdf[poster]! + +== Other information + +See also: + +* https://photos.apachecon.com/index.php?/category/38[Additional photos] (may be added to over time). +* https://eu.communityovercode.org/program/[The official program] includes all tracks and will include +links to the slides of the talks if/when available. +* Upcoming Community Over Code conferences: https://asia.communityovercode.org/[C Over C Asia 2024] +https://communityovercode.org/[C Over C NA 2024]. diff --git a/site/src/site/blog/img/coceu2024_groovy_poster.jpg b/site/src/site/blog/img/coceu2024_groovy_poster.jpg new file mode 100644 index 0000000..6303ac8 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_groovy_poster.jpg differ diff --git a/site/src/site/blog/img/coceu2024_iris.png b/site/src/site/blog/img/coceu2024_iris.png new file mode 100644 index 0000000..d248c8a Binary files /dev/null and b/site/src/site/blog/img/coceu2024_iris.png differ diff --git a/site/src/site/blog/img/coceu2024_iris1.png b/site/src/site/blog/img/coceu2024_iris1.png new file mode 100644 index 0000000..7364ddf Binary files /dev/null and b/site/src/site/blog/img/coceu2024_iris1.png differ diff --git a/site/src/site/blog/img/coceu2024_iris2.png b/site/src/site/blog/img/coceu2024_iris2.png new file mode 100644 index 0000000..6e33ff9 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_iris2.png differ diff --git a/site/src/site/blog/img/coceu2024_iris3.png b/site/src/site/blog/img/coceu2024_iris3.png new file mode 100644 index 0000000..1e63ad4 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_iris3.png differ diff --git a/site/src/site/blog/img/coceu2024_iris4.png b/site/src/site/blog/img/coceu2024_iris4.png new file mode 100644 index 0000000..1dae9c3 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_iris4.png differ diff --git a/site/src/site/blog/img/coceu2024_iris5.png b/site/src/site/blog/img/coceu2024_iris5.png new file mode 100644 index 0000000..6a5e0a7 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_iris5.png differ diff --git a/site/src/site/blog/img/coceu2024_iris6.png b/site/src/site/blog/img/coceu2024_iris6.png new file mode 100644 index 0000000..f5140bc Binary files /dev/null and b/site/src/site/blog/img/coceu2024_iris6.png differ diff --git a/site/src/site/blog/img/coceu2024_iris7.png b/site/src/site/blog/img/coceu2024_iris7.png new file mode 100644 index 0000000..3d87857 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_iris7.png differ diff --git a/site/src/site/blog/img/coceu2024_micronaut.png b/site/src/site/blog/img/coceu2024_micronaut.png new file mode 100644 index 0000000..99ef72c Binary files /dev/null and b/site/src/site/blog/img/coceu2024_micronaut.png differ diff --git a/site/src/site/blog/img/coceu2024_micronaut1.png b/site/src/site/blog/img/coceu2024_micronaut1.png new file mode 100644 index 0000000..fd4f019 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_micronaut1.png differ diff --git a/site/src/site/blog/img/coceu2024_micronaut2.png b/site/src/site/blog/img/coceu2024_micronaut2.png new file mode 100644 index 0000000..7688fbd Binary files /dev/null and b/site/src/site/blog/img/coceu2024_micronaut2.png differ diff --git a/site/src/site/blog/img/coceu2024_micronaut3.png b/site/src/site/blog/img/coceu2024_micronaut3.png new file mode 100644 index 0000000..b97d85b Binary files /dev/null and b/site/src/site/blog/img/coceu2024_micronaut3.png differ diff --git a/site/src/site/blog/img/coceu2024_micronaut4.png b/site/src/site/blog/img/coceu2024_micronaut4.png new file mode 100644 index 0000000..e6514b3 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_micronaut4.png differ diff --git a/site/src/site/blog/img/coceu2024_micronaut5.png b/site/src/site/blog/img/coceu2024_micronaut5.png new file mode 100644 index 0000000..6b15d8d Binary files /dev/null and b/site/src/site/blog/img/coceu2024_micronaut5.png differ diff --git a/site/src/site/blog/img/coceu2024_micronaut_groovy_spock.png b/site/src/site/blog/img/coceu2024_micronaut_groovy_spock.png new file mode 100644 index 0000000..2ce11a3 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_micronaut_groovy_spock.png differ diff --git a/site/src/site/blog/img/coceu2024_operator_overloading.png b/site/src/site/blog/img/coceu2024_operator_overloading.png new file mode 100644 index 0000000..6fd9520 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_operator_overloading.png differ diff --git a/site/src/site/blog/img/coceu2024_posters.jpg b/site/src/site/blog/img/coceu2024_posters.jpg new file mode 100644 index 0000000..656ab43 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_posters.jpg differ diff --git a/site/src/site/blog/img/coceu2024_primitives.png b/site/src/site/blog/img/coceu2024_primitives.png new file mode 100644 index 0000000..b7c8fef Binary files /dev/null and b/site/src/site/blog/img/coceu2024_primitives.png differ diff --git a/site/src/site/blog/img/coceu2024_static_roman_numerals.png b/site/src/site/blog/img/coceu2024_static_roman_numerals.png new file mode 100644 index 0000000..a34b919 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_static_roman_numerals.png differ diff --git a/site/src/site/blog/img/coceu2024_tac_dinner.jpg b/site/src/site/blog/img/coceu2024_tac_dinner.jpg new file mode 100644 index 0000000..bba840e Binary files /dev/null and b/site/src/site/blog/img/coceu2024_tac_dinner.jpg differ diff --git a/site/src/site/blog/img/coceu2024_transforms.png b/site/src/site/blog/img/coceu2024_transforms.png new file mode 100644 index 0000000..6a209f9 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_transforms.png differ diff --git a/site/src/site/blog/img/coceu2024_whiskey.png b/site/src/site/blog/img/coceu2024_whiskey.png new file mode 100644 index 0000000..3f9a1b5 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_whiskey.png differ diff --git a/site/src/site/blog/img/coceu2024_whiskey1.png b/site/src/site/blog/img/coceu2024_whiskey1.png new file mode 100644 index 0000000..467a2cc Binary files /dev/null and b/site/src/site/blog/img/coceu2024_whiskey1.png differ diff --git a/site/src/site/blog/img/coceu2024_whiskey2.png b/site/src/site/blog/img/coceu2024_whiskey2.png new file mode 100644 index 0000000..42f3707 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_whiskey2.png differ diff --git a/site/src/site/blog/img/coceu2024_whiskey3.png b/site/src/site/blog/img/coceu2024_whiskey3.png new file mode 100644 index 0000000..b7d84d3 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_whiskey3.png differ diff --git a/site/src/site/blog/img/coceu2024_whiskey4.png b/site/src/site/blog/img/coceu2024_whiskey4.png new file mode 100644 index 0000000..4e3e6ac Binary files /dev/null and b/site/src/site/blog/img/coceu2024_whiskey4.png differ diff --git a/site/src/site/blog/img/coceu2024_why_groovy.png b/site/src/site/blog/img/coceu2024_why_groovy.png new file mode 100644 index 0000000..c3257d0 Binary files /dev/null and b/site/src/site/blog/img/coceu2024_why_groovy.png differ