This is an automated email from the ASF dual-hosted git repository.
git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/groovy-dev-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new af134f7 2025/11/07 14:32:07: Generated dev website from
groovy-website@251a7cb
af134f7 is described below
commit af134f794604d682d0986f554159424501600a51
Author: jenkins <[email protected]>
AuthorDate: Fri Nov 7 14:32:07 2025 +0000
2025/11/07 14:32:07: Generated dev website from groovy-website@251a7cb
---
blog/adventures-with-groovyfx.html | 2 +-
blog/apache-groovy-2022-year-in.html | 2 +-
blog/classifying-iris-flowers-with-deep.html | 2 +-
blog/comparators-and-sorting-in-groovy.html | 2 +-
blog/deck-of-cards-with-groovy.html | 2 +-
blog/deep-learning-and-eclipse-collections.html | 2 +-
blog/detecting-objects-with-groovy-the.html | 2 +-
blog/embabel-agentic-patterns.html | 513 +++++++++++++++++++++++
blog/feed.atom | 13 +-
blog/fruity-eclipse-collections.html | 2 +-
blog/fun-with-obfuscated-groovy.html | 2 +-
blog/gmavenplus-1-6-2-released.html | 2 +-
blog/groovy-2-4-16-released.html | 2 +-
blog/groovy-2-4-16-windows.html | 2 +-
blog/groovy-2-4-17-released.html | 2 +-
blog/groovy-2-5-0-released.html | 2 +-
blog/groovy-2-5-1-released.html | 2 +-
blog/groovy-2-5-2-released.html | 2 +-
blog/groovy-2-5-2-windows.html | 2 +-
blog/groovy-2-5-3-released.html | 2 +-
blog/groovy-2-5-3-windows.html | 2 +-
blog/groovy-2-5-4-released.html | 2 +-
blog/groovy-2-5-4-windows.html | 2 +-
blog/groovy-2-5-5-released.html | 2 +-
blog/groovy-2-5-5-windows.html | 2 +-
blog/groovy-2-5-6-released.html | 2 +-
blog/groovy-2-5-7-and.html | 2 +-
blog/groovy-2-5-7-released.html | 2 +-
blog/groovy-2-5-clibuilder-renewal.html | 2 +-
blog/groovy-3-0-0-alpha.html | 2 +-
blog/groovy-3-0-0-alpha1.html | 2 +-
blog/groovy-3-0-0-beta.html | 2 +-
blog/groovy-3-0-0-beta1.html | 2 +-
blog/groovy-3-0-0-beta2.html | 2 +-
blog/groovy-4-0-3-released.html | 2 +-
blog/groovy-ai.html | 2 +-
blog/groovy-dates-and-times-cheat.html | 2 +-
blog/groovy-dauphine.html | 2 +-
blog/groovy-haiku-processing.html | 2 +-
blog/groovy-list-processing-cheat-sheet.html | 2 +-
blog/groovy-lucene.html | 2 +-
blog/groovy-null-processing.html | 2 +-
blog/groovy-record-performance.html | 2 +-
blog/groovy-records.html | 2 +-
blog/groovy-release-train-4-0.html | 2 +-
blog/groovy-sequenced-collections.html | 2 +-
blog/groovy-text-similarity.html | 2 +-
blog/helloworldemoji.html | 2 +-
blog/index.html | 4 +-
blog/lego-bricks-with-groovy.html | 2 +-
blog/matrix-calculations-with-groovy-apache.html | 2 +-
blog/netbeans.html | 2 +-
blog/parsing-json-with-groovy.html | 2 +-
blog/reading-and-writing-csv-files.html | 2 +-
blog/seasons-greetings-emoji.html | 2 +-
blog/set-operations-with-groovy.html | 2 +-
blog/using-groovy-with-apache-wayang.html | 2 +-
blog/wayang-tensorflow.html | 2 +-
blog/whiskey-clustering-with-groovy-and.html | 2 +-
blog/wordle-checker.html | 2 +-
blog/zipping-collections-with-groovy.html | 2 +-
61 files changed, 585 insertions(+), 61 deletions(-)
diff --git a/blog/adventures-with-groovyfx.html
b/blog/adventures-with-groovyfx.html
index 5dbbc96..0edce80 100644
--- a/blog/adventures-with-groovyfx.html
+++ b/blog/adventures-with-groovyfx.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Adventures with GroovyFX</a></li><li><a
href='#_further_information' class='anchor-link'>Further
information</a></li></ul><br/><ul class='nav-sidebar'><li style='padding:
0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./deep-learning-an [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Adventures with GroovyFX</a></li><li><a
href='#_further_information' class='anchor-link'>Further
information</a></li></ul><br/><ul class='nav-sidebar'><li style='padding:
0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./reading-and-writ [...]
<div class="sectionbody">
<div class="paragraph">
<p>This blog looks at a <a href="http://groovyfx.org/">GroovyFX</a> version of
a <a
href="https://donraab.medium.com/my-weird-and-wonderful-first-adventures-with-javafx-6efe3b1923c8">ToDo
application originally written in JavaFX</a>.
diff --git a/blog/apache-groovy-2022-year-in.html
b/blog/apache-groovy-2022-year-in.html
index 72516d9..edf454f 100644
--- a/blog/apache-groovy-2022-year-in.html
+++ b/blog/apache-groovy-2022-year-in.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Apache Groovy™ 2022 Year In Review</a></li><li><a
href='#_releases_contributions' class='anchor-link'>Releases &
Contributions</a></li><li><a href='#_downloads'
class='anchor-link'>Downloads</a></li><li><a href='#_blogs'
class='anchor-link'>Blogs</a></li><li><a h [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Apache Groovy™ 2022 Year In Review</a></li><li><a
href='#_releases_contributions' class='anchor-link'>Releases &
Contributions</a></li><li><a href='#_downloads'
class='anchor-link'>Downloads</a></li><li><a href='#_blogs'
class='anchor-link'>Blogs</a></li><li><a h [...]
<div class="sectionbody">
<div class="paragraph">
<p>The year 2022 has been a reasonably good one for the Groovy Programming
Language.
diff --git a/blog/classifying-iris-flowers-with-deep.html
b/blog/classifying-iris-flowers-with-deep.html
index f5947db..6a7625b 100644
--- a/blog/classifying-iris-flowers-with-deep.html
+++ b/blog/classifying-iris-flowers-with-deep.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Classifying Iris Flowers with Deep Learning, Groovy™ and
GraalVM</a></li><li><a href='#_deep_learning' class='anchor-link'>Deep
Learning</a></li><li><a href='#_encog' class='anchor-link'>Encog</a></li><li><a
href='#_eclipse_deeplearning4j' class='anchor-link'>Eclipse [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Classifying Iris Flowers with Deep Learning, Groovy™ and
GraalVM</a></li><li><a href='#_deep_learning' class='anchor-link'>Deep
Learning</a></li><li><a href='#_encog' class='anchor-link'>Encog</a></li><li><a
href='#_eclipse_deeplearning4j' class='anchor-link'>Eclipse [...]
<div class="sectionbody">
<div class="paragraph">
<p><span class="image right"><img src="img/iris_flowers.png" alt="iris
flowers" width="200"></span>
diff --git a/blog/comparators-and-sorting-in-groovy.html
b/blog/comparators-and-sorting-in-groovy.html
index 0a117f2..357499c 100644
--- a/blog/comparators-and-sorting-in-groovy.html
+++ b/blog/comparators-and-sorting-in-groovy.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Comparators and Sorting in Groovy™</a></li><li><a
href='#_the_java_comparator_story_recap' class='anchor-link'>The Java
comparator story recap</a></li><li><a href='#_the_groovy_comparator_story'
class='anchor-link'>The Groovy comparator story</a></li><li><a href='#_m [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Comparators and Sorting in Groovy™</a></li><li><a
href='#_the_java_comparator_story_recap' class='anchor-link'>The Java
comparator story recap</a></li><li><a href='#_the_groovy_comparator_story'
class='anchor-link'>The Groovy comparator story</a></li><li><a href='#_m [...]
<div class="sectionbody">
<div class="paragraph">
<p><span class="image right"><img src="img/cher_record.png" alt="Cher"
width="179" height="179"></span>
diff --git a/blog/deck-of-cards-with-groovy.html
b/blog/deck-of-cards-with-groovy.html
index 7e91699..e7e043d 100644
--- a/blog/deck-of-cards-with-groovy.html
+++ b/blog/deck-of-cards-with-groovy.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Deck of cards with Groovy™, JDK collections and Eclipse
Collections</a></li></ul><br/><ul class='nav-sidebar'><li style='padding:
0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./deep-learning-and-eclipse-collections'>Deep Learnin [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Deck of cards with Groovy™, JDK collections and Eclipse
Collections</a></li></ul><br/><ul class='nav-sidebar'><li style='padding:
0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./deep-learning-and-eclipse-collections'>Deep Learnin [...]
<p>Once again, <a href="https://twitter.com/TheDonRaab">Donald Raab</a> has
produced an interesting
<a
href="https://donraab.medium.com/how-to-create-a-deck-of-cards-using-eclipse-collections-d9838ac430b7">blog
post</a> on
<a href="https://github.com/eclipse/eclipse-collections">Eclipse
Collections</a> this one shows some code for modelling and manipulating cards
with Java 17 and Eclipse Collections. His related katas are highly recommended.
diff --git a/blog/deep-learning-and-eclipse-collections.html
b/blog/deep-learning-and-eclipse-collections.html
index ed95ec2..8668b42 100644
--- a/blog/deep-learning-and-eclipse-collections.html
+++ b/blog/deep-learning-and-eclipse-collections.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Deep Learning and Eclipse Collections</a></li><li><a
href='#_setting_up_our_model_and_data' class='anchor-link'>Setting up our model
and data</a></li><li><a href='#_applying_deep_learning'
class='anchor-link'>Applying deep learning</a></li></ul><br/><ul
class='nav-sidebar' [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Deep Learning and Eclipse Collections</a></li><li><a
href='#_setting_up_our_model_and_data' class='anchor-link'>Setting up our model
and data</a></li><li><a href='#_applying_deep_learning'
class='anchor-link'>Applying deep learning</a></li></ul><br/><ul
class='nav-sidebar' [...]
<div class="sectionbody">
<div class="paragraph">
<p>In previous blogs, we’ve covered
diff --git a/blog/detecting-objects-with-groovy-the.html
b/blog/detecting-objects-with-groovy-the.html
index 4f6adce..6e24ef7 100644
--- a/blog/detecting-objects-with-groovy-the.html
+++ b/blog/detecting-objects-with-groovy-the.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Detecting objects with Groovy™, the Deep Java Library (DJL),
and Apache MXNet</a></li><li><a href='#_deep_learning' class='anchor-link'>Deep
Learning</a></li><li><a href='#_deep_java_library_djl_apache_mxnet'
class='anchor-link'>Deep Java Library (DJL) & Apache M [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Detecting objects with Groovy™, the Deep Java Library (DJL),
and Apache MXNet</a></li><li><a href='#_deep_learning' class='anchor-link'>Deep
Learning</a></li><li><a href='#_deep_java_library_djl_apache_mxnet'
class='anchor-link'>Deep Java Library (DJL) & Apache M [...]
<div class="sectionbody">
<div class="paragraph">
<p>This blog posts looks at using <a href="https://groovy-lang.org/">Apache
Groovy</a> with the
diff --git a/blog/embabel-agentic-patterns.html
b/blog/embabel-agentic-patterns.html
new file mode 100644
index 0000000..7d2f612
--- /dev/null
+++ b/blog/embabel-agentic-patterns.html
@@ -0,0 +1,513 @@
+<!DOCTYPE html>
+<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
+<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
+<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]--><head>
+ <meta charset='utf-8'/><meta http-equiv='X-UA-Compatible'
content='IE=edge'/><meta name='viewport' content='width=device-width,
initial-scale=1'/><meta name='keywords' content='groovy, spring ai, embabel,
agentic'/><meta name='description' content='This post highlights some agentic
code patterns supported by Embabel.'/><title>The Apache Groovy programming
language - Blogs - Groovy™, Embabel, and Agentic Design
Patterns</title><link href='../img/favicon.ico' type='image/x-ico' r [...]
+</head><body>
+ <div id='fork-me'>
+ <a href='https://github.com/apache/groovy'>
+ <img style='position: fixed; top: 20px; right: -58px; border: 0;
z-index: 100; transform: rotate(45deg);'
src='../img/horizontal-github-ribbon.png'/>
+ </a>
+ </div><div id='st-container' class='st-container st-effect-9'>
+ <nav class='st-menu st-effect-9' id='menu-12'>
+ <h2 class='icon icon-lab'>Socialize</h2><ul>
+ <li>
+ <a href='https://groovy-lang.org/mailing-lists.html'
class='icon'><span class='fa fa-classic fa-regular fa-envelope'></span> Discuss
on the mailing list</a>
+ </li><li>
+ <a href='https://x.com/ApacheGroovy' class='icon'><span
class='fa fa-brands fa-x-twitter'></span> Groovy on X</a>
+ </li><li>
+ <a href='https://bsky.app/profile/groovy.apache.org'
class='icon'><span class='fa fa-brands fa-bluesky'></span> Groovy on Bluesky</a>
+ </li><li>
+ <a href='https://fosstodon.org/@ApacheGroovy'
class='icon'><span class='fa fa-brands fa-mastodon'></span> Groovy on
Mastodon</a>
+ </li><li>
+ <a
href='https://www.linkedin.com/company/106402668/admin/dashboard/'
class='icon'><span class='fa fa-brands fa-linkedin'></span> Groovy on
LinkedIn</a>
+ </li><li>
+ <a href='https://groovy-lang.org/events.html'
class='icon'><span class='fa fa-classic fa-solid fa-calendar-days'></span>
Events and conferences</a>
+ </li><li>
+ <a href='https://github.com/apache/groovy'
class='icon'><span class='fa fa-brands fa-github'></span> Source code on
GitHub</a>
+ </li><li>
+ <a href='https://groovy-lang.org/reporting-issues.html'
class='icon'><span class='fa fa-classic fa-solid fa-bug'></span> Report issues
in Jira</a>
+ </li><li>
+ <a href='http://stackoverflow.com/questions/tagged/groovy'
class='icon'><span class='fa fa-brands fa-stack-overflow'></span> Stack
Overflow questions</a>
+ </li><li>
+ <a href='http://www.groovycommunity.com/'
class='icon'><span class='fa fa-brands fa-slack'></span> Slack Community</a>
+ </li>
+ </ul>
+ </nav><div class='st-pusher'>
+ <div class='st-content'>
+ <div class='st-content-inner'>
+ <!--[if lt IE 7]>
+ <p class="browsehappy">You are using an
<strong>outdated</strong> browser. Please <a
href="http://browsehappy.com/">upgrade your browser</a> to improve your
experience.</p>
+ <![endif]--><div><div class='navbar navbar-default
navbar-static-top' role='navigation'>
+ <div class='container'>
+ <div class='navbar-header'>
+ <button type='button'
class='navbar-toggle' data-toggle='collapse' data-target='.navbar-collapse'>
+ <span class='sr-only'></span><span
class='icon-bar'></span><span class='icon-bar'></span><span
class='icon-bar'></span>
+ </button><a class='navbar-brand'
href='../index.html'>
+ <i class='fa-classic fa-solid
fa-star'></i> Apache Groovy™
+ </a>
+ </div><div class='navbar-collapse collapse'>
+ <ul class='nav navbar-nav navbar-right'>
+ <li class=''><a
href='https://groovy-lang.org/learn.html'>Learn</a></li><li class=''><a
href='https://groovy-lang.org/documentation.html'>Documentation</a></li><li
class=''><a href='/download.html'>Download</a></li><li class=''><a
href='https://groovy-lang.org/support.html'>Support</a></li><li class=''><a
href='/'>Contribute</a></li><li class=''><a
href='https://groovy-lang.org/ecosystem.html'>Ecosystem</a></li><li class=''><a
href='/blog'>Blog pos [...]
+ <a data-effect='st-effect-9'
class='st-trigger' href='#'>Socialize</a>
+ </li><li class=''>
+ <a href='../search.html'>
+ <i class='fa-classic fa-solid
fa-magnifying-glass'></i>
+ </a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™, Embabel, and Agentic Design Patterns</a></li><li><a
href='#_prompt_chaining' class='anchor-link'>Prompt Chaining</a></li><li><a
href='#_reflection' class='anchor-link'>Reflection</a></li><li><a
href='#_routing' class='anchor-link'>Routing</a></li><li><a href [...]
+<div class="sectionbody">
+<div class="paragraph">
+<p>A recent <a
href="https://medium.com/@springrod/build-better-agents-in-java-vs-python-embabel-vs-langgraph-f7951a0d855c">blog
post</a> by Rod Johnson, looked at using Embabel and Java to solve some common
agentic design patterns.
+Rod’s post in turn reference’s
+another blog post by Hamza Boulahia using LangGraph with Python. Rod’s
post makes some
+excellent arguments as to the benefits of a JVM solution over LangGraph and
Python.
+We won’t repeat those arguments here, but we highly recommend that you
read Rod’s article.</p>
+</div>
+<div class="paragraph">
+<p>This blog post looks at those same examples using Groovy. Groovy is
sometimes referred to
+as the Python of the JVM world. It’s syntax mostly resembles Java but
some of its features
+will be familiar to Python programmers. So, for Python folks who want to try
out some JVM
+AI frameworks, Groovy might be a nice entry point.
+Also, for Groovy folks, we want to show them how easy it is to use powerful
JVM frameworks like Embabel.
+As an added bonus, we’ll get to show off a few neat features of Groovy
on the way.</p>
+</div>
+<div class="paragraph">
+<p>We used Java 25, Groovy 5.0.2, and Embabel 0.2.0-SNAPSHOT.
+Embabel itself is built on Spring boot. We used Spring boot 3.5.6.
+Embabel supports a range of LLMs. We used Mistral:7b with Ollama.</p>
+</div>
+<div class="paragraph">
+<p>Embabel can make use of Spring Shell functionality and our example is all
set up to use that.
+First, you’ll need to have Ollama running locally, or set it up using
docker as follows:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code data-lang="shell">docker run -d -v
ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
+docker exec -it ollama ollama run mistral:7b</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can of course use other LLMs and other models.
+Follow the <a
href="https://docs.embabel.com/embabel-agent/guide/0.1.3/">Embabel
documentation</a>
+to configure such artifacts if needed.</p>
+</div>
+<div class="paragraph">
+<p>Assuming you have cloned the <a
href="https://github.com/paulk-asert/langgraph-patterns-groovy">example
repo</a>, you can then run the example using:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code data-lang="shell">./gradlew
run</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This invokes our Embabel (Spring Boot) application:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code
data-lang="groovy">@SpringBootApplication
+@EnableAgents(loggingTheme = LoggingThemes.COLOSSUS)
+void main() {
+ SpringApplication.run(PatternsApplication)
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can then interact with the Embabel agents from the command line (or IDE
run terminal window).</p>
+</div>
+<div class="paragraph">
+<p>Now, we’re ready to start exploring some of those design patterns.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_prompt_chaining">Prompt Chaining</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Prompt chaining breaks tasks into manageable pieces.
+The blog title generator example picks topics from user input,
+and then generates several blog titles for each topic.
+The Groovy solution follows the Java solution very closely:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code data-lang="groovy">@Agent(description
= 'Blog Titler Agent')
+class BlogTitler {
+
+ private final Actor<?> techWriter = new Actor<>('''
+ You are an expert technical writer. Always give clear,
+ concise, and straight-to-the-point answers.
+ ''', LlmOptions.withAutoLlm())
+
+ record Topics(List<String> topics) {
+ }
+
+ record TopicTitles(String topic, List<String> titles) {
+ }
+
+ record BlogTitles(List<TopicTitles> topicTitles) {
+ }
+
+ @Action
+ Topics extractTopics(UserInput userInput, Ai ai) {
+ techWriter.promptRunner(ai)
+ .creating(Topics)
+ .fromPrompt("""
+ Extract 1-3 key topics from the following text:
+ $userInput.content
+ """)
+ }
+
+ @Action
+ @AchievesGoal(description='Generate Titles for Topics')
+ BlogTitles generateBlogTitles(Topics topics, OperationContext context) {
+ var titles = context.parallelMap(
+ topics.topics(),
+ 10,
+ topic -> techWriter.promptRunner(context)
+ .creating(TopicTitles)
+ .fromPrompt("""
+ Generate two catchy blog titles for this topic:
+ $topic
+ """))
+ new BlogTitles(titles)
+ }
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>It has domain records like <code>Topics</code> and <code>BlogTitles</code>
to provide a richer context for our prompts
+compared to simple strings. The Groovy version has some minor improvements
compared to Java.
+The most important is possibly the interpolated string support, which is still
coming for Java.</p>
+</div>
+<div class="paragraph">
+<p>At the shell prompt, you can enter a command like:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>Colossus> blogs topics "Why Groovy is a great option for your AI
applications especially when using Embabel"</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>And the output might be something like this:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>{
+ "topicTitles" : [ {
+ "topic" : "Groovy",
+ "titles" : [ "Unleashing Potential: Mastering Groovy for Modern
Development", "Exploring the Future of Coding: Top Groovy Trends and Techniques
in 2025" ]
+ }, {
+ "topic" : "AI Applications",
+ "titles" : [ "Unleashing Potential: Top AI Applications Shaping Our
Future", "Revolutionizing Everyday Life: Exploring Cutting-Edge AI
Applications" ]
+ }, {
+ "topic" : "Embabel",
+ "titles" : [ "Unveiling the Future: A Deep Dive into Embabel Technology",
"Embabel Revolution: Transforming Tomorrow's Tech Landscape Today" ]
+ } ]
+}</pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_reflection">Reflection</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Reflection, also know by other names such as the evaluator-optimizer
pattern,
+is where agents critique and improve outputs.
+The draft and refine example explores drafting text in response to a
user-specified task
+and critiquing it until it’s satisfactory.</p>
+</div>
+<div class="paragraph">
+<p>Here is the Groovy code:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code data-lang="groovy">@Configuration
+class DraftAndRefine {
+
+ record Draft(String content) {
+ }
+
+ @Bean
+ Agent draftAndRefineAgent() {
+ RepeatUntilAcceptableBuilder
+ .returning(Draft)
+ .consuming(UserInput)
+ .withMaxIterations(7)
+ .withScoreThreshold(.99)
+ .repeating(tac -> {
+ tac.ai()
+ .withAutoLlm()
+ .withId('draft')
+ .createObject("""
+ You are an assistant helping to complete the following
task:
+
+ Task:
+ $tac.input.content
+
+ Current Draft:
+ ${tac.lastAttemptOr("no draft yet")}
+
+ Feedback:
+ ${tac.lastFeedbackOr("no feedback yet")}
+
+ Instructions:
+ - If there is no draft and no feedback, generate a
clear and complete response to the task.
+ - If there is a draft but no feedback, improve the
draft as needed for clarity and quality.
+ - If there is both a draft and feedback, revise the
draft by incorporating the feedback directly.
+ - Always produce a single, improved draft as your
output.
+ """, Draft)
+ })
+ .withEvaluator(tac -> {
+ tac.ai().withAutoLlm()
+ .withId('evaluate_draft')
+ .createObject("""
+ Evaluating the following draft, based on the given
task.
+ Score it from 0.0 to 1.0 (best) and provide
constructive feedback for improvement.
+
+ Task:
+ $tac.input.content
+
+ Draft:
+ $tac.resultToEvaluate
+ """, TextFeedback)
+ })
+ .buildAgent('draft_and_refine_agent', 'An agent that drafts and
refines content')
+ }
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Again, it follows the Java code very closely with some minor
improvements.</p>
+</div>
+<div class="paragraph">
+<p>You might invoke it with something like:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>Colossus> x "Draft and refine a paragraph about using Groovy and
Embabel"</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The output might be something like:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>You asked: UserInput(content=Draft and refine a paragraph about using
Groovy and Embabel, timestamp=2025-11-07T10:37:55.707939Z)
+
+{
+ "content" : "Groovy, a dynamic language for the Java platform with an
elegant syntax and seamless integration with Java, is particularly useful when
combined with Embabel. In complex problem-solving scenarios such as test
automation and scripting tasks, Groovy's concise and readable code enables
developers to tackle these challenges effectively. Embabel simplifies the
process by abstracting away low-level programming details, further improving
performance and reducing development time [...]
+}
+
+LLMs used: [mistral:7b] across 15 calls
+Prompt tokens: 7,502,
+Completion tokens: 1,914</pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_routing">Routing</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Another fundamental pattern is routing within a workflow.
+The sentiment classification example first performs sentiment analysis,
+and then chooses between alternative options for generating a response.</p>
+</div>
+<div class="paragraph">
+<p>The Java Embabel solution itself incorporates a coding design pattern:
+Algebraic Data Types (ADTs). This pattern is worth exploring a bit more.
+ADTs have <em>product</em> types, like records,
+and <em>sum</em> types, like what you get with a sealed base class and some
subtype variants.
+Other programming languages, like Haskell, represent sum types with different
approaches.
+A common scenario is capturing state as types (positive/negative in our
+example but more elaborate state machines can be represented this way).
+It is also convenient being able to convert between the states and a data type
+like an enum. As an added bonus, serializability to JSON also helps in many
scenarios
+including constructing AI payloads.</p>
+</div>
+<div class="paragraph">
+<p>The first half of the <code>ClassificationAgent</code> class
+has the relevant types for our ADT (copied from Rod’s example):</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code data-lang="java">@Agent(description =
"Perform sentiment analysis") // Java
+public class ClassificationAgent {
+
+ @JsonTypeInfo(
+ use = JsonTypeInfo.Id.SIMPLE_NAME,
+ include = JsonTypeInfo.As.PROPERTY,
+ property = "type"
+ )
+ public sealed interface Sentiment {
+ }
+
+ public static final class Positive implements Sentiment {
+ }
+
+ public static final class Negative implements Sentiment {
+ }
+
+ private enum SentimentType {
+ POSITIVE,
+ NEGATIVE;
+
+ public Sentiment toSentiment() {
+ return switch (this) {
+ case POSITIVE -> new Positive();
+ case NEGATIVE -> new Negative();
+ };
+ }
+ }
+
+ public record Response(String message) {
+ }</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You could imagine similar scenarios where we’d want to capture
similar ADTs.
+Whenever we have common boilerplate code, Groovy AST transforms can be a
useful tool.
+We’ll create a <code>@SumType</code> AST transform (details in the
source code repo). Then our code becomes:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code data-lang="groovy">@Agent(description
= 'Perform sentiment analysis')
+class ClassificationAgent {
+
+ @SumType(variantHelper = 'toSentiment')
+ interface Sentiment {
+ Positive()
+ Negative()
+ }
+
+ record Response(String message) {
+ }</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>It generates the same types and methods in Rod’s example.</p>
+</div>
+<div class="paragraph">
+<p>The second half of the classification agent follows the Java version
closely:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="prettyprint highlight"><code data-lang="groovy"> @Action
+ Sentiment classify(UserInput userInput, Ai ai) {
+ ai.withAutoLlm()
+ .createObject("""
+ Determine if the sentiment of the following text is positive
or negative.
+ Text: "$userInput.content"
+ """, SentimentType)
+ .toSentiment()
+ }
+
+ @Action
+ Response encourage(UserInput userInput, Positive sentiment, Ai ai) {
+ ai.withAutoLlm()
+ .createObject("""
+ Generate an encouraging response to the following positive
text:
+ $userInput.content
+ """, Response)
+ }
+
+ @Action
+ Response help(UserInput userInput, Negative sentiment, Ai ai) {
+ ai.withAutoLlm()
+ .createObject("""
+ Generate a supportive response to the following negative text:
+ $userInput.content
+ """, Response)
+ }
+
+ @AchievesGoal(description = 'Generate a response based on discerning
sentiment in user input')
+ @Action
+ Response done(Response response) {
+ response
+ }
+
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>We can ask a query that will trigger these agents:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>x "Analyze sentiment and respond to 'Groovy makes you more productive
when writing your AI applications' "</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The output might look like this:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>You asked: UserInput(content=Analyze sentiment and respond to 'Groovy
makes you more productive when writing your AI applications' ,
timestamp=2025-11-07T10:40:14.120002Z)
+
+{
+ "message" : "Continuing to utilize Groovy for your AI applications will
undeniably foster increased productivity and efficiency in your development
process. Keep up the great work!"
+}
+
+LLMs used: [mistral:7b] across 2 calls
+Prompt tokens: 425,
+Completion tokens: 47</pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_discussion">Discussion</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Hopefully you can see that writing Embabel applications is easy using
Groovy.
+Python users might find the Groovy syntax a friendly starting point to try out
JVM development.
+Certainly, Groovy has
+powerful DSL capabilities. We could provide an alternative DSL that offered
+an even more Python-like coding experience for the Embabel framework,
+but that’s a topic for a different blog post.</p>
+</div>
+<div class="sidebarblock">
+<div class="content">
+<div class="title">Update history</div>
+<div class="paragraph">
+<p><strong>07/Nov/2025</strong>: Initial version.</p>
+</div>
+</div>
+</div>
+</div>
+</div></div></div></div></div><footer id='footer'>
+ <div class='row'>
+ <div class='colset-3-footer'>
+ <div class='col-1'>
+ <h1>Groovy</h1><ul>
+ <li><a
href='https://groovy-lang.org/learn.html'>Learn</a></li><li><a
href='https://groovy-lang.org/documentation.html'>Documentation</a></li><li><a
href='/download.html'>Download</a></li><li><a
href='https://groovy-lang.org/support.html'>Support</a></li><li><a
href='/'>Contribute</a></li><li><a
href='https://groovy-lang.org/ecosystem.html'>Ecosystem</a></li><li><a
href='/blog'>Blog posts</a></li><li><a
href='https://groovy.apache.org/events.ht [...]
+ </ul>
+ </div><div class='col-2'>
+ <h1>About</h1><ul>
+ <li><a
href='https://github.com/apache/groovy'>Source code</a></li><li><a
href='https://groovy-lang.org/security.html'>Security</a></li><li><a
href='https://groovy-lang.org/learn.html#books'>Books</a></li><li><a
href='https://groovy-lang.org/thanks.html'>Thanks</a></li><li><a
href='http://www.apache.org/foundation/sponsorship.html'>Sponsorship</a></li><li><a
href='https://groovy-lang.org/faq.html'>FAQ</a></li><li><a
href='https://groovy-lang.or [...]
+ </ul>
+ </div><div class='col-3'>
+ <h1>Socialize</h1><ul>
+ <li><a
href='https://groovy-lang.org/mailing-lists.html'>Discuss on the mailing
list</a></li><li><a href='https://x.com/ApacheGroovy'>Groovy on
X</a></li><li><a href='https://bsky.app/profile/groovy.apache.org'>Groovy on
Bluesky</a></li><li><a href='https://fosstodon.org/@ApacheGroovy'>Groovy on
Mastodon</a></li><li><a
href='https://www.linkedin.com/company/106402668/admin/dashboard/'>Groovy on
LinkedIn</a></li><li><a href='https://groovy-lang. [...]
+ </ul>
+ </div><div class='col-right'>
+ <p>
+ The Groovy programming language is
supported by the <a href='https://www.apache.org'>Apache Software
Foundation</a> and the Groovy community.
+ </p><div text-align='right'>
+ <img
src='https://www.apache.org/img/asf_logo.png' title='The Apache Software
Foundation' alt='The Apache Software Foundation' style='width:60%'/>
+ </div><p>Apache, Apache Groovy,
Groovy, and the ASF logo are either registered trademarks or trademarks of The
Apache Software Foundation.</p>
+ </div>
+ </div><div class='clearfix'>© 2003-2025
the Apache Groovy project — Groovy is Open Source: <a
href='https://www.apache.org/licenses/LICENSE-2.0.html' alt='Apache 2
License'>license</a>, <a
href='https://privacy.apache.org/policies/privacy-policy-public.html'>privacy
policy</a>.</div>
+ </div>
+ </footer></div>
+ </div>
+ </div>
+ </div>
+ </div><script src='../js/vendor/jquery-1.10.2.min.js'
defer></script><script src='../js/vendor/classie.js' defer></script><script
src='../js/vendor/bootstrap.js' defer></script><script
src='../js/vendor/sidebarEffects.js' defer></script><script
src='../js/vendor/modernizr-2.6.2.min.js' defer></script><script
src='../js/plugins.js' defer></script><script
src='../js/vendor/prettify.min.js'></script><script>document.addEventListener('DOMContentLoaded',prettyPrint)</script>
+</body></html>
\ No newline at end of file
diff --git a/blog/feed.atom b/blog/feed.atom
index 85cefb4..8cf03ce 100644
--- a/blog/feed.atom
+++ b/blog/feed.atom
@@ -4,7 +4,18 @@
<link href="http://groovy.apache.org/blog"/>
<link href="http://groovy.apache.org/blog/feed.atom" rel="self"/>
<id>http://groovy.apache.org/blog</id>
- <updated>2025-10-15T07:06:20Z</updated>
+ <updated>2025-11-07T23:00:00Z</updated>
+ <entry>
+ <id>http://groovy.apache.org/blog/embabel-agentic-patterns</id>
+ <author>
+ <name>Paul King</name>
+ </author>
+ <title type="html">Groovy&trade;, Embabel, and Agentic Design
Patterns</title>
+ <link href="http://groovy.apache.org/blog/embabel-agentic-patterns"/>
+ <updated>2025-11-07T23:00:00Z</updated>
+ <published>2025-11-07T23:00:00Z</published>
+ <summary type="html">This post highlights some agentic code patterns
supported by Embabel.</summary>
+ </entry>
<entry>
<id>http://groovy.apache.org/blog/groovy-ai</id>
<author>
diff --git a/blog/fruity-eclipse-collections.html
b/blog/fruity-eclipse-collections.html
index 59a9c17..a3c27e3 100644
--- a/blog/fruity-eclipse-collections.html
+++ b/blog/fruity-eclipse-collections.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Fruity Eclipse Collections</a></li><li><a
href='#_eclipse_collections_fruit_salad' class='anchor-link'>Eclipse
Collections Fruit Salad</a></li><li><a href='#_exploring_emoji_colors'
class='anchor-link'>Exploring emoji colors</a></li><li><a
href='#_putting_it_all_together' [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Fruity Eclipse Collections</a></li><li><a
href='#_eclipse_collections_fruit_salad' class='anchor-link'>Eclipse
Collections Fruit Salad</a></li><li><a href='#_exploring_emoji_colors'
class='anchor-link'>Exploring emoji colors</a></li><li><a
href='#_putting_it_all_together' [...]
<div class="sectionbody">
<div class="paragraph">
<p>This blog post continues on the theme of using fruit emoji from the
diff --git a/blog/fun-with-obfuscated-groovy.html
b/blog/fun-with-obfuscated-groovy.html
index 9589132..a0aaed1 100644
--- a/blog/fun-with-obfuscated-groovy.html
+++ b/blog/fun-with-obfuscated-groovy.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Fun with obfuscated Groovy™</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a
href='./matrix-calculations-with-groovy-apache'>Matrix calculations with
Groovy™, Apache Comm [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Fun with obfuscated Groovy™</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a
href='./matrix-calculations-with-groovy-apache'>Matrix calculations with
Groovy™, Apache Comm [...]
<p>An interesting tweet appeared in my feed this morning:</p>
</div>
<div class="paragraph">
diff --git a/blog/gmavenplus-1-6-2-released.html
b/blog/gmavenplus-1-6-2-released.html
index ebc63ac..7be3f6a 100644
--- a/blog/gmavenplus-1-6-2-released.html
+++ b/blog/gmavenplus-1-6-2-released.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>GMavenPlus 1.6.2 Released (Community Artifact)</a></li><li><a
href='#_gmavenplus_1_6_2_has_been_released' class='anchor-link'>GMavenPlus
1.6.2 has been released.</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Rel [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>GMavenPlus 1.6.2 Released (Community Artifact)</a></li><li><a
href='#_gmavenplus_1_6_2_has_been_released' class='anchor-link'>GMavenPlus
1.6.2 has been released.</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Rel [...]
<h2 id="_gmavenplus_1_6_2_has_been_released">GMavenPlus 1.6.2 has been
released.</h2>
<div class="sectionbody">
<div class="paragraph">
diff --git a/blog/groovy-2-4-16-released.html b/blog/groovy-2-4-16-released.html
index 3ac720c..39cb4b0 100644
--- a/blog/groovy-2-4-16-released.html
+++ b/blog/groovy-2-4-16-released.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.4.16 Released</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a
href='./groovy-2-4-16-windows'>Groovy 2.4.16 Windows Installer Released
(Community Artifact)</a></li><li><a hr [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.4.16 Released</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a
href='./groovy-2-4-16-windows'>Groovy 2.4.16 Windows Installer Released
(Community Artifact)</a></li><li><a hr [...]
<p>Dear community,</p>
</div>
<div class="paragraph">
diff --git a/blog/groovy-2-4-16-windows.html b/blog/groovy-2-4-16-windows.html
index f82b4db..782c381 100644
--- a/blog/groovy-2-4-16-windows.html
+++ b/blog/groovy-2-4-16-windows.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.4.16 Windows Installer Released (Community
Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em
0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./groovy-2-4-16-released'>Groovy 2.4.16 Released</a></li><li><a h [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.4.16 Windows Installer Released (Community
Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em
0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./groovy-2-4-16-released'>Groovy 2.4.16 Released</a></li><li><a h [...]
<p>The Windows installer for Groovy 2.4.16 (community artifact) is available
from:
<a
href="https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-2.4.16/"
class="bare">https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-2.4.16/</a></p>
</div></div></div></div></div><footer id='footer'>
diff --git a/blog/groovy-2-4-17-released.html b/blog/groovy-2-4-17-released.html
index 13329a7..80c6573 100644
--- a/blog/groovy-2-4-17-released.html
+++ b/blog/groovy-2-4-17-released.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.4.17 Released</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a
href='./groovy-2-4-16-windows'>Groovy 2.4.16 Windows Installer Released
(Community Artifact)</a></li><li><a hr [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.4.17 Released</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a
href='./groovy-2-4-16-released'>Groovy 2.4.16 Released</a></li><li><a
href='./groovy-2-4-16-windows'>Groovy 2. [...]
<p>Dear community,</p>
</div>
<div class="paragraph">
diff --git a/blog/groovy-2-5-0-released.html b/blog/groovy-2-5-0-released.html
index c0f8c47..4b94527 100644
--- a/blog/groovy-2-5-0-released.html
+++ b/blog/groovy-2-5-0-released.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.0 released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows
Installer Released (Community Artifact)</a></li><li><a href= [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.0 released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-2-released'>Groovy 2.5.2
released</a></li><li><a href='./groovy-2-5-5-windows'>Groovy 2.5.5 [...]
<p>Dear community,</p>
</div>
<div class="paragraph">
diff --git a/blog/groovy-2-5-1-released.html b/blog/groovy-2-5-1-released.html
index 7724bf6..52fce70 100644
--- a/blog/groovy-2-5-1-released.html
+++ b/blog/groovy-2-5-1-released.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.1 released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows
Installer Released (Community Artifact)</a></li><li><a href= [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.1 released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-2-released'>Groovy 2.5.2
released</a></li><li><a href='./groovy-2-5-5-windows'>Groovy 2.5.5 [...]
<p>Dear community,</p>
</div>
<div class="paragraph">
diff --git a/blog/groovy-2-5-2-released.html b/blog/groovy-2-5-2-released.html
index 746889f..2821c75 100644
--- a/blog/groovy-2-5-2-released.html
+++ b/blog/groovy-2-5-2-released.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.2 released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows
Installer Released (Community Artifact)</a></li><li><a href= [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.2 released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows
Installer Released (Community Artifact)</a></li><li><a href= [...]
<p>Dear community,</p>
</div>
<div class="paragraph">
diff --git a/blog/groovy-2-5-2-windows.html b/blog/groovy-2-5-2-windows.html
index a89efa6..00a1973 100644
--- a/blog/groovy-2-5-2-windows.html
+++ b/blog/groovy-2-5-2-windows.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.2 Windows Installer Released (Community
Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em
0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./groovy-2-5-7-and'>Groovy 2.5.7 and 3.0.0-beta-1 Windows Installe [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.2 Windows Installer Released (Community
Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em
0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./groovy-2-5-2-released'>Groovy 2.5.2 released</a></li><li><a href [...]
<p>The Windows installer for Groovy 2.5.2 (community artifact) is available
from:
<a
href="https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-2.5.2/"
class="bare">https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-2.5.2/</a></p>
</div></div></div></div></div><footer id='footer'>
diff --git a/blog/groovy-2-5-3-released.html b/blog/groovy-2-5-3-released.html
index d74b118..e9b2b2d 100644
--- a/blog/groovy-2-5-3-released.html
+++ b/blog/groovy-2-5-3-released.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.3 Released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-3-windows'>Groovy 2.5.3 Windows
Installer Released (Community Artifact)</a></li><li><a href= [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.3 Released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-3-windows'>Groovy 2.5.3 Windows
Installer Released (Community Artifact)</a></li><li><a href= [...]
<p>Dear community,</p>
</div>
<div class="paragraph">
diff --git a/blog/groovy-2-5-3-windows.html b/blog/groovy-2-5-3-windows.html
index b38d978..eed0828 100644
--- a/blog/groovy-2-5-3-windows.html
+++ b/blog/groovy-2-5-3-windows.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.3 Windows Installer Released (Community
Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em
0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (C [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.3 Windows Installer Released (Community
Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em
0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./groovy-2-5-5-windows'>Groovy 2.5.5 Windows Installer Released (C [...]
<p>The Windows installer for Groovy 2.5.3 (community artifact) is available
from:
<a
href="https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-2.5.3/"
class="bare">https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-2.5.3/</a></p>
</div></div></div></div></div><footer id='footer'>
diff --git a/blog/groovy-2-5-4-released.html b/blog/groovy-2-5-4-released.html
index f9c2ae6..1d7b85c 100644
--- a/blog/groovy-2-5-4-released.html
+++ b/blog/groovy-2-5-4-released.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.4 Released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-4-windows'>Groovy 2.5.4 Windows
Installer Released (Community Artifact)</a></li><li><a href= [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.4 Released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-4-windows'>Groovy 2.5.4 Windows
Installer Released (Community Artifact)</a></li><li><a href= [...]
<p>Dear community,</p>
</div>
<div class="paragraph">
diff --git a/blog/groovy-2-5-4-windows.html b/blog/groovy-2-5-4-windows.html
index abb1795..a0d3772 100644
--- a/blog/groovy-2-5-4-windows.html
+++ b/blog/groovy-2-5-4-windows.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.4 Windows Installer Released (Community
Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em
0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (C [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.4 Windows Installer Released (Community
Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em
0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./groovy-2-5-5-windows'>Groovy 2.5.5 Windows Installer Released (C [...]
<p>The Windows installer for Groovy 2.5.4 (community artifact) is available
from:
<a
href="https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-2.5.4/"
class="bare">https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-2.5.4/</a></p>
</div></div></div></div></div><footer id='footer'>
diff --git a/blog/groovy-2-5-5-released.html b/blog/groovy-2-5-5-released.html
index 75f217b..4649bb4 100644
--- a/blog/groovy-2-5-5-released.html
+++ b/blog/groovy-2-5-5-released.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.5 released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-5-windows'>Groovy 2.5.5 Windows
Installer Released (Community Artifact)</a></li><li><a href= [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.5 released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-5-windows'>Groovy 2.5.5 Windows
Installer Released (Community Artifact)</a></li><li><a href= [...]
<p>Dear community,</p>
</div>
<div class="paragraph">
diff --git a/blog/groovy-2-5-5-windows.html b/blog/groovy-2-5-5-windows.html
index bdfd0d6..62c9592 100644
--- a/blog/groovy-2-5-5-windows.html
+++ b/blog/groovy-2-5-5-windows.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.5 Windows Installer Released (Community
Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em
0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (C [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.5 Windows Installer Released (Community
Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em
0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./groovy-2-5-3-windows'>Groovy 2.5.3 Windows Installer Released (C [...]
<p>The Windows installer for Groovy 2.5.5 (community artifact) is available at:
<a
href="https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-2.5.5/"
class="bare">https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-2.5.5/</a></p>
</div></div></div></div></div><footer id='footer'>
diff --git a/blog/groovy-2-5-6-released.html b/blog/groovy-2-5-6-released.html
index 2cdc8a8..d8be131 100644
--- a/blog/groovy-2-5-6-released.html
+++ b/blog/groovy-2-5-6-released.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.6 Released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows
Installer Released (Community Artifact)</a></li><li><a href= [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.6 Released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-2-released'>Groovy 2.5.2
released</a></li><li><a href='./groovy-2-5-5-windows'>Groovy 2.5.5 [...]
<p>Dear community,</p>
</div>
<div class="paragraph">
diff --git a/blog/groovy-2-5-7-and.html b/blog/groovy-2-5-7-and.html
index 4eff973..5cfe219 100644
--- a/blog/groovy-2-5-7-and.html
+++ b/blog/groovy-2-5-7-and.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.7 and 3.0.0-beta-1 Windows Installers Released
(Community Artifacts)</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows In
[...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.7 and 3.0.0-beta-1 Windows Installers Released
(Community Artifacts)</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-5-windows'>Groovy 2.5.5 Windows In
[...]
<p>The Windows installer for Groovy 2.5.7 (Community Artifact) is now
available:
<a
href="https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-2.5.7/"
class="bare">https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-2.5.7/</a></p>
</div>
diff --git a/blog/groovy-2-5-7-released.html b/blog/groovy-2-5-7-released.html
index c205883..f4de7a4 100644
--- a/blog/groovy-2-5-7-released.html
+++ b/blog/groovy-2-5-7-released.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.7 Released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-7-and'>Groovy 2.5.7 and 3.0.0-beta-1
Windows Installers Released (Community Artifacts)</a></ [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 2.5.7 Released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-7-and'>Groovy 2.5.7 and 3.0.0-beta-1
Windows Installers Released (Community Artifacts)</a></ [...]
<p>Dear community,</p>
</div>
<div class="paragraph">
diff --git a/blog/groovy-2-5-clibuilder-renewal.html
b/blog/groovy-2-5-clibuilder-renewal.html
index 686abe8..1dadc98 100644
--- a/blog/groovy-2-5-clibuilder-renewal.html
+++ b/blog/groovy-2-5-clibuilder-renewal.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Apache Groovy 2.5 CliBuilder Renewal</a></li><li><a
href='#_the_code_groovy_util_clibuilder_code_class_is_deprecated'
class='anchor-link'>The <code>groovy.util.CliBuilder</code> Class is
Deprecated</a></li><li><a href='#_typed_options' class='anchor-link'>Typed
Options</a> [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Apache Groovy 2.5 CliBuilder Renewal</a></li><li><a
href='#_the_code_groovy_util_clibuilder_code_class_is_deprecated'
class='anchor-link'>The <code>groovy.util.CliBuilder</code> Class is
Deprecated</a></li><li><a href='#_typed_options' class='anchor-link'>Typed
Options</a> [...]
<div class="sectionbody">
<div class="paragraph">
<p>The <code>CliBuilder</code> class for quickly and concisely building
diff --git a/blog/groovy-3-0-0-alpha.html b/blog/groovy-3-0-0-alpha.html
index b9a78e0..4058595 100644
--- a/blog/groovy-3-0-0-alpha.html
+++ b/blog/groovy-3-0-0-alpha.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 3.0.0-alpha-4 Released</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a href='./groovy-3-0-0-alpha1'>Groovy
3.0.0-alpha-4 Windows Installer Released (Community Artifact)</a></ [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 3.0.0-alpha-4 Released</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a href='./groovy-3-0-0-alpha1'>Groovy
3.0.0-alpha-4 Windows Installer Released (Community Artifact)</a></ [...]
<p>Dear community,</p>
</div>
<div class="paragraph">
diff --git a/blog/groovy-3-0-0-alpha1.html b/blog/groovy-3-0-0-alpha1.html
index e4ad4a4..faea2f0 100644
--- a/blog/groovy-3-0-0-alpha1.html
+++ b/blog/groovy-3-0-0-alpha1.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 3.0.0-alpha-4 Windows Installer Released (Community
Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em
0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./groovy-3-0-0-alpha'>Groovy 3.0.0-alpha-4 Released</a></l [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 3.0.0-alpha-4 Windows Installer Released (Community
Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em
0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./groovy-3-0-0-alpha'>Groovy 3.0.0-alpha-4 Released</a></l [...]
<p>The Windows installer for Groovy 3.0.0-alpha-4 (Community Artifact) is
available from the usual place:
<a
href="https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-3.0.0-alpha-4/"
class="bare">https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-3.0.0-alpha-4/</a>
Note this installer doesn’t include Spock since there isn’t a
Spock release compatible with Groovy 3.0.</p>
diff --git a/blog/groovy-3-0-0-beta.html b/blog/groovy-3-0-0-beta.html
index ac2569f..8b1ebf1 100644
--- a/blog/groovy-3-0-0-beta.html
+++ b/blog/groovy-3-0-0-beta.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 3.0.0-beta-1 Released</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a href='./groovy-3-0-0-alpha'>Groovy
3.0.0-alpha-4 Released</a></li><li><a href='./groovy-3-0-0-beta1'>Gro [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 3.0.0-beta-1 Released</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a href='./groovy-3-0-0-beta1'>Groovy
3.0.0-beta-2 Released</a></li><li><a href='./groovy-3-0-0-alpha1'>Gro [...]
<p>Dear community,</p>
</div>
<div class="paragraph">
diff --git a/blog/groovy-3-0-0-beta1.html b/blog/groovy-3-0-0-beta1.html
index 2789b99..036fa52 100644
--- a/blog/groovy-3-0-0-beta1.html
+++ b/blog/groovy-3-0-0-beta1.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 3.0.0-beta-2 Released</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a href='./groovy-3-0-0-beta2'>Groovy
3.0.0-beta-2 Windows Installer Released (Community Release)</a></li>< [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 3.0.0-beta-2 Released</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a href='./groovy-3-0-0-beta2'>Groovy
3.0.0-beta-2 Windows Installer Released (Community Release)</a></li>< [...]
<p>Dear community,</p>
</div>
<div class="paragraph">
diff --git a/blog/groovy-3-0-0-beta2.html b/blog/groovy-3-0-0-beta2.html
index 836fd6f..7ed071b 100644
--- a/blog/groovy-3-0-0-beta2.html
+++ b/blog/groovy-3-0-0-beta2.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 3.0.0-beta-2 Windows Installer Released (Community
Release)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em
0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./groovy-3-0-0-beta1'>Groovy 3.0.0-beta-2 Released</a></li>< [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 3.0.0-beta-2 Windows Installer Released (Community
Release)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em
0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./groovy-3-0-0-beta1'>Groovy 3.0.0-beta-2 Released</a></li>< [...]
<p>The Windows installer for Groovy 3.0.0-beta-2 is now available:
<a
href="https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-3.0.0-beta-2/"
class="bare">https://groovy.jfrog.io/artifactory/dist-release-local/groovy-windows-installer/groovy-3.0.0-beta-2/</a></p>
</div>
diff --git a/blog/groovy-4-0-3-released.html b/blog/groovy-4-0-3-released.html
index 6bbcc44..97b181d 100644
--- a/blog/groovy-4-0-3-released.html
+++ b/blog/groovy-4-0-3-released.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 4.0.3 Released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows
Installer Released (Community Artifact)</a></li><li><a href= [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy 4.0.3 Released</a></li></ul><br/><ul class='nav-sidebar'><li
style='padding: 0.35em 0.625em; background-color: #eee'><span>Related
posts</span></li><li><a href='./groovy-2-5-2-released'>Groovy 2.5.2
released</a></li><li><a href='./gmavenplus-1-6-2-released'>GMavenPl [...]
<p>Dear community,</p>
</div>
<div class="paragraph">
diff --git a/blog/groovy-ai.html b/blog/groovy-ai.html
index 184bc20..84e48c8 100644
--- a/blog/groovy-ai.html
+++ b/blog/groovy-ai.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Exploring AI with Groovy™</a></li><li><a
href='#_introduction' class='anchor-link'>Introduction</a></li><li><a
href='#_using_ollama4j' class='anchor-link'>Using Ollama4j</a></li><li><a
href='#_using_langchain4j' class='anchor-link'>Using LangChain4j</a></li><li><a
hr [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Exploring AI with Groovy™</a></li><li><a
href='#_introduction' class='anchor-link'>Introduction</a></li><li><a
href='#_using_ollama4j' class='anchor-link'>Using Ollama4j</a></li><li><a
href='#_using_langchain4j' class='anchor-link'>Using LangChain4j</a></li><li><a
hr [...]
<a href="https://github.com/paulk-asert/" target="_blank" rel="noopener
noreferrer"><img style="border-radius:50%;height:48px;width:auto"
src="img/paulk-asert.png" alt="Paul King"></a>
<div style="display:grid;align-items:center;margin:0.1ex;padding:0ex">
<div><a href="https://github.com/paulk-asert/" target="_blank" rel="noopener
noreferrer"><span>Paul King</span></a></div>
diff --git a/blog/groovy-dates-and-times-cheat.html
b/blog/groovy-dates-and-times-cheat.html
index 3ffe93f..b469d9a 100644
--- a/blog/groovy-dates-and-times-cheat.html
+++ b/blog/groovy-dates-and-times-cheat.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™ Dates And Times Cheat Sheet</a></li><li><a
href='#_representing_the_current_datetime' class='anchor-link'>Representing the
current date/time</a></li><li><a href='#_processing_times'
class='anchor-link'>Processing times</a></li><li><a href='#_processing_dates'
[...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™ Dates And Times Cheat Sheet</a></li><li><a
href='#_representing_the_current_datetime' class='anchor-link'>Representing the
current date/time</a></li><li><a href='#_processing_times'
class='anchor-link'>Processing times</a></li><li><a href='#_processing_dates'
[...]
<a href="https://github.com/paulk-asert/" target="_blank" rel="noopener
noreferrer"><img style="border-radius:50%;height:48px;width:auto"
src="img/paulk-asert.png" alt="Paul King"></a>
<div style="display:grid;align-items:center;margin:0.1ex;padding:0ex">
<div><a href="https://github.com/paulk-asert/" target="_blank" rel="noopener
noreferrer"><span>Paul King</span></a></div>
diff --git a/blog/groovy-dauphine.html b/blog/groovy-dauphine.html
index b9e9f97..95b91d4 100644
--- a/blog/groovy-dauphine.html
+++ b/blog/groovy-dauphine.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Processing Results for the Critérium du Dauphiné</a></li><li><a
href='#_results_file' class='anchor-link'>Results file</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a href='./readin [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Processing Results for the Critérium du Dauphiné</a></li><li><a
href='#_results_file' class='anchor-link'>Results file</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a href='./readin [...]
<div class="sectionbody">
<div class="paragraph">
<p>The 2023 <a href="https://www.criterium-du-dauphine.fr/en/">Critérium du
Dauphiné</a>
diff --git a/blog/groovy-haiku-processing.html
b/blog/groovy-haiku-processing.html
index 85405c9..cb84ddd 100644
--- a/blog/groovy-haiku-processing.html
+++ b/blog/groovy-haiku-processing.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™ Haiku processing</a></li><li><a
href='#_example_1_finding_the_distinct_letters' class='anchor-link'>Example 1:
Finding the distinct letters</a></li><li><a
href='#_example_2_splitting_letters_into_unique_and_duplicate_partitions'
class='anchor-link'>Example 2: [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™ Haiku processing</a></li><li><a
href='#_example_1_finding_the_distinct_letters' class='anchor-link'>Example 1:
Finding the distinct letters</a></li><li><a
href='#_example_2_splitting_letters_into_unique_and_duplicate_partitions'
class='anchor-link'>Example 2: [...]
<div class="sectionbody">
<div class="paragraph">
<p>This blog looks at some Groovy solutions for the examples in the
diff --git a/blog/groovy-list-processing-cheat-sheet.html
b/blog/groovy-list-processing-cheat-sheet.html
index 663cfcc..a620a9b 100644
--- a/blog/groovy-list-processing-cheat-sheet.html
+++ b/blog/groovy-list-processing-cheat-sheet.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™ List Processing Cheat Sheet</a></li><li><a
href='#_declaring_lists' class='anchor-link'>Declaring lists</a></li><li><a
href='#_list_elements_and_properties' class='anchor-link'>List elements and
properties</a></li><li><a href='#_modifying_mutable_lists' class [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™ List Processing Cheat Sheet</a></li><li><a
href='#_declaring_lists' class='anchor-link'>Declaring lists</a></li><li><a
href='#_list_elements_and_properties' class='anchor-link'>List elements and
properties</a></li><li><a href='#_modifying_mutable_lists' class [...]
<h2 id="_declaring_lists">Declaring lists</h2>
<div class="sectionbody">
<div class="paragraph">
diff --git a/blog/groovy-lucene.html b/blog/groovy-lucene.html
index ae9d789..cc9218c 100644
--- a/blog/groovy-lucene.html
+++ b/blog/groovy-lucene.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Searching with Lucene</a></li><li><a
href='#_a_regular_expression_for_project_names' class='anchor-link'>A regular
expression for project names</a></li><li><a
href='#_collecting_project_name_statistics_using_regex_matching'
class='anchor-link'>Collecting project name stati [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Searching with Lucene</a></li><li><a
href='#_a_regular_expression_for_project_names' class='anchor-link'>A regular
expression for project names</a></li><li><a
href='#_collecting_project_name_statistics_using_regex_matching'
class='anchor-link'>Collecting project name stati [...]
<a href="https://github.com/paulk-asert/" target="_blank" rel="noopener
noreferrer"><img style="border-radius:50%;height:48px;width:auto"
src="img/paulk-asert.png" alt="Paul King"></a>
<div style="display:grid;align-items:center;margin:0.1ex;padding:0ex">
<div><a href="https://github.com/paulk-asert/" target="_blank" rel="noopener
noreferrer"><span>Paul King</span></a></div>
diff --git a/blog/groovy-null-processing.html b/blog/groovy-null-processing.html
index 759bdd2..5a18de8 100644
--- a/blog/groovy-null-processing.html
+++ b/blog/groovy-null-processing.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™ Processing Nulls In Lists</a></li><li><a
href='#_libraries_covered' class='anchor-link'>Libraries covered</a></li><li><a
href='#_mutating_a_list_to_remove_its_nulls' class='anchor-link'>Mutating a
list to remove its nulls</a></li><li><a href='#_producing_a_ne [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™ Processing Nulls In Lists</a></li><li><a
href='#_libraries_covered' class='anchor-link'>Libraries covered</a></li><li><a
href='#_mutating_a_list_to_remove_its_nulls' class='anchor-link'>Mutating a
list to remove its nulls</a></li><li><a href='#_producing_a_ne [...]
<div class="sectionbody">
<div class="paragraph">
<p>This <a
href="https://www.programmergirl.com/java-remove-nulls-from-list/">article</a>
by <a href="https://www.programmergirl.com/about-me/">Shubhra Srivastava</a>
diff --git a/blog/groovy-record-performance.html
b/blog/groovy-record-performance.html
index eb9dd1a..2462d55 100644
--- a/blog/groovy-record-performance.html
+++ b/blog/groovy-record-performance.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™ Record Performance</a></li><li><a href='#_our_domain'
class='anchor-link'>Our domain</a></li><li><a href='#_performance_of_hashcode'
class='anchor-link'>Performance of <code>hashCode</code></a></li><li><a
href='#_performance_of_equals' class='anchor-link'>Per [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™ Record Performance</a></li><li><a href='#_our_domain'
class='anchor-link'>Our domain</a></li><li><a href='#_performance_of_hashcode'
class='anchor-link'>Performance of <code>hashCode</code></a></li><li><a
href='#_performance_of_equals' class='anchor-link'>Per [...]
<div class="sectionbody">
<div class="paragraph">
<p>We highly recommend the excellent
diff --git a/blog/groovy-records.html b/blog/groovy-records.html
index 37fd15a..3581b93 100644
--- a/blog/groovy-records.html
+++ b/blog/groovy-records.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™ Records</a></li><li><a href='#_introduction'
class='anchor-link'>Introduction</a></li><li><a href='#_optional_enhancements'
class='anchor-link'>Optional enhancements</a></li><li><a
href='#_internal_details' class='anchor-link'>Internal details</a></li><li><a
[...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™ Records</a></li><li><a href='#_introduction'
class='anchor-link'>Introduction</a></li><li><a href='#_optional_enhancements'
class='anchor-link'>Optional enhancements</a></li><li><a
href='#_internal_details' class='anchor-link'>Internal details</a></li><li><a
[...]
<div class="sectionbody">
<div class="paragraph">
<p>A common scenario when programming is the need to group together a bunch
diff --git a/blog/groovy-release-train-4-0.html
b/blog/groovy-release-train-4-0.html
index c3704d2..8d12fd1 100644
--- a/blog/groovy-release-train-4-0.html
+++ b/blog/groovy-release-train-4-0.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy release train: 4.0.4, 3.0.12, 2.5.18</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a
href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released
(Community Artifact [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy release train: 4.0.4, 3.0.12, 2.5.18</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a
href='./groovy-2-5-2-released'>Groovy 2.5.2 released</a></li><li><a
href='./gmavenplus-1- [...]
<p>It’s been a productive time for the Apache Groovy project recently.
We recently released versions 4.0.4, 3.0.12 and 2.5.18 with 42, 21 and 15 fixes
and improvements respectively. Two quick highlights for the 4.0.4 release
before getting into more details about the release.</p>
</div>
<div class="paragraph">
diff --git a/blog/groovy-sequenced-collections.html
b/blog/groovy-sequenced-collections.html
index e026205..cbbafeb 100644
--- a/blog/groovy-sequenced-collections.html
+++ b/blog/groovy-sequenced-collections.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™ and Sequenced Collections (JEP-431)</a></li><li><a
href='#_sequenced_collections_summary' class='anchor-link'>Sequenced
Collections Summary</a></li><li><a
href='#_accessing_the_first_and_last_element' class='anchor-link'>Accessing the
first and last element</ [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™ and Sequenced Collections (JEP-431)</a></li><li><a
href='#_sequenced_collections_summary' class='anchor-link'>Sequenced
Collections Summary</a></li><li><a
href='#_accessing_the_first_and_last_element' class='anchor-link'>Accessing the
first and last element</ [...]
<div class="sectionbody">
<div class="paragraph">
<p>An exciting feature coming in JDK21 is
diff --git a/blog/groovy-text-similarity.html b/blog/groovy-text-similarity.html
index 6cddc50..2f32b6f 100644
--- a/blog/groovy-text-similarity.html
+++ b/blog/groovy-text-similarity.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™ Text Similarity</a></li><li><a href='#_introduction'
class='anchor-link'>Introduction</a></li><li><a href='#_background'
class='anchor-link'>Background</a></li><li><a href='#_simple_string_metrics'
class='anchor-link'>Simple String Metrics</a></li><li><a href [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Groovy™ Text Similarity</a></li><li><a href='#_introduction'
class='anchor-link'>Introduction</a></li><li><a href='#_background'
class='anchor-link'>Background</a></li><li><a href='#_simple_string_metrics'
class='anchor-link'>Simple String Metrics</a></li><li><a href [...]
<a href="https://github.com/paulk-asert/" target="_blank" rel="noopener
noreferrer"><img style="border-radius:50%;height:48px;width:auto"
src="img/paulk-asert.png" alt="Paul King"></a>
<div style="display:grid;align-items:center;margin:0.1ex;padding:0ex">
<div><a href="https://github.com/paulk-asert/" target="_blank" rel="noopener
noreferrer"><span>Paul King</span></a></div>
diff --git a/blog/helloworldemoji.html b/blog/helloworldemoji.html
index 97d765a..f787eed 100644
--- a/blog/helloworldemoji.html
+++ b/blog/helloworldemoji.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Hello World with Emojis</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a
href='./deep-learning-and-eclipse-collections'>Deep Learning and Eclipse
Collections</a></li><li><a href='./z [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Hello World with Emojis</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a
href='./set-operations-with-groovy'>Set Operators with
Groovy™</a></li><li><a href='./zipping-collectio [...]
<p>In a <a
href="https://groovy.apache.org/blog/jvm-hello-world-with-groovy">previous blog
post</a>
we took an in-depth look at how to write a "hello world" class at the bytecode
level
using various libraries.</p>
diff --git a/blog/index.html b/blog/index.html
index 5fac38d..692faae 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3' id='blog-index'><ul
class='nav-sidebar list'><li class='active'><a
href='/blog/'>Blogs</a></li><li><a href='groovy-ai'>Exploring AI with
Groovy™</a></li><li><a href='wayang-tensorflow'>Using TensorFlow from
Apache Wayang</a></li><li><a href='using-groovy-with-apache-wayang'>Using
Groovy™ with Apache Wayang and Apache Spark™</a></li><li><a
href='ex [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3' id='blog-index'><ul
class='nav-sidebar list'><li class='active'><a
href='/blog/'>Blogs</a></li><li><a
href='embabel-agentic-patterns'>Groovy™, Embabel, and Agentic Design
Patterns</a></li><li><a href='groovy-ai'>Exploring AI with
Groovy™</a></li><li><a href='wayang-tensorflow'>Using TensorFlow from
Apache Wayang</a></li><li><a href='using-groovy-with-ap [...]
<div class='row'>
<div class='colset-3-footer'>
<div class='col-1'>
@@ -103,7 +103,7 @@
colors: am5.ColorSet.new(root, {})
}));
wc.data.setAll([
- { category: "centroids", value: 1 }, { category: "data
science", value: 7 }, { category: "groovy", value: 86 }, { category: "kmeans",
value: 4 }, { category: "records", value: 7 }, { category: "whisky", value: 3
}, { category: "whiskey", value: 3 }, { category: "wayang", value: 2 }, {
category: "apache spark", value: 1 }, { category: "apache wayang", value: 2 },
{ category: "release", value: 25 }, { category: "clibuilder", value: 1 }, {
category: "picocli", value: 1 }, { [...]
+ { category: "groovy", value: 87 }, { category: "asf", value: 2
}, { category: "apachecon", value: 3 }, { category: "communityovercode", value:
2 }, { category: "natural language processing", value: 2 }, { category: "nlp",
value: 1 }, { category: "nlpcraft", value: 1 }, { category: "combinations",
value: 1 }, { category: "permutations", value: 1 }, { category: "testing",
value: 2 }, { category: "junit", value: 2 }, { category: "spock", value: 2 }, {
category: "jqwik", valu [...]
]);
wc.labels.template.setAll({
paddingTop: 5,
diff --git a/blog/lego-bricks-with-groovy.html
b/blog/lego-bricks-with-groovy.html
index d3aecff..0b670db 100644
--- a/blog/lego-bricks-with-groovy.html
+++ b/blog/lego-bricks-with-groovy.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Lego Bricks with Groovy™</a></li><li><a
href='#_basic_collection_processing' class='anchor-link'>Basic Collection
Processing</a></li><li><a href='#_our_example_domain' class='anchor-link'>Our
example domain</a></li><li><a href='#_some_bricks_to_play_with' class='anch
[...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Lego Bricks with Groovy™</a></li><li><a
href='#_basic_collection_processing' class='anchor-link'>Basic Collection
Processing</a></li><li><a href='#_our_example_domain' class='anchor-link'>Our
example domain</a></li><li><a href='#_some_bricks_to_play_with' class='anch
[...]
<div class="sectionbody">
<div class="paragraph">
<p><a href="https://twitter.com/TheDonRaab">Donald Raab</a> has continued has
interesting
diff --git a/blog/matrix-calculations-with-groovy-apache.html
b/blog/matrix-calculations-with-groovy-apache.html
index 65c28f4..cba54c4 100644
--- a/blog/matrix-calculations-with-groovy-apache.html
+++ b/blog/matrix-calculations-with-groovy-apache.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Matrix calculations with Groovy™, Apache Commons Math,
ojAlgo, Nd4j and EJML</a></li><li><a href='#_fibonacci'
class='anchor-link'>Fibonacci</a></li><li><a href='#_leslie_matrices'
class='anchor-link'>Leslie Matrices</a></li><li><a
href='#_encryption_with_matrices' c [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Matrix calculations with Groovy™, Apache Commons Math,
ojAlgo, Nd4j and EJML</a></li><li><a href='#_fibonacci'
class='anchor-link'>Fibonacci</a></li><li><a href='#_leslie_matrices'
class='anchor-link'>Leslie Matrices</a></li><li><a
href='#_encryption_with_matrices' c [...]
<div class="sectionbody">
<div class="paragraph">
<p>This blogs looks at performing matrix calculations with Groovy
diff --git a/blog/netbeans.html b/blog/netbeans.html
index 3eedbba..2d7b335 100644
--- a/blog/netbeans.html
+++ b/blog/netbeans.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Using Apache NetBeans with Apache
Groovy™</a></li></ul><br/><ul class='nav-sidebar'><li style='padding:
0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./groovy-null-processing'>Groovy™ Processing Nulls In
Lists</a></li><li>< [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Using Apache NetBeans with Apache
Groovy™</a></li></ul><br/><ul class='nav-sidebar'><li style='padding:
0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./parsing-json-with-groovy'>Parsing JSON with
Groovy™</a></li><li><a href [...]
<a href="https://github.com/paulk-asert/" target="_blank" rel="noopener
noreferrer"><img style="border-radius:50%;height:48px;width:auto"
src="img/paulk-asert.png" alt="Paul King"></a>
<div style="display:grid;align-items:center;margin:0.1ex;padding:0ex">
<div><a href="https://github.com/paulk-asert/" target="_blank" rel="noopener
noreferrer"><span>Paul King</span></a></div>
diff --git a/blog/parsing-json-with-groovy.html
b/blog/parsing-json-with-groovy.html
index 7f746c8..1c0c437 100644
--- a/blog/parsing-json-with-groovy.html
+++ b/blog/parsing-json-with-groovy.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Parsing JSON with Groovy™</a></li><li><a
href='#_batteries_included_experience' class='anchor-link'>Batteries included
experience</a></li><li><a href='#_gradle'
class='anchor-link'>Gradle</a></li><li><a href='#_maven'
class='anchor-link'>Maven</a></li><li><a href='#_ [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Parsing JSON with Groovy™</a></li><li><a
href='#_batteries_included_experience' class='anchor-link'>Batteries included
experience</a></li><li><a href='#_gradle'
class='anchor-link'>Gradle</a></li><li><a href='#_maven'
class='anchor-link'>Maven</a></li><li><a href='#_ [...]
<div class="sectionbody">
<div class="paragraph">
<p><span class="image right"><img src="img/json_logo.gif" alt="json logo"
width="120"></span>
diff --git a/blog/reading-and-writing-csv-files.html
b/blog/reading-and-writing-csv-files.html
index 8501237..d0fd65c 100644
--- a/blog/reading-and-writing-csv-files.html
+++ b/blog/reading-and-writing-csv-files.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Reading and Writing CSV files with Groovy™</a></li><li><a
href='#_introduction' class='anchor-link'>Introduction</a></li><li><a
href='#_commons_csv' class='anchor-link'>Commons CSV</a></li><li><a
href='#_opencsv' class='anchor-link'>OpenCSV</a></li><li><a href='#_jac [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Reading and Writing CSV files with Groovy™</a></li><li><a
href='#_introduction' class='anchor-link'>Introduction</a></li><li><a
href='#_commons_csv' class='anchor-link'>Commons CSV</a></li><li><a
href='#_opencsv' class='anchor-link'>OpenCSV</a></li><li><a href='#_jac [...]
<h2 id="_introduction">Introduction</h2>
<div class="sectionbody">
<div class="paragraph">
diff --git a/blog/seasons-greetings-emoji.html
b/blog/seasons-greetings-emoji.html
index b47c051..d6dead4 100644
--- a/blog/seasons-greetings-emoji.html
+++ b/blog/seasons-greetings-emoji.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Season’s Greetings with Emojis</a></li><li><a
href='#_jdk_21_new_features' class='anchor-link'>JDK 21 New
Features</a></li><li><a href='#_playing_with_emojis_with_groovy'
class='anchor-link'>Playing with Emojis with Groovy</a></li><li><a
href='#_more_information' cla [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Season’s Greetings with Emojis</a></li><li><a
href='#_jdk_21_new_features' class='anchor-link'>JDK 21 New
Features</a></li><li><a href='#_playing_with_emojis_with_groovy'
class='anchor-link'>Playing with Emojis with Groovy</a></li><li><a
href='#_more_information' cla [...]
<div class="sectionbody">
<div class="paragraph">
<p>In a <a href="https://groovy.apache.org/blog/helloworldemoji">previous blog
post</a>
diff --git a/blog/set-operations-with-groovy.html
b/blog/set-operations-with-groovy.html
index e5f8f59..70515f5 100644
--- a/blog/set-operations-with-groovy.html
+++ b/blog/set-operations-with-groovy.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Set Operators with Groovy™</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a
href='./deep-learning-and-eclipse-collections'>Deep Learning and Eclipse
Collections</a></li><li><a [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Set Operators with Groovy™</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a
href='./zipping-collections-with-groovy'>Zipping Collections with
Groovy™</a></li><li><a href= [...]
<p><a href="https://twitter.com/TheDonRaab">Donald Raab</a> posted <a
href="https://donraab.medium.com/comparing-set-operations-between-java-and-eclipse-collections-92cf1df28d3b">an
article</a> about set operators using Java collections and <a
href="https://github.com/eclipse/eclipse-collections">Eclipse Collections</a>.
<a
href="https://donraab.medium.com/comparing-set-operations-between-java-and-eclipse-collections-92cf1df28d3b">That
post</a> focuses
on the <em>union</em>, <em>intersection</em> and <em>difference</em>
operators. We’ll add in
<em>symmetric difference</em> since Groovy supports operator overloading for
that
diff --git a/blog/using-groovy-with-apache-wayang.html
b/blog/using-groovy-with-apache-wayang.html
index c6aa7d8..365e030 100644
--- a/blog/using-groovy-with-apache-wayang.html
+++ b/blog/using-groovy-with-apache-wayang.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Using Groovy™ with Apache Wayang and Apache
Spark™</a></li><li><a href='#_whiskey_clustering'
class='anchor-link'>Whiskey Clustering</a></li><li><a
href='#_implementing_a_distributed_kmeans' class='anchor-link'>Implementing a
distributed KMeans</a></li><li><a h [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Using Groovy™ with Apache Wayang and Apache
Spark™</a></li><li><a href='#_whiskey_clustering'
class='anchor-link'>Whiskey Clustering</a></li><li><a
href='#_implementing_a_distributed_kmeans' class='anchor-link'>Implementing a
distributed KMeans</a></li><li><a h [...]
<a href="https://github.com/paulk-asert/" target="_blank" rel="noopener
noreferrer"><img style="border-radius:50%;height:48px;width:auto"
src="img/paulk-asert.png" alt="Paul King"></a>
<div style="display:grid;align-items:center;margin:0.1ex;padding:0ex">
<div><a href="https://github.com/paulk-asert/" target="_blank" rel="noopener
noreferrer"><span>Paul King</span></a></div>
diff --git a/blog/wayang-tensorflow.html b/blog/wayang-tensorflow.html
index 3bc74a9..c5f0386 100644
--- a/blog/wayang-tensorflow.html
+++ b/blog/wayang-tensorflow.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Using TensorFlow from Apache Wayang</a></li><li><a
href='#_more_information' class='anchor-link'>More
Information</a></li></ul><br/><ul class='nav-sidebar'><li style='padding:
0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./using-groov [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Using TensorFlow from Apache Wayang</a></li><li><a
href='#_more_information' class='anchor-link'>More
Information</a></li></ul><br/><ul class='nav-sidebar'><li style='padding:
0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a
href='./using-groov [...]
<a href="https://github.com/paulk-asert/" target="_blank" rel="noopener
noreferrer"><img style="border-radius:50%;height:48px;width:auto"
src="img/paulk-asert.png" alt="Paul King"></a>
<div style="display:grid;align-items:center;margin:0.1ex;padding:0ex">
<div><a href="https://github.com/paulk-asert/" target="_blank" rel="noopener
noreferrer"><span>Paul King</span></a></div>
diff --git a/blog/whiskey-clustering-with-groovy-and.html
b/blog/whiskey-clustering-with-groovy-and.html
index 6a71121..3503c19 100644
--- a/blog/whiskey-clustering-with-groovy-and.html
+++ b/blog/whiskey-clustering-with-groovy-and.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Whiskey Clustering with Groovy™ and Apache
Ignite</a></li><li><a href='#_whiskey_clustering' class='anchor-link'>Whiskey
Clustering</a></li><li><a href='#_apache_ignite' class='anchor-link'>Apache
Ignite</a></li><li><a href='#_implementation_details' class='anchor-li [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Whiskey Clustering with Groovy™ and Apache
Ignite</a></li><li><a href='#_whiskey_clustering' class='anchor-link'>Whiskey
Clustering</a></li><li><a href='#_apache_ignite' class='anchor-link'>Apache
Ignite</a></li><li><a href='#_implementation_details' class='anchor-li [...]
<div class="sectionbody">
<div class="paragraph">
<p>In a previous <a
href="https://groovy.apache.org/blog/using-groovy-with-apache-wayang">blog
post</a>,
diff --git a/blog/wordle-checker.html b/blog/wordle-checker.html
index 3a5aa84..256d81f 100644
--- a/blog/wordle-checker.html
+++ b/blog/wordle-checker.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Checking Wordle with Groovy™</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a
href='./groovy-null-processing'>Groovy™ Processing Nulls In
Lists</a></li><li><a href='./zip [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Checking Wordle with Groovy™</a></li></ul><br/><ul
class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color:
#eee'><span>Related posts</span></li><li><a
href='./zipping-collections-with-groovy'>Zipping Collections with
Groovy™</a></li><li><a hre [...]
<p>This <a
href="https://donraab.medium.com/comparing-my-smalltalk-and-eclipse-collections-wordle-kata-solutions-4058ac7d8ca0">article</a>
by <a href="https://twitter.com/TheDonRaab">Donald Raab</a>
looks at writing a Wordle checker in Smalltalk and Java using <a
href="https://github.com/eclipse/eclipse-collections">Eclipse Collections</a>.
Let’s look at doing the same in Groovy.
We could easily use Eclipse Collections with Groovy
diff --git a/blog/zipping-collections-with-groovy.html
b/blog/zipping-collections-with-groovy.html
index 6c3a9b2..1d18bac 100644
--- a/blog/zipping-collections-with-groovy.html
+++ b/blog/zipping-collections-with-groovy.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Zipping Collections with Groovy™</a></li><li><a
href='#_what_is_zipping' class='anchor-link'>What is zipping?</a></li><li><a
href='#_groovy' class='anchor-link'>Groovy</a></li><li><a
href='#_eclipse_collections' class='anchor-link'>Eclipse
Collections</a></li><li><a [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Zipping Collections with Groovy™</a></li><li><a
href='#_what_is_zipping' class='anchor-link'>What is zipping?</a></li><li><a
href='#_groovy' class='anchor-link'>Groovy</a></li><li><a
href='#_eclipse_collections' class='anchor-link'>Eclipse
Collections</a></li><li><a [...]
<h2 id="_what_is_zipping">What is zipping?</h2>
<div class="sectionbody">
<div class="paragraph">