Sunday, July 29, 2018

My first Rome trip (between July 3ed to 6th) Day-1 & 2

Following is our complete trip summary

1) 3ed. We started from London Gatwick Airport and reached Rome around 10.30

I made earlier hotel reservation around  Vatican . So i at the airport,  we are walking towards bus station. However, on the way,  i nice shuttle operator stopped me and explains, i will offer $10 Euro ride to Vatican which cheaper than the train option. So i took Shuttle service for $40 ( family of 4)
We reached our apartment place. After quick refresh/baths and quick lunch ( yummy Pizza) we headed to Vatican  Museums
( i made reservation when i was USA, Following is the website. https://biglietteriamusei.vatican.va/musei/tickets/do_

Since, i have reservation, i simply walked directly to the entrance. 

( if you dont plan a head, then you will struck in long lines for 2+ hours. Lines under direct sun light.
Outside, i noticed lot's of people advertising, no lines. direct check etc for extra $)

Lot's of rush but we managed to enter the Museum by 2.30 PM. ( my actual timing was 3PM. But no one care. So many people, all they care is the entrance ticket)


Few advice to family folks. ( before entrance, eat a lot. + carry lot's of liquids. Water etc. 

During our visit time, temperature is around 33 degree C)

We stayed 3 hours in the  ( there is a short cut to reach  Vatican Basilica by skipping 40% of museum. But we choose to watch all rooms as much as possible.)


around 7PM we reached our hotel room. this 10 minutes walk to Vatican/Vatican Basilica)

After some refresh, we went to dinner.  Again pizza/ drinks for dinner.)

We wrapped our first day like this


2ed Day:

by 7.30 we finished our breakfast and walked to St. Peter's Basilica)
No many people even on Wednesday 7.30 AM.
We did spend quality time in the St. Peter's Basilica and outside. Nearly two hour gone just like that.

Later we walked to nearby but-stop and tourist center to purchase Roma passes. ( these centers are open from 9.30 AM.   Caution: they will not accept Cash So you have use Credit card only. For parent we bought Roma passes and for kids, i took 3 day bus passes only.  Kids under 18 are free for most of the attractions in our list. So we choose Roma passes for parents only.)

After that we picked a bus to Termi station and later one bus to catch Triva fountain.  (Initially finding bus numbers/stop is little tricky. But my older son cracked the code. Will write more on that topic later.)








Sunday, July 15, 2018

2018 summer vacation UK/ROme

Location:British Museum

Interesting  idols from INDIA/south Asia  gallery



.

2018 Summer UK/Rome trip cntd 2

Location:Stonehenge   Day-3

Will add more later




2018 UK/Rome trip - part 1

Location: Windsor Castle , UK.
Day 1

I will add more content later.






Windsor Castle Guard change demo (only one guard)


Thursday, March 15, 2018

VIN anonymization

Data anonymization is a type of information sanitation whose intent is privacy protection. It is the process of either encrypting or removing personally identifiable information from data sets, so that the people whom the data describe remain anonymous.
This is a sample to anonymize VINs i.e. systems sends vehicle data however it is difficult to trace-back to the original VIN except the source system,

Old code.. ( may be usefull. When i did this POC, i tested for 1 millions VINs.
SHA-256 hash function really worked well for this set. Never tested this for 20 million.. But based on N grams this model will work


import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StreamTokenizer;
import java.io.Writer;
import java.util.*;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


///goal is to read  millions of vins and aonymization the last 7 digits.
///this way VIN & its data can be share to anyone. however souring systems needs to trace back to 
// original VIN ... Steps... Use Java crypto API hash function w.r.t. simple java function
//So far no collisions on one million.. in case collisions, 
///thoughts are generating deterministic N grams based on hashed string..

public class VINAnonymization  {

   
   public static void main(String[] args) throws IOException {
   String stringToEncrypt ="FIXME";
       int ctr = 0;
    BufferedReader br = new BufferedReader(new FileReader("D:\\demo\\lvins.txt")); 
    
  try{
  
       MessageDigest messageDigest; 
       messageDigest = MessageDigest.getInstance("SHA-256");
       HashMap anomVinMap = new HashMap();
   StreamTokenizer st = new StreamTokenizer(br);
   String line = null;

   int loop =0;
while ((line = br.readLine()) != null){

   messageDigest.update(line.getBytes());
   byte[] mdbytes = messageDigest.digest();

      StringBuffer hexString = new StringBuffer();
    for (int i=0;i
        hexString.append(Integer.toHexString(0xFF & mdbytes[i]));
    }
    
    String anoVin = null;
  String nGramString = LRNGramString(hexString,7,0);
  if ( nGramString == null){
  System.out.println(loop+++";"+hexString.toString());
  continue;
  }
  anoVin = line.substring(0,9).concat(nGramString);
  if ( anomVinMap.containsKey(anoVin) ) {
  System.out.println("Collionson for a VIN-->"+anoVin+ "K:"+0);
  ctr++;
  ///Do this for two times... generate 3 ot 10 N grams in single call  & loop it
  //For now this is OK
  nGramString = LRNGramString(hexString,7,1);
  if ( nGramString == null) continue;
  anoVin = line.substring(0,9).concat(nGramString);
  if ( anomVinMap.containsKey(anoVin) ) {
  System.out.println("Collionson for a VIN-->"+anoVin+ "K:"+1);
  }else{
  anomVinMap.put(anoVin, line);
  }
  ctr++;
  nGramString = LRNGramString(hexString,7,2);
  if ( nGramString == null) continue;
  anoVin = line.substring(0,9).concat(nGramString);
  if ( anomVinMap.containsKey(anoVin) ) {
  System.out.println("Collionson for a VIN-->"+anoVin+ "K:"+2);
  }else{
  anomVinMap.put(anoVin, line);
  }
  }else{
  anomVinMap.put(anoVin, line);
  }
    messageDigest.reset();
  }

///Dump the map to CSV file or text file for comparisons
  System.out.println("Anonymization VIN map count"+anomVinMap.size());
  String eol = System.getProperty("line.separator");

  try (Writer writer = new FileWriter("D:\\demo\\out1.csv")) {
  for (Map.Entry entry : anomVinMap.entrySet()) {
    writer.append(entry.getKey())
          .append(',')
          .append(entry.getValue())
          .append(eol);
  }
  writer.flush();
  writer.close();
} catch (IOException ex) {
  ex.printStackTrace(System.err);
      }

  

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if (br != null ){
br.close();
}
}

         
   }
   
   //validation later
   static String LRNGramString (StringBuffer orgString, int legth, int position ){
   if ( orgString == null ) return null;
   return orgString.substring(position,legth).toUpperCase();
   
   }

}