Skip to main content

Greenville Java Users Group

Previous Meetings

Last modified: 2014-11-26


Previous Meetings

November 13, 2014: IP Basics

Wyche Lawyers is currently taking aim at patent trolls. Wallace K. Lightsey and Terrell Mills are IP lawyers with the Wyche Lawyers group. They discussed the differences between the various areas of "IP" law and took questions on topics of interest to the audience.

slides (PDF)


October 16, 2014: Gavin King, Stéphane Épardaud present Ceylon

Gavin King (creator of Ceylon and Hibernate) and Stéphane Épardaud (core Ceylon committer) will present on Ceylon, the new programming language they’re working on. They will explain what Ceylon is and why you will want to use it for your next production applications.

Gavin's slides (PDF)


September 2014 at UNC Asheville with the Asheville Coders League

Alan Dipert presents Hoplon

Details on the Asheville Coders League Meetup site


August 2014 at Find Great People

Brian C. Dean, Ph.D. presents, "Brains and Computers"

Brian will share his work on research projects that help doctors better understand neurological disorders like epilepsy and autism.  Their work uses machine learning and other techniques to analyze large EEG (brain wave) data sets and make network models of brains.  They are also working on ways for medical experts to view and annotate this data on the web.

Brian has a Ph.D. in computer science from MIT.  His research focuses on algorithms, he promotes high-school CS education, and he directs the Applied Algorithms Group in the School of Computing at Clemson.  His research is currently supported by an NSF CAREER award.


June 2014 at Find Great People

Nathan Williams presents, "A Java User's Perspective on AngularJS, ES6, Traceur, underscore/lodash, NodeJS"

  • Application structuring in AngularJS
  • ES6 + Traceur + underscore/lodash = FP awesomesauce
  • NodeJS build processes (Grunt/Gulp)


April 2014 at Find Great People

John Yeary presents, "Clickjacking and XSS"


March 2014 at Find Great People

Glen Peterson presents, "Java 8 Lambdas and Functional Data Transformations"

This talk will discuss lambdas in Java 8 in general, my side-effect-free transformers, and the new Java 8 interface default methods (and static methods) and what they mean for API design.

The side effect free data transformation project can be found on GitHub as fp4java7.


January 2014 at Find Great People

John and Sean Yeary present, "Chromebooks, Java, Cloud, and Minecraft... Oh My!"

This presentation will focus on using a low cost Chromebook for kids to do amazing things. We will demonstrate how to install crouton, Ubuntu Precise, Java 7, and Minecraft on a Chromebook. A discussion and demonstration of the installation of Openshift CL and Google Cloud SDK tools will be performed. A demonstration of using Openshift to run a private Minecraft server will be shown. Finally, we will close out the session on using Google Compute Engine as the ultimate Minecraft server will be demonstrated. A Q&A will be provided at the end to ask our local Minecraft “expert” any questions you have about Minecraft.

Pizza and Drinks by Find Great People!


Slides from this meeting are published in the Downloads section.

I would recommend looking at the models that have Intel processors and 4GB of RAM. All of the software I showed will work on Intel with 4GB. There are issues getting Minecraft running on non-Intel processors. Minecraft has some C code in it that relies on specific Intel compilation. - John and Sean


October 2013 at Find Great People

"Exploring Clojure" with Jeff Dik

This will be an introduction to Clojure by exploring the rationale for Clojure's existence: why Rich Hickey, after many years of writing large-scale, concurrent systems in C++, Java, and C# decided to create a dynamic, functional Lisp. Guy Steele, a co-author of the Java Language Specification once said (tongue-in-cheek) "We were not out to win over the Lisp programmers; we were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp." Let’s see what happens if we go the rest of the way.

If all goes well, we'll get a better understanding of the design behind Clojure and a good start into writing Clojure code.

AUDIENCE: Everyone

Pizza and drinks provided by Find Great People.


If you want to learn more Clojure, the best source is probably the creator himself, Rich Hickey. He gave a talk "Clojure for Java Programmers" that really got me interested in the language. It's broken into two videos that total about 3 hours (and you thought my presentation was long! ;-)

Clojure for Java Programmers Part 1
Clojure for Java Programmers Part 2

I think a lot of people enjoyed these presentations by Stuart Halloway:
Concurrent Programming with Clojure

The bigger idea I wanted to convey is that Functional Programming is worth learning and using today. FP has a number of concurrency advantages, but even discounting those, it results in more understandable, maintainable, and testable programs.

Out of the discussion of Functional Programming, the core idea that I wanted to convey was Immutability. I recently glanced through a slide deck of a Stuart Halloway talk called "Clojure in 10 Big Ideas" and the ending slide displayed the topics he talked about, but displayed Immutability in a larger font. Since starting to work with Clojure full-time, the usefulness of immutability has been my biggest realization.

And in order to usefully use immutable collections, they really need to be persistent ("share structure"). You really really want these. They are worry-free.

It's possible to use them from Java, but from what I've heard it's non-idiomatic and rather cumbersome. You want a language that makes them easy to use, which is Scala and Clojure. Personally, I think they are totally worth switching languages for.

In today's multicore programming world, immutability should be the default. Mutability should be minimized to only where needed or for performance as a last resort.

If you're interested how these persistent immutable data structures work, Daniel Spiewak gave a very interesting talk at the Clojure Conj 2012 conference called "Extreme Cleverness: Functional Data Structures in Scala"

For more about immutability, Rich Hickey's keynote "The Value of Values" is very good.

Clojure realizes that sometimes in your program, things do need to change, and it gives you a controlled way to handle those changes through its reference types. To learn more about that, Rich Hickey gave a fantastic talk called "Persistent Data Structures and Managed References"

But, while some things in your program need to change, the number is probably far less that what you'd guess. For example, in Datomic, which is what you get if you apply Immutability to the database world, there are only 5 Clojure reference types. In a DATABASE! Which is a rather stateful thing.

One aspect I really didn't present, and that yet is probably the deepest guiding design principle behind both Clojure and Datomic, is Simplicity. If there is one talk I could get all programmers to watch, it would be this: Simple Made Easy

The last thing I'd like to mention is that a group of us are trying to get a Greenville Clojure Users Group going. We're trying to meet on the first Thursday of every month. We'd love to have you come! Next meeting is Nov 7 at 6:30pm.

Greenville Clojure Users Group on
Greenville Clojure Users Group Google Group


September 2013 at Find Great People

Diego Medina presents, "Liftweb 101 - A powerful and secure web framework for Scala"

Pizza and drinks provided by Find Great People!


Here are Diego's slides


July 2013 at Find Great People

John Yeary presents, "JUnit, Mockito, and Arquillian"

The discussion will focus on unit testing using JUnit, Mockito, and Arquillian. We will examine what unit testing is, an how to implement it. There will demos of the various unit testing frameworks, and how to they are implemented in NetBeans.

Pizza and drinks by Find Great People!


March 2013 at Immedion

Jeff Dik Introduces Datomic

Datomic is a fascinating new re-think about how a database should be constructed given today's hardware advances. Datomic is a database of facts instead of tables or documents, and therefore frees you from the structural rigidity imposed by those models. Given that it doesn't use SQL, I guess it's a NoSQL database, but Datomic preserves those precious ACID values. And, instead of SQL, Datomic gives equivalent query power with a simpler language. Additionally, that query power is local to your application, and can be used by your application on other sources of data. Datomic has essentially unlimited read scalability, but, because of ACID, is limited in write scalability. That said, many database servers are soaked because of reads, not writes, and Datomic side-steps that problem completely. Time is a first class concept in Datomic. You can query the database at any moment in the past, or even query a speculative future with new facts you don't want to commit just yet.

Like Clojure, Datomic was designed by Rich Hickey, and the core values behind Clojure are evident in Datomic's design. Learning Datomic was similar to learning Clojure for me; a series of eureka moments when you realize why things are designed in the way they were, and how they beautifully fall into place.

Whether or not you use Datomic in the future, I think learning about it and its design tradeoffs will forever alter the way you look at databases again!

Jeff Dik is a Principal Software Engineer at LonoCloud where he works primarily in Clojure. He has been a professional programmer for 8 years. He has a degree in both CS and Physics from Ohio University and a strong interest in machine learning and artificial intelligence.


February 2013 at Find Great People

JVM Language Bowl: Merge-Sort (joint meeting with H'ville Scala)

Everyone is invited to bring an implementation of Merge-Sort in their favorite JVM language. We have Java, Scala, and Clojure represented so far, but you are welcome to bring another implementation in those languages too!

Merge sort was invented by John von Neumannin 1945. It is a classic divide and conquer algorithm, yet its simplicity makes it one of the first ones covered in algorithms courses.

Anyone want to bring an example of Groovy, JRuby, or Jython code?

This is a surprisingly good 4-minute video explanation of merge-sort. It presents the essence of the algorithm before getting bogged down in minuscule details of a C++ implementation

An explanation with pseudo-code that you can implement in your favorite language

The Wikipedia article also has pseudo-code and an implementation

Here are some examples in Scala, including an interesting lazily evaluated stream-based solution which I may or may not cover


January 2013 at Immedion

Havoc Pennington presents, "Scala: Why do I Care?"

In this joint meeting with the Scala Users group, Havoc will present an introduction to Scala; a modern, developer-friendly way to code for the Java Virtual Machine.


Havoc Pennington ( is a developer at Typesafe (, the company behind Scala, the Play Framework,
and Akka middleware. Typesafe's technology offers a new way to build modern web applications on the JVM, in Scala or Java.

Previously Havoc was involved in a couple consumer startups. Prior to that he led user interface development at Red Hat and was a
major contributor to the GNOME desktop on Linux. He lives in Asheville, NC.


March 2011

SPEAKER: David Chandler - Google

TOPIC: Launching scalable apps with Google App Engine and GWT 2.1


Google AppEngine lets you build and host scalable Web applications written in Python or Java on Google's infrastructure. Google Web Toolkit (GWT) lets you build and optimize rich browser-based apps without having to be an expert in browser quirks, XMLHttpRequest, or JavaScript. In this talk, we'll look at how to build and deploy a GWT+GAE application with Google Plugin for Eclipse and the GWT 2.1 application framework: MVP architecture with Activities and Places, persistence layer with RequestFactory and the GAE Datastore, and UI data binding with the Editor framework. We'll also take a peek at GWT Designer for Eclipse and performance optimization with SpeedTracer.


David Chandler works with the Google Web Toolkit Team in Atlanta. An electrical engineer by training, Chandler got hooked on developing database Web applications in the days of NCSA Mosaic and has since written Web applications professionally in a variety of languages, including C, perl, ksh, ColdFusion, Java, JSF, and GWT. Prior to joining Google, Chandler worked on Internet banking applications with Intuit and launched a non-profit startup built with GWT and AppEngine. Chandler holds a patent on a method of organizing hierarchical data in a relational database and blogs about Java Web development at

AUDIENCE: Beginning - Intermediate.


JUNE 2010

SPEAKER: Ruth Hoffman,

TOPIC: Getting Started with OFBiz™ in 5 Easy Steps


The presentation will discuss the basics of getting started with Apache OFBiz. The presentation is located here.


An OFBiz evangelist with over 25 years of information technology experience including stints in software design and development, training, project management, product marketing and software sales. Ruth has dedicated the last few years of her eventful career to furthering OFBiz understanding. Whether it be writing about OFBiz, providing implementation and OFBiz consulting services or just "kicking the OFBiz tires" with each new release, she enjoys working with and telling the world about all that this amazing ERP software suite has to offer.

She is writing a book for PACKT publishing about OFBiz. The formal publication date is not yet determined. There will be an announcement on the PACKT website sometime soon.

She has written several other "ebooks" about the OFBiz eCommerce and Catalog Manager applications. If anyone is interested in those, or a real life example of OFBiz ecommerce in action, they can visit her website at

AUDIENCE: Beginner - Intermediate.

MARCH 2010

SPEAKER: John Yeary

TOPIC: Improving Web Security


The discussion will be centered around how to improve web security. I will present 5 items that I believe improve the security of your web based application. The hope is that everyone can participate with a general discussion, or some items that they have discovered over the years.

AUDIENCE: Beginner.


SPEAKER: John Yeary

TOPIC: 2010 JUG Planning


I hope everyone is off to a fantastic new year. We will try to start the JUG 2010 off right. We will be having our first meeting of the year this week. I would like everyone to come who can. I would like to discuss the upcoming year and what sorts of items everyone would like. Perhaps get a list of topics to try and get speakers for.

This meeting will be the last meeting at AGFA. I will be in search of a new home for the JUG meetings. If you have any ideas, or suggestions please let me know.

Why should I come?

I will be giving out a number of goodies like shirts, mice, USB adapters, and multi-plug outlets for mobile users.

Java Boot Camp

Do you need to get certified? I offer a free (participation required) boot camp to prepare you to take the Sun Certified Java Programmer exam. We have had a number of people take the course, and I have gotten some great feedback from those who took the exam. I have been told my classes are *significantly* more difficult than the exam, and that if you understand my code... the exam is much easier. I need to look into some times for the upcoming year, and I need your help.

Are you an Apache Maven user...or would like to be?

I have about 5 copies each of Maven: The complete reference, Maven By Example, and Repository Management with Nexus. These are fresh off the presses from Sonatype. They also include discounts for training from Sonatype if you register the books.

Do you need to learn a new technology?

I have a number of brand new books for learning the newest technologies like Scala, and GWT.

Do you need a pen?

Just kidding, but I do get so many pens from various groups that I have plenty to give away.

Do you want or need to participate in an open source Java project?

I have two projects that need assistance. The first is our JUG project. I need a new logo for our group, and I need some assistance in managing the site, etc.

The other project is Project Woodstock (

). I have taken over some of the maintenance of the code for the project. Specifically, I am working on 4.0.2+ since this version is primarily based on HTML based components and not JS widgets. Why you may ask? Project GlassFish ( uses Woodstock for its user interface. I am looking to update the existing code base, fix bugs, etc. I am also planning on merging the changes forward on the 4.1, 4.2, 4.3, and 4.4 branches. Ultimately this may result is another project like Woodstock2... We're getting the band back together. If you want to learn about JSF, visual design, and component technologies. Here is your chance to get involved.

Find Great People (FGP) will be providing pizza. A special thank you to FGP.



SPEAKER: John Yeary

TOPIC: Amazon Web Services (AWS) and Java Application Server (GlassFish) High Availability (HA) Deployment

ABSTRACT: The discussion will center around how to build a High Availability (HA) deployment using Sun Java Application Server (Project GlassFish) in a clustered mode on Amazon Web Services. This will involve creating the various Amazon Machine Image (AMI) virtual machines, installing and configuring GlassFish, and setting up load balancing using cloud balancing with AWS CloudFront. A series of nodes will be killed during processing, and a demonstration of the load balancing along with transaction continuation will occur. 


APRIL 2009

SPEAKER: John Yeary

TOPIC: Unit Testing -  jUnit 4, Cactus, HTMLUnit, JSFUnit, DbUnit

ABSTRACT: John Yeary will be discussing the importance of unit testing using various tools. The ease by which you can implement testing, and "test infection". Test Driven Development (TDD) will also be

discussed. The examples will be done using NetBeans 6.5, but the general methodology is the same in the various IDEs.



SPEAKER: John Yeary

TOPIC: JRuby, Ruby-on-Rails, Redmine, mySQL, Quercus, and GlassFish. Easing Server Reuse.

ABSTRACT: John Yeary will be providing a demonstration on how to use JRuby, RedMine, mySQL, and Quecus on GlassFish. This includes a simple installation and configuration. JRuby is the Ruby implementation that runs on the Java VM. Quercus is a PHP implementation that runs on the Java VM. Redmine is a Ruby-on-Rails (RoR) project management and defect tracking solution. GlassFish is an open source application server. It is the reference implementation of the EE5 and EE6 specifications. mySQL is an open source database.



SPEAKER: Dave Cowden, Director of Development at Greenville,SC based CoLinx, LLC. Dave has been implementing Scrum at CoLinx over the past year.

TOPIC: Agile in Practice

ABSTRACT: "Agile in Practice" provides a practical, experience-based view of implementing agile ( Scrum in particular). Topics include an overview of agile and Scrum, discussion of solutions to problems typically encountered while moving to Scrum, and some tips on designing a process that will work in your team.

AUDIENCE: Anyone interested in SCRUM and Agile development methodology

PRESENTATION: Agile in Practice

Please Confirm