Wednesday, June 3, 2015

Top Ten Heart-touching YouTube Videos of All Time

Sometimes, a experience can touch you, and sometimes these experiences come in the form of a video we are watching.  As if these videos are alive, they reach out to our hearts, spin around them and warm them.  These videos come in different forms and different intents, but they all stay with us, touch us, make us feel something that previously wasn't there.  I gathered a few to share with you, that quickly come to mind, and I call them...


My Top Ten Heart-touching YouTube Videos of All Time

10. Where the Hell is Matt? 2008

Note: The video doesn't seem to be rendering quite right in this blog, so you'll want to go directly to YouTube for this one.  The rest of the videos are good.



9. John Legend - All Of Me (fingerstyle guitar cover by Peter Gergely) 





8. Anna Shannon. Yorkshire Song.





7. Johnny Cash - Hurt



6. Snack Happy Blues 


5. Powerful Inspirational true story...Don't give up!



4. EL SHADDAI BY AMY GRANT


3. Thunder Road 1976 Bruce Springsteen


2. Jay Z feat Mr. Hudson - Young Forever Official Video Lyrics


1. Ralph McTell Streets of London



I hope you have enjoyed these videos, as I have.

-- Robert

Sunday, May 31, 2015

Why I quit playing Google Ingress

Taking a moment to think about my gameplay on Ingress, I realized that perhaps I should probably quit the game for good.  Here are the top ten things that people really don't do, but Ingress may encourages some of them to do, which is why I've decided to quit for good.



TEN THINGS I WOULD NEVER DO IF IT WASN'T FOR INGRESS


10. Walk for hours till my legs burn and I can't walk anymore

9. Bicycle (and operate the phone), where bicycling is prohibiting

8.  Revisit the same place ten to twenty times in the same day

7.  Deliberately change or extend my path to a destination  

6. Traverse various dark wooded paths in the middle of the night  

5. Stand in the middle of the street

4. Fiddle with the phone while driving

3. Approach stray dogs (or animals) that are in the space I need to be  

2. Hope the stoplight turns red before I get to it, or slow down 

1. Be prepared to speak with law enforcement

* Note that many of these things you do not have to do to play the game...

Do you play Ingress?  If so, how many of these activities have you done multiple times?  Share below.

-- Robert

Thursday, May 28, 2015

The Striper's Soul

The Striper's Soul 
by Robert James Liguori 


On that cold, damp beach,
 I came to claim my fame; 
A hero of the inlet,
 A master of the game.

It was late November, 
The moon was shining full. 
My hook was fresh with clam, 
Set to bring my jewel. 

So with a lofty cast, 
I watched my bait take air.
 Then down into the water,
 It fell into his lair. 

Patiently, 
I did wait,
 With my finger on the line. 
Waiting for the stripers touch,
 Hoping he would dine.

The night was very peaceful; 
A couple shooting stars.
I
 closed my eyes and wondered, 
Were stripers near or far. 

And then there was a tug,
 And then silence on my line. 
I knew that he'd be back, 
I knew that he'd be mine. 

I took a quiet moment,
 To think about his soul. 
Are stripers much like us? 
This I feel I know. 

My rod just bent in half!
 My heart is pounding fast! 
My line is spooling out, 
What a sudden blast! 

He's on, I set my hook! 
And then I set again!
 I give him time to run, 
My rod just bends and bends!

A light rain starts to form, 
And sweat roles off my face. 
There's no place I'd rather be,
T
han in this misty place. 

I feel that I just hooked him, 
Yet time has spilled away.
 I've been battling this nice fish,
 For hours of the day. 

I spin the reel a few more times, 
And now can see his tail. 
He hurls out of the water, 
Within the northeast gale. 

I bring him into shore,
A
nd land him on the beach.
 There's nothing more to question, 
This fish is five long feet. 

Between fisherman and fish, 
The two of us did play. 
I'll send him back to sea, 
Until another day. 

These stripers have a gaming blood,
 It's nice to understand, 
That they enjoy the fight so much, 
They'll do it all again.

Monday, May 25, 2015

Linking Ranges for Google Ingress Portals with Link Amps

Here are answers to common Google Ingress linking questions in regards to ranges.
  • What is the shortest possible linking range between portals?
  • What is the longest possible linking range between portals?
  • What are the possible linking ranges for portals without link amps?
  • What are the possible linking ranges for portals with rare link amps?
  • What are the possible linking ranges for portals with very rare link amps?
  • What are the possible linking ranges for  portals with rare link amps mixed with very rare link amps

The Shortest possible Link between Portals

The shortest possible link range is 160 meters (i.e. 524.934 feet).  This range is present on a level 1 portals without any link amps.   The following video gives you an idea of how far 525 feet really is.



The Longest possible Link between Portals

The longest possible link range between portals is 6881.36 km.  A good example is the distance of 6881 kilometers between New York, USA to Bugry Russia.  This range is possible with a level 8 portal and four very rare link amps.

Example of Google Ingress maximum link range (~ 6881.36 km)


 

Ranges Without any Link Amps


Portal
Level
Range In
Miles
Range In
Kilometers
Range In
Meters
1 0.10 mi 0.16 km 160 m
2 1.59 mi 2.56 km 2560.00 m
3 8.05 mi 12.96 km 12960.00 m
4 25.44 mi 40.96 km 40960.00 m
5 62.10 mi 100.00 km 100000.00 m
6 128.77 mi 207.36 km 207360.00 m
7 238.56 mi 384.16 km 384160.00 m
8 406.98 mi 655.36 km 655360.00 m

Possible linking ranges for rare link amps 

The following table provides the link range of individual portals modded with one or more rare link amps.


Portal
Level
One Rare
Link Amp
Two Rare
Link Amps
Three Rare
Link Amps
Four Rare
Link Amps
1 0.32 km (0.2 mi) 0.4 km (0.25 mi) 0.44 km (0.27 mi) 0.48 km (0.3 mi)
2 5.12 km (3.18 mi) 6.4 km (3.97 mi) 7.04 km (4.37 mi) 7.68 km (4.77 mi)
3 25.92 km (16.1 mi) 32.4 km (20.12 mi) 35.64 km (22.13 mi) 38.88 km (24.14 mi)
4 81.92 km (50.87 mi) 102.4 km (63.59 mi) 112.64 km (69.95 mi) 122.88 km (76.31 mi)
5 200.0 km (124.2 mi) 250.0 km (155.25 mi) 275.0 km (170.78 mi) 300.0 km (186.3 mi)
6 414.72 km (257.54 mi) 1814.4 km (1126.74 mi) 570.24 km (354.12 mi) 622.08 km (386.31 mi)
7 768.32 km (477.13 mi) 960.4 km (596.41 mi) 1056.44 km (656.05 mi) 1152.48 km (715.69 mi)
8 1310.72 km (813.96 mi) 1638.4 km (1017.45 mi) 1802.24 km (1119.19 mi) 1966.08 km (1220.94 mi)

 

Possible linking ranges for very rare link amps 

The following table provides the link range of individual portals modded with one or more 'very rare' link amps.


Portal
Level
One Very Rare
Link Amp
Two Very Rare
Link Amps
Three Very Rare
Link Amps
Four Very Rare
Link Amps
1 1.12 km (0.7 mi) 1.4 km (0.87 mi) 1.54 km (0.96 mi) 1.68 km (1.04 mi)
2 17.92 km (11.13 mi) 22.4 km (13.91 mi) 24.64 km (15.3 mi) 26.88 km (16.69 mi)
3 90.72 km (56.34 mi) 113.4 km (70.42 mi) 124.74 km (77.46 mi) 136.08 km (84.51 mi)
4 286.72 km (178.05 mi) 358.4 km (222.57 mi) 394.24 km (244.82 mi) 430.08 km (267.08 mi)
5 700.0 km (434.7 mi) 875.0 km (543.38 mi) 962.5 km (597.71 mi) 1050.0 km (652.05 mi)
6 1451.52 km (901.39 mi) 1814.4 km (1126.74 mi) 1995.84 km (1239.42 mi) 2177.28 km (1352.09 mi)
7 2689.12 km (1669.94 mi) 3361.4 km (2087.43 mi) 3697.54 km (2296.17 mi) 4033.68 km (2504.92 mi)
8 4587.52 km (2848.85 mi) 5734.4 km (3561.06 mi) 6307.84 km (3917.17 mi) 6881.28 km (4273.27 mi)

Linking ranges for rare link amps mixed with very rare link amps

I don't the ranges or how to get them when rare and very rare link amps are mixed.  If anyone knows about these algorithms, please let me know and I'll create the necessary table.

 BONUS: My Java code that produced these results

Take note that the values I used was based on information I gathered on the web, and by no verified sources.  So, if you see any issues, please let me know and I can regenerate the results.  Btw, I'm sure there are better ways to code this up, but this seems to work. :)

package com.gliesian.gwin.managed_beans.mobile;

import java.util.ArrayList;
import java.util.HashMap;

public class IngressLinkCalculator {

  public static enum Mod {
    EMPTY, RARE_LINK_AMP, VERY_RARE_LINK_AMP, OTHER
  }

  // Portal level and range in kilometers
  public static final HashMap<Integer, Double> minimumPortalRangesMap = new HashMap<>();

  static {
    minimumPortalRangesMap.put(0, 0.0);
    minimumPortalRangesMap.put(1, .16);
    minimumPortalRangesMap.put(2, 2.560);
    minimumPortalRangesMap.put(3, 12.96);
    minimumPortalRangesMap.put(4, 40.96);
    minimumPortalRangesMap.put(5, 100.0);
    minimumPortalRangesMap.put(6, 207.36);
    minimumPortalRangesMap.put(7, 384.16);
    minimumPortalRangesMap.put(8, 655.36);
  }

  public static final Double RARE_LINK_AMP_MULTIPLIER = 2.0;
  public static final Double VERY_RARE_LINK_AMP_MULTIPLIER = 7.0;

  public static final Double FIRST_PORTAL_RETURN_PERCENTAGE = 1.0;
  public static final Double SECOND_PORTAL_RETURN_PERCENTAGE = .25;
  public static final Double THIRD_PORTAL_RETURN_PERCENTAGE = .125;
  public static final Double FORTH_PORTAL_RETURN_PERCENTAGE = .125;

  static final double MILES_PER_KILOMETER = 0.621;

  public IngressLinkCalculator() {
  }

  public ArrayList establishListOfPortalsWithLinkAmps() {

    ArrayList<Portal> portalList = new ArrayList<>();

    // Setup portals have levels 0-8 and all varying link amp combinations
    for (int i = 1; i < 9; i++) {

      // RARE LINK AMPS
      Portal p1 = new Portal(i, Mod.RARE_LINK_AMP, Mod.EMPTY, Mod.EMPTY, Mod.EMPTY);
      Portal p2 = new Portal(i, Mod.RARE_LINK_AMP, Mod.RARE_LINK_AMP, Mod.EMPTY, Mod.EMPTY);
      Portal p3 = new Portal(i, Mod.RARE_LINK_AMP, Mod.RARE_LINK_AMP, Mod.RARE_LINK_AMP, Mod.EMPTY);
      Portal p4 = new Portal(i, Mod.RARE_LINK_AMP, Mod.RARE_LINK_AMP, Mod.RARE_LINK_AMP, Mod.RARE_LINK_AMP);
      portalList.add(p1);
      portalList.add(p2);
      portalList.add(p3);
      portalList.add(p4);  

      // VERY RARE LINK AMPS
      
      Portal p5 = new Portal(i, Mod.VERY_RARE_LINK_AMP, Mod.EMPTY, Mod.EMPTY, Mod.EMPTY);
      Portal p6 = new Portal(i, Mod.VERY_RARE_LINK_AMP, Mod.VERY_RARE_LINK_AMP, Mod.EMPTY, Mod.EMPTY);
      Portal p7 = new Portal(i, Mod.VERY_RARE_LINK_AMP, Mod.VERY_RARE_LINK_AMP, Mod.VERY_RARE_LINK_AMP, Mod.EMPTY);
      Portal p8 = new Portal(i, Mod.VERY_RARE_LINK_AMP, Mod.VERY_RARE_LINK_AMP, Mod.VERY_RARE_LINK_AMP, Mod.VERY_RARE_LINK_AMP);
      portalList.add(p5);
      portalList.add(p6);
      portalList.add(p7);
      portalList.add(p8);  

      // RARE AND VERY RARE LINK AMPS
      /*
      Portal p9 = new Portal(i, Mod.RARE_LINK_AMP, Mod.VERY_RARE_LINK_AMP, Mod.EMPTY, Mod.EMPTY); // ONE OF EACH
      Portal p10 = new Portal(i, Mod.RARE_LINK_AMP, Mod.RARE_LINK_AMP, Mod.VERY_RARE_LINK_AMP, Mod.VERY_RARE_LINK_AMP);  // TWO OF EACH
      Portal p11 = new Portal(i, Mod.RARE_LINK_AMP, Mod.RARE_LINK_AMP, Mod.VERY_RARE_LINK_AMP, Mod.EMPTY);  // TWO RARE, ONE VERY
      Portal p12 = new Portal(i, Mod.RARE_LINK_AMP, Mod.VERY_RARE_LINK_AMP, Mod.VERY_RARE_LINK_AMP, Mod.EMPTY);  // TWO VERY, ONE RARE
      Portal p13 = new Portal(i, Mod.RARE_LINK_AMP, Mod.RARE_LINK_AMP, Mod.RARE_LINK_AMP, Mod.VERY_RARE_LINK_AMP); // THREE RARE, ONE VERY
      Portal p14 = new Portal(i, Mod.RARE_LINK_AMP, Mod.VERY_RARE_LINK_AMP, Mod.VERY_RARE_LINK_AMP, Mod.VERY_RARE_LINK_AMP); // THREE VERY, ONE RARE
      portalList.add(p9);
      portalList.add(p10);
      portalList.add(p11);
      portalList.add(p12);
      portalList.add(p13);
      portalList.add(p14);
*/
    }

    return portalList;
  }

  public Double determineRange(Portal p) {

    /*
     * RARE LINK AMPS
     */
    Integer rareLinkAmpOccurences = 0;
    // TALLY RARE LINK AMP MODS
    if (p.lam1 == Mod.RARE_LINK_AMP) {
      rareLinkAmpOccurences++;
    }
    if (p.lam2 == Mod.RARE_LINK_AMP) {
      rareLinkAmpOccurences++;
    }
    if (p.lam3 == Mod.RARE_LINK_AMP) {
      rareLinkAmpOccurences++;
    }
    if (p.lam4 == Mod.RARE_LINK_AMP) {
      rareLinkAmpOccurences++;
    }
    Double totalRareLinkAmpMultiplier = 0.0;
    if (rareLinkAmpOccurences == 4) {
      totalRareLinkAmpMultiplier = (RARE_LINK_AMP_MULTIPLIER * FORTH_PORTAL_RETURN_PERCENTAGE);
    }
    if (rareLinkAmpOccurences >= 3) {
      totalRareLinkAmpMultiplier = totalRareLinkAmpMultiplier + (RARE_LINK_AMP_MULTIPLIER * THIRD_PORTAL_RETURN_PERCENTAGE);
    }
    if (rareLinkAmpOccurences >= 2) {
      totalRareLinkAmpMultiplier = totalRareLinkAmpMultiplier + (RARE_LINK_AMP_MULTIPLIER * SECOND_PORTAL_RETURN_PERCENTAGE);
    }
    if (rareLinkAmpOccurences >= 1) {
      totalRareLinkAmpMultiplier = totalRareLinkAmpMultiplier + (RARE_LINK_AMP_MULTIPLIER * FIRST_PORTAL_RETURN_PERCENTAGE);
    }
   
    /*
     * VERY RARE LINK AMPS
     */
    Integer veryRareLinkAmpOccurences = 0;
    // TALLY VERY RARE LINK AMP MODS
    if (p.lam1 == Mod.VERY_RARE_LINK_AMP) {
      veryRareLinkAmpOccurences++;
    }
    if (p.lam2 == Mod.VERY_RARE_LINK_AMP) {
      veryRareLinkAmpOccurences++;
    }
    if (p.lam3 == Mod.VERY_RARE_LINK_AMP) {
      veryRareLinkAmpOccurences++;
    }
    if (p.lam4 == Mod.VERY_RARE_LINK_AMP) {
      veryRareLinkAmpOccurences++;
    }
    Double totalVeryRareLinkAmpMultiplier = 0.0;
    if (veryRareLinkAmpOccurences >= 4) {
      totalVeryRareLinkAmpMultiplier = (VERY_RARE_LINK_AMP_MULTIPLIER * FORTH_PORTAL_RETURN_PERCENTAGE);
    }
    if (veryRareLinkAmpOccurences >= 3) {
      totalVeryRareLinkAmpMultiplier = totalVeryRareLinkAmpMultiplier + (VERY_RARE_LINK_AMP_MULTIPLIER * THIRD_PORTAL_RETURN_PERCENTAGE);
    }
    if (veryRareLinkAmpOccurences >= 2) {
      totalVeryRareLinkAmpMultiplier =  totalVeryRareLinkAmpMultiplier + (VERY_RARE_LINK_AMP_MULTIPLIER * SECOND_PORTAL_RETURN_PERCENTAGE);
    }
    if (veryRareLinkAmpOccurences >= 1) {
      totalVeryRareLinkAmpMultiplier =  totalVeryRareLinkAmpMultiplier + (VERY_RARE_LINK_AMP_MULTIPLIER * FIRST_PORTAL_RETURN_PERCENTAGE);
    }
   // totalVeryRareLinkAmpMultiplier = totalVeryRareLinkAmpMultiplier * minimumPortalRangesMap.get(p.level);

    Double multiplier = 0.0;
    if (rareLinkAmpOccurences != 0) {
      multiplier = multiplier + totalRareLinkAmpMultiplier;
    }
    if (veryRareLinkAmpOccurences != 0) {
      multiplier = multiplier + totalVeryRareLinkAmpMultiplier;
    }

    Double range = minimumPortalRangesMap.get(p.level) * multiplier;
    return range;
  }

  // Unused
  public void printInMetersMilesAndKilometers(Portal p, Double rangeInKilometers) {
    System.out.println("Level: " + p.getLevel());
    System.out.printf("Range in Meters: %.2f\n", rangeInKilometers * 1000);
    System.out.printf("Range in Miles: %.2f\n", rangeInKilometers * MILES_PER_KILOMETER);
    System.out.printf("Range in Kilometers: %.2f\n", rangeInKilometers);
  }

  public static void main(String[] args) {
    IngressLinkCalculator ilc = new IngressLinkCalculator();
    ArrayList<Portal> portalList = ilc.establishListOfPortalsWithLinkAmps();
    for (Portal portalList1 : portalList) {
      System.out.print("Portal Level: " + portalList1.level + ", ");
      if (portalList1.lam1 != Mod.EMPTY & portalList1.lam1 != Mod.OTHER) {
        System.out.print(" " + portalList1.lam1);
      }
      if (portalList1.lam2 != Mod.EMPTY & portalList1.lam2 != Mod.OTHER) {
        System.out.print(" " + portalList1.lam2 );
      }
      if (portalList1.lam3 != Mod.EMPTY & portalList1.lam3 != Mod.OTHER) {
        System.out.print(" " + portalList1.lam3);
      }
      if (portalList1.lam4 != Mod.EMPTY & portalList1.lam4 != Mod.OTHER) {
        System.out.print(" " + portalList1.lam4);
      }
      Double rangeKm = Double.parseDouble(String.format("%.2f", ilc.determineRange(portalList1)));
      Double rangeMi = Double.parseDouble(String.format("%.2f", ilc.determineRange(portalList1) *  MILES_PER_KILOMETER));
      System.out.println(" " + rangeKm + " km (" +  rangeMi  +" mi)\n");
    }

  }

  public class Portal {

    private Integer level = 0;
    public Mod lam1 = Mod.EMPTY;
    public Mod lam2 = Mod.EMPTY;
    public Mod lam3 = Mod.EMPTY;
    public Mod lam4 = Mod.EMPTY;

    public Portal(Integer level, Mod lam1, Mod lam2, Mod lam3, Mod lam4) {
      this.level = level;
      this.lam1 = lam1;
      this.lam2 = lam2;
      this.lam3 = lam3;
      this.lam4 = lam4;
    }
    
    public Integer getLevel() {
      return level;
    }
    public void setLevel(Integer level) {
      this.level = level;
    }
  }
}

As always, I hope this is of interest and value to people.
-- Robert


Sunday, May 24, 2015

Layering Fields and their Worth in Google Ingress

I'm still new to Google Ingress and have just helped contribute to a set of layered fields.  Of course I'm stoked, that's why I'm providing this Resistance layered field image and this blog post about fields. :)


Example of Google Ingress Field Layering

What are layered fields?

It's common sense really; fields over fields IS layered fields.

Where's the benefit?  So, if you create a field worth 100 MUs and then create another field around/over that field worth 110 MUs, you will get credit for the 100 MUs of the field under your new capture and it's value of 110 MUs as well.





So if you layer over seven fields, your MU capture (of the 8) would look like this:


Layered
Field
Example
MUs captured
Accumulate MUs captured at once Total MUs
Captured
1 100 100 100
2 110 110 + 100 210
3 150 150 + 110 + 100 360
4 170 170 + 150 + 110 + 100 530
5 250 250 + 170 + 150 + 100 + 100 780
6 260 260 + 250 + 170 + 150 + 100 + 100 1040
7 500 500 + 260 + 250 + 170 + 150 + 100 + 100 1540
8 725 725 + 500 + 260 + 250 + 170 + 150 + 100 + 100 2265

The clear advantage is that you can get more fields in less space, bearing more MUs.

And don't forget, accumulated MUs count towards your Illuminator badging!



Enjoy your Ingressing, as so will I!
Robert

Saturday, May 23, 2015

Using gedcom4j to determine the frequencies of surnames in your ancestry tree (GEDCOM)


Gathering information to aid in genealogy research can often be time consuming, exhausting and may not always bear fruit.  What makes researching your ancestry sometimes extra frustrating is that you may know/assume that the answers you seek are often reachable within the sets of data that you already have, but the data is too large to parse through and compare, deeming many of your tasks impossible to complete.  This is where gedcom4j comes in handy, it makes gathering and comparing GEDCOMs easy.  As a use case, wouldn't it be great to have the information about a person that you think may be related to you:

The surname Liguori is present 59 time(s) in your gedcom tree
The surname Mesiano is present 70 time(s) in your gedcom tree
The surname Vacca is present 19 time(s) in your gedcom tree
The surname Whitehead is present 123 time(s) in your gedcom tree

gedcom4j makes this possible, quickly and easily.

So then, what is gedcom4j?




Quoting their website, "gedcom4j is an open-source, free-to-use Java library for loading (parsing) and saving genealogy data in GEDCOM 5.5 or 5.5.1 files to/from a Java object hierarchy, which can be manipulated by your code as you see fit.".

This API is awesome.  As a sample use case there have been times I've spent dozens of hours comparing surnames from various trees by flipping through paginated web pages over and over.  It would be nice if I could just use an API to compare the presence and frequency of surnames against candidate cousin's surnames to aid in proving relationships to me.

So to this extent, you can follow the code example below to produce your own set of surnames related to you along with their frequency, all reduced from your GEDCOM.

Just follow these steps:

  • Download your GEDCOM files from Ancestry or another source
  • Setup a NetBeans project with Maven support
  • Compile and run a gedcom4j program against your own GEDCOM file
  • Enjoy your results

Download your GEDCOM files from Ancestry or another source

First, grab your GEDCOM! In regards to ancestry.com, the instructions are getting your GEDCOM are here.

Setup a NetBeans project with Maven support


<dependency>
<groupId>org.gedcom4j</groupId>
<artifactId>gedcom4j</artifactId>
<version>2.1.9</version>
</dependency>

Compile and run a gedcom4j program against your own GEDCOM file

Here is a sample gedcom4j program that I quickly put together (note that today is my first day working with the API).  The program generates all of the surnames you have listed in your GEDCOM along with the frequencies of each surname.

package com.gliesian.gwin.gedcom;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.lang.WordUtils;

import org.gedcom4j.model.Individual;
import org.gedcom4j.model.PersonalName;
import org.gedcom4j.model.Submitter;
import org.gedcom4j.parser.GedcomParser;
import org.gedcom4j.parser.GedcomParserException;

public class GedcomTester {

  public static List createListOfSurnames(String fileName) {
    
   ArrayList<String> surnameList = new ArrayList<>();
    Path p = Paths.get(fileName);
    GedcomParser gp = new GedcomParser();
    try {
      gp.load(p.toString());

      Submitter submitter = null;
      if (!gp.gedcom.submitters.isEmpty()) {
        submitter = gp.gedcom.submitters.values().iterator().next();
      }

      for (Individual individual : gp.gedcom.individuals.values()) {
        List<PersonalName> nameList = individual.names;
        for (PersonalName name : nameList) {

          String surname = name.basic ;

          // String characters around surnames - e.g. /Liguori/
          if (surname.contains("/")) {
            surname = surname.substring(surname.indexOf("/") + 1, surname.lastIndexOf("/"));
             // Capitablize first letter of each word
            surname = WordUtils.capitalizeFully(surname);
            surnameList.add(surname);
          }
        }
      }
    } catch (IOException | GedcomParserException e) {
      e.printStackTrace();
    }
    return surnameList;
  }

  public static List retrieveListOfSurnamesAndFrequencies(List<String> fullList) {
   
    List <String> resultList = new ArrayList <> (); 

    // Remove all duplicates
    List<Object> dedupedList = fullList.stream().distinct().collect(Collectors.toList());
    // Sort alphabetically
    Collections.sort(dedupedList, Collator.getInstance());
    // Count and print surnames
    for (Object list1 : dedupedList) {
      // E.g. Capobianco 12  
      String message = "The surname " + list1 + " is present " + java.util.Collections.frequency(fullList, list1) + " time(s) in your gedcom tree";
      resultList.add(message);
    }
    return resultList;
  }
  
  
  public static void main(String[] args) {

    List <String> surnamesList = (ArrayList) createListOfSurnames("/gedcoms/Liguori-Family-Tree.ged");
    List <String> reportListOfSurnamesAndFrequencies = retrieveListOfSurnamesAndFrequencies(surnamesList);
    for (String stats : reportListOfSurnamesAndFrequencies) {
      System.out.println(stats);
    }
  }
}

Enjoy your results

In my case, here are my results:

The surname Abrams is present 1 time(s) in your gedcom tree
The surname Abril is present 1 time(s) in your gedcom tree
The surname Adams is present 2 time(s) in your gedcom tree
The surname Adase is present 1 time(s) in your gedcom tree
The surname Aiello is present 1 time(s) in your gedcom tree
The surname Alefaco is present 1 time(s) in your gedcom tree
The surname Alton is present 2 time(s) in your gedcom tree
The surname Anastasio is present 1 time(s) in your gedcom tree
The surname Antinozzi is present 2 time(s) in your gedcom tree
The surname Applewhaite is present 1 time(s) in your gedcom tree
The surname Aquilino is present 1 time(s) in your gedcom tree
The surname Ardern is present 6 time(s) in your gedcom tree
The surname Aruzzo is present 1 time(s) in your gedcom tree
The surname Aurora is present 1 time(s) in your gedcom tree
The surname Aversa is present 5 time(s) in your gedcom tree
The surname Axelson is present 11 time(s) in your gedcom tree
The surname Bailey is present 2 time(s) in your gedcom tree
The surname Barrett is present 2 time(s) in your gedcom tree
The surname Barry is present 1 time(s) in your gedcom tree
The surname Barwick is present 8 time(s) in your gedcom tree
The surname Bertonazzi is present 1 time(s) in your gedcom tree
The surname Bianculli is present 1 time(s) in your gedcom tree
The surname Bloomenheim is present 1 time(s) in your gedcom tree
The surname Blumenhein is present 1 time(s) in your gedcom tree
The surname Bonghi is present 1 time(s) in your gedcom tree
The surname Bonsagne is present 3 time(s) in your gedcom tree
The surname Bonsague is present 1 time(s) in your gedcom tree
The surname Bourgoin is present 2 time(s) in your gedcom tree
The surname Bove is present 4 time(s) in your gedcom tree
The surname Bower is present 4 time(s) in your gedcom tree
The surname Boyle is present 1 time(s) in your gedcom tree
The surname Bratti is present 1 time(s) in your gedcom tree
The surname Bryan is present 1 time(s) in your gedcom tree
The surname Buonaguro is present 1 time(s) in your gedcom tree
The surname Burgas is present 1 time(s) in your gedcom tree
The surname Burki is present 1 time(s) in your gedcom tree
The surname Burns is present 1 time(s) in your gedcom tree
The surname Burrow is present 1 time(s) in your gedcom tree
The surname Cacace is present 12 time(s) in your gedcom tree
The surname Cacchio is present 1 time(s) in your gedcom tree
The surname Calderone is present 3 time(s) in your gedcom tree
The surname Calendra is present 1 time(s) in your gedcom tree
The surname Canale is present 5 time(s) in your gedcom tree
The surname Cantz is present 1 time(s) in your gedcom tree
The surname Capalmo is present 1 time(s) in your gedcom tree
The surname Capano is present 7 time(s) in your gedcom tree
The surname Capizola is present 5 time(s) in your gedcom tree
The surname Capobianco is present 12 time(s) in your gedcom tree
The surname Caraccioli is present 2 time(s) in your gedcom tree
The surname Cardullo is present 1 time(s) in your gedcom tree
The surname Carini is present 1 time(s) in your gedcom tree
The surname Carpenito is present 2 time(s) in your gedcom tree
The surname Carragher is present 1 time(s) in your gedcom tree
The surname Carrodo is present 2 time(s) in your gedcom tree
The surname Casaccio is present 1 time(s) in your gedcom tree
The surname Casale is present 1 time(s) in your gedcom tree
The surname Caso is present 1 time(s) in your gedcom tree
The surname Castallucci is present 2 time(s) in your gedcom tree
The surname Caulder is present 3 time(s) in your gedcom tree
The surname Cavanaugh is present 1 time(s) in your gedcom tree
The surname Cerione is present 2 time(s) in your gedcom tree
The surname Chambers is present 1 time(s) in your gedcom tree
The surname Chastain is present 5 time(s) in your gedcom tree
The surname Childress is present 1 time(s) in your gedcom tree
The surname Chrisman is present 1 time(s) in your gedcom tree
The surname Cigna is present 1 time(s) in your gedcom tree
The surname Civitella is present 2 time(s) in your gedcom tree
The surname Civitello is present 2 time(s) in your gedcom tree
The surname Clark is present 6 time(s) in your gedcom tree
The surname Clarkson is present 1 time(s) in your gedcom tree
The surname Clopp is present 3 time(s) in your gedcom tree
The surname Colini is present 1 time(s) in your gedcom tree
The surname Comparri is present 4 time(s) in your gedcom tree
The surname Conti is present 2 time(s) in your gedcom tree
The surname Cook is present 1 time(s) in your gedcom tree
The surname Coppetto is present 1 time(s) in your gedcom tree
The surname Coppola is present 1 time(s) in your gedcom tree
The surname Corrado is present 3 time(s) in your gedcom tree
The surname Corson is present 5 time(s) in your gedcom tree
The surname Costabile is present 21 time(s) in your gedcom tree
The surname Crossland is present 4 time(s) in your gedcom tree
The surname Crumb is present 1 time(s) in your gedcom tree
The surname Daniele is present 1 time(s) in your gedcom tree
The surname De Angelis is present 5 time(s) in your gedcom tree
The surname De Leonardis is present 1 time(s) in your gedcom tree
The surname Delillo is present 2 time(s) in your gedcom tree
The surname Dempsey is present 3 time(s) in your gedcom tree
The surname De Palma is present 11 time(s) in your gedcom tree
The surname Derispiris is present 1 time(s) in your gedcom tree
The surname Deritis is present 2 time(s) in your gedcom tree
The surname Detrano is present 4 time(s) in your gedcom tree
The surname De Trano is present 13 time(s) in your gedcom tree
The surname Diflippo is present 2 time(s) in your gedcom tree
The surname Dimartin is present 1 time(s) in your gedcom tree
The surname Dimartino is present 2 time(s) in your gedcom tree
The surname Di Martino is present 1 time(s) in your gedcom tree
The surname Distefano is present 3 time(s) in your gedcom tree
The surname D Mesiano is present 2 time(s) in your gedcom tree
The surname Dolan is present 15 time(s) in your gedcom tree
The surname Dolquiest is present 1 time(s) in your gedcom tree
The surname Domenico is present 3 time(s) in your gedcom tree
The surname Donahue is present 1 time(s) in your gedcom tree
The surname Donata Lo Buono is present 1 time(s) in your gedcom tree
The surname Donato is present 5 time(s) in your gedcom tree
The surname Donza is present 11 time(s) in your gedcom tree
The surname Downes is present 1 time(s) in your gedcom tree
The surname Durso is present 6 time(s) in your gedcom tree
The surname Elliot is present 2 time(s) in your gedcom tree
The surname Elliott is present 1 time(s) in your gedcom tree
The surname Emmons is present 5 time(s) in your gedcom tree
The surname Esposito is present 9 time(s) in your gedcom tree
The surname Fackenthal is present 4 time(s) in your gedcom tree
The surname Fackenthall is present 2 time(s) in your gedcom tree
The surname Faith Jr is present 1 time(s) in your gedcom tree
The surname Falco is present 5 time(s) in your gedcom tree
The surname Farina is present 1 time(s) in your gedcom tree
The surname Fell is present 1 time(s) in your gedcom tree
The surname Ferarra is present 8 time(s) in your gedcom tree
The surname Ferrante is present 3 time(s) in your gedcom tree
The surname Ferrara is present 15 time(s) in your gedcom tree
The surname Ferrarra is present 1 time(s) in your gedcom tree
The surname Ferry is present 1 time(s) in your gedcom tree
The surname Fiore is present 1 time(s) in your gedcom tree
The surname Fiorenti is present 1 time(s) in your gedcom tree
The surname Fiorentino is present 1 time(s) in your gedcom tree
The surname Fleming is present 2 time(s) in your gedcom tree
The surname Flowers is present 1 time(s) in your gedcom tree
The surname Forster is present 4 time(s) in your gedcom tree
The surname Foster is present 9 time(s) in your gedcom tree
The surname Francisco is present 1 time(s) in your gedcom tree
The surname Garfield is present 2 time(s) in your gedcom tree
The surname Garisto is present 1 time(s) in your gedcom tree
The surname Gaspara is present 3 time(s) in your gedcom tree
The surname Gerson is present 2 time(s) in your gedcom tree
The surname Gilstrap is present 1 time(s) in your gedcom tree
The surname Giordano is present 2 time(s) in your gedcom tree
The surname Giorgio is present 2 time(s) in your gedcom tree
The surname Gnerre is present 1 time(s) in your gedcom tree
The surname Godwin is present 1 time(s) in your gedcom tree
The surname Gootman is present 1 time(s) in your gedcom tree
The surname Grant is present 1 time(s) in your gedcom tree
The surname Greenberg is present 1 time(s) in your gedcom tree
The surname Gregory is present 8 time(s) in your gedcom tree
The surname Grice is present 1 time(s) in your gedcom tree
The surname Grimes is present 1 time(s) in your gedcom tree
The surname Gruenwald is present 1 time(s) in your gedcom tree
The surname Gundersen is present 1 time(s) in your gedcom tree
The surname Gunkel is present 1 time(s) in your gedcom tree
The surname Haeuser is present 1 time(s) in your gedcom tree
The surname Halayko is present 2 time(s) in your gedcom tree
The surname Hansfield is present 1 time(s) in your gedcom tree
The surname Harrison is present 2 time(s) in your gedcom tree
The surname Harvey is present 1 time(s) in your gedcom tree
The surname Hathaway is present 4 time(s) in your gedcom tree
The surname Hawk is present 1 time(s) in your gedcom tree
The surname Haworth is present 1 time(s) in your gedcom tree
The surname Hayman is present 1 time(s) in your gedcom tree
The surname Heaton is present 2 time(s) in your gedcom tree
The surname Heuser is present 14 time(s) in your gedcom tree
The surname Hewitt is present 1 time(s) in your gedcom tree
The surname Higbee is present 3 time(s) in your gedcom tree
The surname Hitchcock is present 1 time(s) in your gedcom tree
The surname Hollingshead is present 4 time(s) in your gedcom tree
The surname Homiak is present 2 time(s) in your gedcom tree
The surname Horsfield is present 12 time(s) in your gedcom tree
The surname Ingram is present 1 time(s) in your gedcom tree
The surname Jackson is present 1 time(s) in your gedcom tree
The surname Johnson is present 2 time(s) in your gedcom tree
The surname Jones is present 1 time(s) in your gedcom tree
The surname Joyner is present 2 time(s) in your gedcom tree
The surname Kelly is present 1 time(s) in your gedcom tree
The surname Kenik is present 2 time(s) in your gedcom tree
The surname Kent is present 1 time(s) in your gedcom tree
The surname Ketteman is present 1 time(s) in your gedcom tree
The surname King is present 1 time(s) in your gedcom tree
The surname Konik is present 8 time(s) in your gedcom tree
The surname Kubiak is present 3 time(s) in your gedcom tree
The surname Kurtz is present 1 time(s) in your gedcom tree
The surname Lacy is present 11 time(s) in your gedcom tree
The surname Lama is present 1 time(s) in your gedcom tree
The surname Lane is present 1 time(s) in your gedcom tree
The surname Lang is present 2 time(s) in your gedcom tree
The surname Langellotti is present 2 time(s) in your gedcom tree
The surname Laud is present 3 time(s) in your gedcom tree
The surname Laudadio is present 3 time(s) in your gedcom tree
The surname Layer is present 4 time(s) in your gedcom tree
The surname Lewis is present 1 time(s) in your gedcom tree
The surname Lightowlers is present 1 time(s) in your gedcom tree
The surname Liguori is present 59 time(s) in your gedcom tree
The surname Liguoro (need To Verify) is present 1 time(s) in your gedcom tree
The surname Lindley is present 1 time(s) in your gedcom tree
The surname Lizzi is present 28 time(s) in your gedcom tree
The surname Lizzo is present 1 time(s) in your gedcom tree
The surname Lubeck is present 3 time(s) in your gedcom tree
The surname Luderitz is present 1 time(s) in your gedcom tree
The surname Lynn is present 1 time(s) in your gedcom tree
The surname Macaluso is present 2 time(s) in your gedcom tree
The surname Macdougall is present 1 time(s) in your gedcom tree
The surname Madden is present 9 time(s) in your gedcom tree
The surname Maffei is present 7 time(s) in your gedcom tree
The surname Maida is present 2 time(s) in your gedcom tree
The surname Manners is present 1 time(s) in your gedcom tree
The surname Marchesi is present 5 time(s) in your gedcom tree
The surname Martin is present 16 time(s) in your gedcom tree
The surname Martino is present 1 time(s) in your gedcom tree
The surname Matelli is present 1 time(s) in your gedcom tree
The surname Mattioli is present 4 time(s) in your gedcom tree
The surname Mazza is present 26 time(s) in your gedcom tree
The surname Mazza  is present 1 time(s) in your gedcom tree
The surname Mccann is present 1 time(s) in your gedcom tree
The surname Mccomic is present 1 time(s) in your gedcom tree
The surname Mccracken is present 1 time(s) in your gedcom tree
The surname Mcfarland is present 1 time(s) in your gedcom tree
The surname Mcintire is present 1 time(s) in your gedcom tree
The surname Mckinney is present 1 time(s) in your gedcom tree
The surname Mcpeek is present 4 time(s) in your gedcom tree
The surname Medina is present 5 time(s) in your gedcom tree
The surname Mendonsa is present 4 time(s) in your gedcom tree
The surname Merkle is present 1 time(s) in your gedcom tree
The surname Mesiano is present 70 time(s) in your gedcom tree
The surname Meyer is present 2 time(s) in your gedcom tree
The surname Meyers is present 14 time(s) in your gedcom tree
The surname Michalski is present 1 time(s) in your gedcom tree
The surname Mielke is present 11 time(s) in your gedcom tree
The surname Mielke Iii is present 1 time(s) in your gedcom tree
The surname Miller is present 11 time(s) in your gedcom tree
The surname Mirenzi is present 3 time(s) in your gedcom tree
The surname Mitchell is present 1 time(s) in your gedcom tree
The surname Moore is present 36 time(s) in your gedcom tree
The surname Morales is present 1 time(s) in your gedcom tree
The surname Morande is present 6 time(s) in your gedcom tree
The surname Morey is present 3 time(s) in your gedcom tree
The surname Morris is present 28 time(s) in your gedcom tree
The surname Mucciacciaro is present 3 time(s) in your gedcom tree
The surname Muffei is present 1 time(s) in your gedcom tree
The surname Myers is present 2 time(s) in your gedcom tree
The surname Mystery is present 1 time(s) in your gedcom tree
The surname Nace is present 1 time(s) in your gedcom tree
The surname Negovetic is present 1 time(s) in your gedcom tree
The surname Northorp is present 1 time(s) in your gedcom tree
The surname Nurge is present 3 time(s) in your gedcom tree
The surname Ohman is present 1 time(s) in your gedcom tree
The surname Orrick is present 8 time(s) in your gedcom tree
The surname Orrick(2) is present 1 time(s) in your gedcom tree
The surname Owens is present 1 time(s) in your gedcom tree
The surname Paettie is present 3 time(s) in your gedcom tree
The surname Parisi is present 1 time(s) in your gedcom tree
The surname Parolise is present 4 time(s) in your gedcom tree
The surname Pascali is present 1 time(s) in your gedcom tree
The surname Peattie is present 4 time(s) in your gedcom tree
The surname Pecce is present 1 time(s) in your gedcom tree
The surname Pence is present 2 time(s) in your gedcom tree
The surname Penington is present 1 time(s) in your gedcom tree
The surname Pense is present 12 time(s) in your gedcom tree
The surname Pense/pence is present 1 time(s) in your gedcom tree
The surname Perkins is present 3 time(s) in your gedcom tree
The surname Perrella is present 30 time(s) in your gedcom tree
The surname Perrella Or Lima is present 5 time(s) in your gedcom tree
The surname Petitto is present 1 time(s) in your gedcom tree
The surname Petrini is present 7 time(s) in your gedcom tree
The surname Piccio is present 1 time(s) in your gedcom tree
The surname Pisarz is present 1 time(s) in your gedcom tree
The surname Polisano is present 1 time(s) in your gedcom tree
The surname Potter is present 10 time(s) in your gedcom tree
The surname Prince is present 7 time(s) in your gedcom tree
The surname Prince, Sr. is present 1 time(s) in your gedcom tree
The surname Purcell is present 2 time(s) in your gedcom tree
The surname Rana is present 1 time(s) in your gedcom tree
The surname Reed is present 1 time(s) in your gedcom tree
The surname Reilly is present 4 time(s) in your gedcom tree
The surname Reinhart is present 15 time(s) in your gedcom tree
The surname Rezzolla is present 3 time(s) in your gedcom tree
The surname Rheims is present 1 time(s) in your gedcom tree
The surname Riccitiello is present 6 time(s) in your gedcom tree
The surname Rice is present 1 time(s) in your gedcom tree
The surname Riley is present 1 time(s) in your gedcom tree
The surname Ritter is present 3 time(s) in your gedcom tree
The surname Rizzelli is present 11 time(s) in your gedcom tree
The surname Roberto is present 1 time(s) in your gedcom tree
The surname Rodgers is present 3 time(s) in your gedcom tree
The surname Rogers is present 5 time(s) in your gedcom tree
The surname Rohs is present 4 time(s) in your gedcom tree
The surname Romano is present 1 time(s) in your gedcom tree
The surname Romeo is present 1 time(s) in your gedcom tree
The surname Ronzo is present 2 time(s) in your gedcom tree
The surname Rossetti is present 1 time(s) in your gedcom tree
The surname Rusin is present 1 time(s) in your gedcom tree
The surname Ryan is present 8 time(s) in your gedcom tree
The surname Sacchinelli is present 22 time(s) in your gedcom tree
The surname Sacchitello is present 1 time(s) in your gedcom tree
The surname Sachinelli is present 1 time(s) in your gedcom tree
The surname Salassa is present 5 time(s) in your gedcom tree
The surname Salazar   is present 1 time(s) in your gedcom tree
The surname Salvatore is present 1 time(s) in your gedcom tree
The surname Sarraiocco is present 1 time(s) in your gedcom tree
The surname Scannapieco is present 2 time(s) in your gedcom tree
The surname Schweizkert is present 1 time(s) in your gedcom tree
The surname Scotto is present 1 time(s) in your gedcom tree
The surname Scull is present 1 time(s) in your gedcom tree
The surname Seckinger is present 1 time(s) in your gedcom tree
The surname Seeny is present 1 time(s) in your gedcom tree
The surname Seifert is present 1 time(s) in your gedcom tree
The surname Serra is present 1 time(s) in your gedcom tree
The surname Shackelford is present 3 time(s) in your gedcom tree
The surname Shaw is present 24 time(s) in your gedcom tree
The surname Shearn is present 15 time(s) in your gedcom tree
The surname She Is English is present 1 time(s) in your gedcom tree
The surname Shepherd is present 5 time(s) in your gedcom tree
The surname Sher is present 1 time(s) in your gedcom tree
The surname Sherwood is present 3 time(s) in your gedcom tree
The surname Short is present 1 time(s) in your gedcom tree
The surname Shpadler is present 3 time(s) in your gedcom tree
The surname Sierra is present 10 time(s) in your gedcom tree
The surname Silva is present 1 time(s) in your gedcom tree
The surname Siragusa is present 1 time(s) in your gedcom tree
The surname Sitkowska is present 1 time(s) in your gedcom tree
The surname Smigiel is present 1 time(s) in your gedcom tree
The surname Somers is present 2 time(s) in your gedcom tree
The surname Sopo is present 1 time(s) in your gedcom tree
The surname Soucie is present 1 time(s) in your gedcom tree
The surname Spector is present 2 time(s) in your gedcom tree
The surname Steinman is present 2 time(s) in your gedcom tree
The surname Stotlemyer is present 4 time(s) in your gedcom tree
The surname Strait is present 2 time(s) in your gedcom tree
The surname Strickland is present 4 time(s) in your gedcom tree
The surname Strickland(1) is present 1 time(s) in your gedcom tree
The surname Tarka is present 2 time(s) in your gedcom tree
The surname Taylor is present 5 time(s) in your gedcom tree
The surname Thompson is present 5 time(s) in your gedcom tree
The surname Tighe is present 2 time(s) in your gedcom tree
The surname Tighe Iii is present 1 time(s) in your gedcom tree
The surname Titone is present 2 time(s) in your gedcom tree
The surname Tomlinson is present 6 time(s) in your gedcom tree
The surname Torgerson is present 2 time(s) in your gedcom tree
The surname Treccagnoli is present 1 time(s) in your gedcom tree
The surname Tropiano is present 2 time(s) in your gedcom tree
The surname Trubiano.   Trupiano is present 1 time(s) in your gedcom tree
The surname Trupiano is present 4 time(s) in your gedcom tree
The surname Twisleton is present 2 time(s) in your gedcom tree
The surname Unknown is present 1 time(s) in your gedcom tree
The surname Urie is present 6 time(s) in your gedcom tree
The surname Vacca is present 19 time(s) in your gedcom tree
The surname Vachet is present 1 time(s) in your gedcom tree
The surname Valley is present 1 time(s) in your gedcom tree
The surname Vergulti is present 1 time(s) in your gedcom tree
The surname Verroti is present 1 time(s) in your gedcom tree
The surname Vespucci is present 1 time(s) in your gedcom tree
The surname Vick is present 27 time(s) in your gedcom tree
The surname Viola is present 3 time(s) in your gedcom tree
The surname Viviana is present 1 time(s) in your gedcom tree
The surname Wallace is present 1 time(s) in your gedcom tree
The surname Walling is present 1 time(s) in your gedcom tree
The surname Walsmith is present 3 time(s) in your gedcom tree
The surname Waters is present 1 time(s) in your gedcom tree
The surname Watkins is present 1 time(s) in your gedcom tree
The surname Weber is present 3 time(s) in your gedcom tree
The surname Welch is present 1 time(s) in your gedcom tree
The surname Weybourne is present 1 time(s) in your gedcom tree
The surname White is present 1 time(s) in your gedcom tree
The surname Whitehead is present 123 time(s) in your gedcom tree
The surname Whithead is present 7 time(s) in your gedcom tree
The surname Williams is present 1 time(s) in your gedcom tree
The surname Wilson is present 3 time(s) in your gedcom tree
The surname Woodward is present 1 time(s) in your gedcom tree
The surname Woody is present 2 time(s) in your gedcom tree
The surname Wright is present 3 time(s) in your gedcom tree
The surname Wrigley is present 1 time(s) in your gedcom tree
The surname Young is present 23 time(s) in your gedcom tree
The surname Zandomenego is present 3 time(s) in your gedcom tree
The surname Ziccardi is present 6 time(s) in your gedcom tree

As always, I hope this blog post is helpful,
Robert

Note: If anyone would like to see this utility online, let me know and I'll add it to my website.