Is an IP address considered “personal information” under the CCPA?

The California Consumer Privacy Act (“CCPA”) was enacted in early 2018 as a political compromise to stave off a poorly drafted, and plaintiff’s friendly ballot initiative.  Although the CCPA is scheduled to go into force in early 2020, there is a great deal of confusion regarding the requirements of the CCPA, including the degree to which it aligns with other privacy regulations such as the European General Data Protection Regulation (“GDPR”).

To help address that confusion, BCLP published the California Consumer Privacy Act Practical Guide, and is publishing a multi-part series that discusses the questions most frequently asked by clients concerning the CCPA.

Q. Is an IP address considered “personal information” under the CCPA?

Sometimes.

Personal information is defined by the CCPA as “information that identifies, relates to, describes, is capable of being associated with, or could reasonably be linked, directly or indirectly, with a particular consumer or household.” While the Act provides a list of examples of personal information – which explicitly includes “Internet Protocol Address” – it qualifies the examples by stating that they only fall within the definition of personal information if they identify, relate to, describe, are “capable of being associated with,” or “could be reasonably be linked” with a particular person. 

In order to determine whether an IP address is linked to a person, it is important to understand what an IP address represents.  Computers that access the internet are assigned either a static or a dynamic Internet Protocol (“IP”) address.  A static IP address does not change over time (i.e., it is dedicated to a particular computer to that network or user).  A dynamic IP address is assigned by a network when a computer connects and, thus, changes over time (e.g., each time that the user reconnects to the network). 

When examining whether a static or a dynamic IP address constitutes personal information, California courts may look to how European regulators viewed IP addresses in the context of the European GDPR’s definition of “personal data” which is substantially similar to the CCPA’s definition of “personal information.”  The Article 29 Working Party took the position that because static IP addresses do not change, and IP addresses can be used to identify the computer (or user), “[t]he possibility exists in many cases . . . of linking the user’s IP address to other personal data . . . that identify him/her, especially if use is made of invisible processing means to collect additional data on the user (for instance, using cookies containing a unique identifier)….”  The Working Party further recognized that because of the nature of dynamic IP addresses in some cases “a third party can get to know the dynamic IP address of a user but not be able to link it to other data concerning this person that would make his/her identification possible.”

Source: https://www.bclplaw.com/en-US/thought-leadership/privacy-faqs-is-an-ip-address-considered-personal-information.html

How To Implement Adobe Analytics in Hybrid App

For the purposes of this conversation, I’ll use the following definitions:

  • Native apps are built for a specific platform with the platform SDK, tools and languages, typically provided by the platform vendor (e.g. xCode/Objective-C for iOS, Eclipse/Java for Android, Visual Studio/C# for Windows Phone).
  • Mobile Web apps are server-side apps, built with any server-side technology (PHP, Node.js, ASP.NET) that render HTML that has been styled so that it renders well on a device form factor.
  • Hybrid apps, like native apps, run on the device, and are written with web technologies (HTML5, CSS and JavaScript). Hybrid apps run inside a native container, and leverage the device’s browser engine (but not the browser) to render the HTML and process the JavaScript locally. A web-to-native abstraction layer enables access to device capabilities that are not accessible in Mobile Web applications, such as the accelerometer, camera and local storage.

Hybrid apps are a great option for you if you:

  1. Want to target multiple mobile platforms
  2. Want to take advantage of device capabilities like geolocation, accelerometer or the camera
  3. Want the app to be useable when the device is offline
  4. Don’t need the advanced graphics performance that you can only get from a native app.

Hybrid apps are built with web technologies which means there are millions of web developers who already have the base skill set to build mobile apps.

Adobe Analytics tracking can be enabled for Hybrid app by creating 2 web property in Adobe Launch

How To Set up a local web-server on your computer

You will need to host a sample website for the hands-on lab. The sample PHP web pages will be provided during the session.

You can host the site in your local server (localhost) if you already have one configured on your computer. You can also use an online web-host if you have access to. Skip this Exercise in that case.

The following steps will guide you install a local web-server on your computer.

Objective:

Successfully Download and install a local-server software. Verify access to their default home page in your web browser.

Steps:

We will use XAMPP in this example. XAMPP is a very easy to install Apache Distribution of Linux, Solaris, Windows, and Mac OS X. The package includes the Apache web server, MySQL, PHP, Perl, an FTP server and phpMyAdmin. With that, you can have fun with your own website/scripting experiments in future with XAMPP on your machine.

(Alternatively, you can choose to install any popular package such as LAMP, WAMP, MAMP etc.)

  1. Download latest XAMPP software from: https://www.apachefriends.org/download.html
  2. Install with default settings. Just notice the directory where it’s getting installed (e.g. C:\XAMPP)
  3. After install, open the “XAMPP Control” app in your computer. Then start “Apache”:
  • Apache server should start with default ports: 80/443:

That’s your local web-server switched On!

  • Troubleshooting: If Apache could not start on default ports, probably something (e.g. IIS, Skype etc.) was blocking/using the default ports.

Consider changing the ports configured for Apache (try using some other ports e.g. 88 and 488). You can do that by clicking on “Config” and then editing and saving the files: httpd.conf and httpd-ssl.conf:

In those configuration files, find the line that mentions Listening on the ports (80 in httpd.conf and 443 in httpd-ssl.conf) and change those numbers (you can try 88 and 444 respectively).

After you save those two configuration files. Re-start with Step#3 (Starting Apache)

  • After a successful start of Apache, in your browser, type “localhost” as the URL and proceed. If you had used a port other than the default, you will need to add the port number to the URL separated by colon e.g. “localhost:88

You should be redirected to XAMPP Dashboard and see a welcome page like this:

(with default settings)

(with HTTP port changed to 88)

  • Locate your XAMPP install directory in your computer. You should see a sub-directory “htdocs“:

Your websites and web pages usually reside in that sub-directory. We will come back to this during the Lab.

How To Clear JAVA cache Of Computer

To clear your Java cache in Windows:

  1. Click Start > Control Panel.
  2. Locate and double click the Java icon in the Control Panel.
  3. Click Settings under Temporary Internet Files.
  4. Click Delete Files.
  5. Select all boxes and click OK on Delete Temporary Files window.
  6. Click OK on Temporary Files Settings window.
  7. Click OK to close the Java Control Panel.

To clear your Java cache in Mac OS X:

  1. Double click your Mac hard drive.
  2. Double click Applications.
  3. Double click Utilities.
  4. Double click Java Preferences.
  5. Click the Network tab.
  6. Click the Delete Files… button.
  7. You are prompted to delete your temporary files for Java. Make sure all boxes are selected with check marks. Click OK.
  8. Close the Java Preferences window.

Uploading Data through data source using Adobe Analytics API 1.4

This is to test that what happen to data sources FTP location when data source data is uploaded through API 1.4 using postman

1.Create the data source through Analytics UI

  • Login to SC 15
  • Click on Admin->Data Sources

2.Create Transaction ID data sources

3.Using Postman send POST request on https://api.omniture.com/admin/1.4/rest/?method=DataSources.UploadData

4.In Pre-request Script

var uuid = function() {};

uuid.v4 = function() {

    return ‘xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx’.replace(/[xy]/g, function(c) { var r = Math.random()*16|0, v = c == ‘x’ ? r : (r&0x3|0x8); return v.toString(16); });

};

var WSSE = function(username, secret) {

    this.username = username;

    this.secret = secret;

};

WSSE.prototype.getHeader = function() {

    var nonce = uuid.v4();

    var created = new Date().toISOString();

    var hashString = nonce + created + this.secret;

    var digest = CryptoJS.SHA256(hashString).toString(CryptoJS.enc.Base64);

    var b64nonce = CryptoJS.enc.Latin1.parse(nonce).toString(CryptoJS.enc.Base64);

    var header = “UsernameToken”;

    header += ” Username=\”” + this.username + “\”,”;

    header += ” PasswordDigest=\”” + digest + “\”,”;

    header += ” Nonce=\”” + b64nonce + “\”,”;

    header += ” Created=\”” + created + “\”,”;

    header += ” Algorithm=\”SHA256\””;

    return { ‘X-WSSE’: header };

};

var wsse = new WSSE(‘shared secret’, ‘password’);

postman.setEnvironmentVariable(“x-wsse”, wsse.getHeader()[‘X-WSSE’])

5.Under body

{

  “columns”: [

     “Date”,

        “Product”,

         “Orders”,

         “transactionID”

  ],

  “dataSourceID”: “2”,

  “jobName”: “Product returned”,

  “reportSuiteID”: “lscsgeekourpc”,

  “rows”: [

    [

      “01/11/2019/06/00/00”,

      “Shirt”,

      “1”,

      “1235”

    ]

  ]

}

6.Under Header set WSSE


Result:

For API 1.4 documentation check : https://github.com/AdobeDocs/analytics-1.4-apis

Note :Grab the data source ID from the URL when you open the data source in UI

Once it appears true as result than in FTP of Data source a SOAP folder is created which have a file of data source, later on, which process.

Processing pauses if the size exceeds 50 MB and does not resume until the total is below 50 MB. To limit delays in generating reports, do not upload more than 90 days of data per day.

Reference : https://marketing.adobe.com/resources/help/en_US/sc/datasources/datasrc_faq.html

Automation Software Zapier & IFTTT

Zapier is automation software allowing one business app to speak to another app,it is very similar to product called IFTTT,which is little more open-sourced but this is more business focused.It allows to take repeating tasks and automate them even across different applications.It can be an enormous time-saver.IFTTT is free and Zapier has paid model.

How To Open and Handle Large CSV Files

Recently I was struggling to open Large CSV files and I was using Excel 2013 on Windows 7 64-bit machine.When I was opening big CSV it was throwing error.

With Excel 2013,it is said that the  limit is now gone the only restriction is your machines memory. However, you can still not edit the raw data, only handle (DAX) and aggregate (pivot tables) them! The row limit in Excel 2013 is still 1,048,576.

At that point I started searching for Software which can open large file,then I came across Delimit and it was very helpful.

Features are as follow:

  1. Quickly open any delimited data file.
  2. Edit any cell.
  3. Easily convert files from one delimiter to another like CSV to TAB.
  4. Split-up any delimited file into file parts of equal size.
  5. Join multiple delimited files into one resulting file.
  6. Quickly select which columns to extract and in which order.
  7. Extract data from any delimited file by specifying the columns,rows and/or filter to apply.
  8. Sort any delimited data file based on cell content.
  9. Remove duplicate rows based on user specified columns.
  10. Bookmark any cell for quick subsequent access.
  11. Open large delimited data files; 100s of MBs or GBs in size!
  12. Open data files up to 2 billion rows and 2 million columns large!
  13. Work with: character delimited, string delimited, fixed column width or just plain text files.
  14. Quickly see all your bookmarks, double-click to jump to any of them or click to rename.
  15. Keep track of long running operations.
  16. Keep track of the current selection.
  17. Scroll to any part of the file or split the view into multiple panes.
  18. Freeze the 1st row of any file.
  19. Open multiple files and quickly switch between them.
  20. Configure built-in and custom file delimitation rules for automatic parsing of files.

It is available with 15 day free Trial and can be downloaded from http://www.delimitware.com/

Other option to open big file is Sublime Text.It is a proprietary cross-platform source code editor with a Python application programming interface.Click here to download.

Recently I came across another tool which is also helpful: https://www.emeditor.com/download/