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: The 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.

Wednesday, May 20, 2015

How to convert an Integer to a String in Java

You must be stuck trying to convert a Java wrapper class (E.g., Integer) or primitive (e.g., int) to or from a String.  Well, it's a lot easier than you may think... read on.

Converting a Wrapper Class to a Java String and Vice Versa

The following code example shows various ways to convert Integers in Java to Strings.  In addition, the code shows how to covert Strings to Double values.  You can follow these approaches for the other wrapper classes as well.

public class ConversionApp {

   
  public static void main(String[] args) {
       

        //
    // Convert Integer to String
    //
 
    final Integer LARGEST_BUNCH_OF_BANANAS = 473;
       
    final String b1 = Integer.toString(LARGEST_BUNCH_OF_BANANAS);
    final String b2 =  LARGEST_BUNCH_OF_BANANAS.toString() ;
 

    final String b3 = String.valueOf(LARGEST_BUNCH_OF_BANANAS);
       
    final String b4 =  LARGEST_BUNCH_OF_BANANAS + "" ;
    final String b5 =  "" + LARGEST_BUNCH_OF_BANANAS ;
       
    System.out.println(b1 + " " + b2 + " " + b3 + " " + b4 + " " + b5);


   
//
    // Convert String to Double
   
//
       
    String averageBananasInABunch = "5.0";


    double d1 = Double.parseDouble(averageBananasInABunch); // Unboxing
      
    Double d2 = Double.valueOf(averageBananasInABunch);
       
    System.out.println(d1 + " " + d2);
  }
}


And for those who are interested, this is what is printed:

$ 473 473 473 473 473
$ 5.0 5.0


Do you have any questions about other conversions in Java?  Ask in the comments below, and I'll supply you with some code examples.

-- Robert

How to Print Currency Symbols in Java

Printing currency Symbols in Java is easy with Unicode.  First, go to the Unicode Website Charts and navigate to the Currency Symbols:



Next, write a small demo program that will print out some characters for you:







I hope this was helpful.

-- Robert

* Note that once you get the characters, you can inline them:
System.out.print("₠ ₡ ₢ ₣ ₤ ₥ ₦ ₧ ₨ ₩ ₪ ₫ € ₭ ₮ ₯");

Tuesday, May 19, 2015

Google Maps needs to do more in filtering out racial slur searches

News has just broke about doing a Google Maps search on "[RACIAL-SLUR] HOUSE" will direct you to the Whitehouse, as reported by TMZ.

So, I was wondering if any other racial slurs may have been improperly easter-egg'd into Google Maps searching as well....

So I searched on  a few, and Google Maps brought me to various locations.  The exact slurs, I've decided to remove from this blog, as I feel that these slurs should not be used in any context.

Anyways, at first glance, it appears as if, a racist may have altered the searches.  Although, it's always possible (and much more likely) that the computer algorithm may just be associating terms from articles and comments found on the web. That is, Google may force a link rather than return nothing.  Either way, these racist-appearing search results are clearly wrong and disturbing to present and it needs to be fixed immediately.  But how do you exclude racial slurs that may sometimes be used in non-racist tenses?  Well, that's for Google to figure out.

I wonder if any more ethnic-slur searches can be found where places are directed to, to which appears to be racist... that is, before the redirection is fixed (or the automated links are removed)?  If you find any, please (appropriately) include them in the comments below.

Note that I find this to be very sad, and I feel uncomfortable with using this term above and other terms in this blog, but it rightly should be exposed, so it can be addressed and fixed.

In summary, I've observed that all racial slurs (of any race) entered into Google Map searching followed by the word 'house', a similar word, or even no other word... will result in a provided location.  And depending on the result, many may feel it was a racist result.  However,  I would like to give Google the benefit of the doubt with this being a flawed search engine, but it does appear as if someone could have intentionally programmed in these redirections.  I'm hoping that the former thought is true and that Google can simply adjust the code so these things don't happen again. 

My conclusion (again): Even though, I've been looking at both sides of this, I think it's just a sour search algorithm that needs to be adjusted.  Google should apology, which they did, and they should fix it, which they are doing.  I find it very improbable that any one, or even a set of people at Google or anywhere else did this intentionally or maliciously.  It's just a very unfortunately thing that happened (or is continuing to happen).

-- Robert

Monday, May 18, 2015

What is the Meaning of Life?

"The meaning of life is our knowing participation with the greater powers around us, in us and within us."
-- Robert Liguori

























What do you consider to be the meaning of life? Please share your thoughts in the comments section below. :)

-- Robert