Thursday, October 29, 2020

Scala & Spark for Managing & Analyzing Big Data (Using Machine Learning)


Managing & Analyzing Big Data using Apache Scala & Apache Spark


In this blog we will see how to use Scala and Spark to analyze Big Data. When I started understanding the Big Data world everything was about Hadoop. As you can see from my previous blogs:

There are 10 essential V's in Big Data (As published in the International Research Journal of Engineering and Technology (IRJET) e-ISSN: 2395-0056)


Lots have changed ever since. Spark is quickly becoming one of the most powerful Big Data tools as it can run programs up to 100 times faster than Hadoop MapReduce. However Spark is an in-memory operation and If velocity is not at the top of your priorities list, go with MapReduce because it can handle avalanches of data without eating up too much memory. Hadoop first stores the data and then processes it. Its intended purpose was to process data that was collected from lots of different sources. We need to select which V is critical for our business and the problem statement at hand. I will focus on Velocity for the moment.

Since Spark is written in Scala it can perform the Big Data tasks faster than any other API for Spark. 
This blog is based on an Udemy course using which I learned the latest Spark 2.0 methods and used the latest MLib, Spark SQL, and DataFrames! 


For Installation guidance and Basics you can follow my previous blogs: 

SCALA: Getting Started

Scala is a general-purpose programming language providing support for both object-oriented programming and functional programming. The language has a strong static type system. Designed to be concise, many of Scala's design decisions are aimed to address criticisms of Java. In-fact the Scala source code is compiled to Java bytecode to run on Java Virtual Machine (JVM). If you are coming from a Java background it is an added advantage as Java libraries may be directly used in Scala. Scala is so popular mainly because of Apache Spark, which is written in Scala.

Apache Spark: Getting Started

Apache Spark is an open-source distributed general-purpose cluster-computing framework. Spark provides an interface for programming entire clusters with implicit data parallelism and fault tolerance.
In order to understand Scala in the context of BigData, we need to understand the concept of BigData as I mentioned at the starting of this Blog.


Kinshuk Dutta
New York

Thursday, April 23, 2020

SOLR Search - CookBook

SOLR 

Solr is the popular, blazing-fast, open source enterprise search platform built on Apache Lucene.

This blog has a curated list of SOLR packages and resources. It starts with how to install and then show some basic implementation and usage.

Wednesday, January 30, 2019

Introduction to Data Science with R & Python

What is Data Science?



Data science is an interdisciplinary field that uses scientific methods, processes, algorithms, and systems to extract knowledge and insights from many structural and unstructured data. Data science is related to data mining, machine learning, and big data.

Data science is a "concept to unify statistics, data analysis, and their related methods" in order to "understand and analyze actual phenomena" with data. It uses techniques and theories drawn from many fields within the context of mathematics, statistics, computer science, domain knowledge, and information science.

R or Python?

Why use R for Data Science?

1. Academia:

R is a very popular language in academia. Many researchers and scholars use R for experimenting with data science. Many popular books and learning resources on data science use R for statistical analysis as well. Since it is a language preferred by academicians, this creates a large pool of people who have a good working knowledge of R programming. Putting it differently, if many people study R programming in their academic years then this will create a large pool of skilled statisticians who can use this knowledge when they move to the industry. Thus, leading to increased traction towards this language.

Read More: Suitability of Python for Artificial Intelligence
2. Data wrangling:

Data wrangling is the process of cleaning messy and complex data sets to enable convenient consumption and further analysis. This is a very important and time taking process in data science. R has an extensive library of tools for data and database manipulation and wrangling. Some of the popular packages for data manipulation in R include:
dplyr Package – Created and maintained by Hadley Wickham, dplyr is best known for its data exploration and transformation capabilities and highly adaptive chaining syntax.
data.table Package – It allows for faster manipulation of data set with minimum coding. It simplifies data aggregation and drastically reduces the compute time.
readr Package – ‘readr’ helps in reading various forms of data into R. By not converting characters into factors it performs the task at 10x faster speed.
3. Data visualization:

Data visualization is the visual representation of data in graphical form. This allows analyzing data from angles that are not clear in unorganized or tabulated data. R has many tools that can help in data visualization, analysis, and representation. The R packages ggplot2 and ggedit for have become the standard plotting packages. While the ggplot2 package is focused on visualizing data, ggedit helps users bridge the gap between making a plot and getting all of those pesky plot aesthetics precisely correct.
4. Specificity:

R is a language designed especially for statistical analysis and data reconfiguration. All the R libraries focus on making one thing certain – to make data analysis easier, more approachable, and detailed. Any new statistical method is first enabled through R libraries. This makes R a perfect choice for data analysis and projection. Members of the R community are very active and supportive and they have a great knowledge of statistics as well as programming. This all gives R a special edge, making it a perfect choice for data science projects.
5. Machine learning:

At some point in data science, a programmer may need to train the algorithm and bring in automation and learning capabilities to make predictions possible. R provides ample tools to developers to train and evaluate an algorithm and predict future events. Thus, R makes machine learning (a branch of data science) a lot more easy and approachable. The list of R packages for machine learning is really extensive. R machine learning packages include MICE (to take care of missing values), rpart & PARTY (for creating data partitions), CARET (for classification and regression training), randomFOREST (for creating decision trees), and much more.

Read More: 5 Machine Learning Trends to Follow
6. Availability:

R programming language is open source and is not severely restricted to operating systems. Being open-source, R is covered under the GNU General Public License Agreement. This makes it highly cost-effective for a project of any size. Since it is open-source, developments in R happen at a rapid scale and the community of developers is huge. All of this, along with a tremendous amount of learning resources makes R programming a perfect choice to begin learning R programming for data science. Because there are many new developers exploring the landscape of R programming it is easier and cost-effective to recruit or outsource to R developers.


Why use Python for Data Science?

Python is the programming language of choice for data science. Here’s a brief history:

Installing R on Mac OS


If you have followed my blogs then you must be aware that I use HomeBrew to install packages on Mac. In order to install R, I used the same.

$ brew install R
Updating Homebrew...
==> Auto-updated Homebrew!
Updated Homebrew from 76b3c3dbe to 0f270d811.
Updated 4 taps (homebrew/cask-versions, homebrew/core, homebrew/cask and adoptopenjdk/openjdk).
==> New Formulae
anyenv                                                                        aws-iam-authenticator                                                         s3ql
==> Updated Formulae
ffmpeg           bison              consul             erlang             gibo               helmfile           kotlin             mill               plantuml           sshuttle           visp               youtube-dl
jenkins           bundletool         coreutils          exploitdb          gmsh               htmldoc            krakend            minio              presto             switch-lan-play    whois
ask-cli            certbot            dnsperf            ffmpeg@2.8         gnupg-pkcs11-scd   hub                kubectx            minio-mc           pulumi             topgrade           wtf
aws-sdk-cpp        checkstyle         easyengine         fn                 gnutls             jbake              libgit2            nim                pycodestyle        traefik            xcodegen
bettercap          composer           emscripten         fonttools          goreleaser         jhipster           libgpg-error       nss                siril              unrar              you-get

==> Installing dependencies for r: gettext, libpng, openblas and pcre
==> Installing r dependency: gettext
==> Downloading https://homebrew.bintray.com/bottles/gettext-0.19.8.1.mojave.bottle.tar.gz
######################################################################## 100.0%
==> Pouring gettext-0.19.8.1.mojave.bottle.tar.gz
==> Caveats
gettext is keg-only, which means it was not symlinked into /usr/local,
because macOS provides the BSD gettext library & some software gets confused if both are in the library path.

If you need to have gettext first in your PATH run:
  echo 'export PATH="/usr/local/opt/gettext/bin:$PATH"' >> ~/.bash_profile

For compilers to find gettext you may need to set:
  export LDFLAGS="-L/usr/local/opt/gettext/lib"
  export CPPFLAGS="-I/usr/local/opt/gettext/include"

==> Summary
🍺  /usr/local/Cellar/gettext/0.19.8.1: 1,935 files, 16.9MB
==> Installing r dependency: libpng
==> Downloading https://homebrew.bintray.com/bottles/libpng-1.6.36.mojave.bottle.tar.gz
######################################################################## 100.0%
==> Pouring libpng-1.6.36.mojave.bottle.tar.gz
🍺  /usr/local/Cellar/libpng/1.6.36: 27 files, 1.2MB
==> Installing r dependency: openblas
==> Downloading https://homebrew.bintray.com/bottles/openblas-0.3.5.mojave.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring openblas-0.3.5.mojave.bottle.1.tar.gz
==> Caveats
openblas is keg-only, which means it was not symlinked into /usr/local,
because macOS provides BLAS and LAPACK in the Accelerate framework.

For compilers to find openblas you may need to set:
  export LDFLAGS="-L/usr/local/opt/openblas/lib"
  export CPPFLAGS="-I/usr/local/opt/openblas/include"

For pkg-config to find openblas you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/openblas/lib/pkgconfig"

==> Summary
🍺  /usr/local/Cellar/openblas/0.3.5: 21 files, 120.7MB
==> Installing r dependency: pcre
==> Downloading https://homebrew.bintray.com/bottles/pcre-8.42.mojave.bottle.tar.gz
######################################################################## 100.0%
==> Pouring pcre-8.42.mojave.bottle.tar.gz
🍺  /usr/local/Cellar/pcre/8.42: 204 files, 5.5MB
==> Installing r
==> Downloading https://homebrew.bintray.com/bottles/r-3.5.2_2.mojave.bottle.tar.gz
######################################################################## 100.0%
==> Pouring r-3.5.2_2.mojave.bottle.tar.gz
🍺  /usr/local/Cellar/r/3.5.2_2: 2,116 files, 55.7MB
==> Caveats
==> gettext
gettext is keg-only, which means it was not symlinked into /usr/local,
because macOS provides the BSD gettext library & some software gets confused if both are in the library path.

If you need to have gettext first in your PATH run:
  echo 'export PATH="/usr/local/opt/gettext/bin:$PATH"' >> ~/.bash_profile

For compilers to find gettext you may need to set:
  export LDFLAGS="-L/usr/local/opt/gettext/lib"
  export CPPFLAGS="-I/usr/local/opt/gettext/include"

==> openblas
openblas is keg-only, which means it was not symlinked into /usr/local,
because macOS provides BLAS and LAPACK in the Accelerate framework.

For compilers to find openblas you may need to set:
  export LDFLAGS="-L/usr/local/opt/openblas/lib"
  export CPPFLAGS="-I/usr/local/opt/openblas/include"

For pkg-config to find openblas you may need to set:

  export PKG_CONFIG_PATH="/usr/local/opt/openblas/lib/pkgconfig"

Installing R Studio

RStudio is a free and open-source integrated development environment for R, a programming language for statistical computing and graphics. RStudio was founded by JJ Allaire, creator of the programming language ColdFusion. Hadley Wickham is the Chief Scientist at RStudio. Wikipedia

I downloaded the RStudio Desktop Version.
RStudio














RStudio 1.2.1335 - Mac OS X 10.12+ (64-bit)

Source Code

A tarball containing source code for RStudio v1.1.463 can be downloaded from here

RStudio IDE Cheat Sheet
--
Kinshuk Dutta
New York

Wednesday, January 9, 2019

Deep Learning Using TensorFlow

Deep Learning Using TensorFlow


What is Deep Learning?

As we saw in our previous blog AI - Machine Learning & Deep Learning that deep learning is a subfield of machine learning. While both fall under the broad category of artificial intelligence, deep learning is what powers the most human-like artificial intelligence.

In this blog we will make an attempt to learn the basics about Google's deep learning framework using TensorFlow and Python.

What is TensorFlow


In order to implement Machine Learning, TensorFlow provides software libraries to create computational graph. I selected TensorFlow mainly because of my love for open source. You can get more information on TensorFlow from its website.

This is my step by step guide to installing TensorFlow on macOS Mojave.

Requisites
    Hardware
Model Name: MacBook Pro 
Model Identifier: MacBookPro15,1 
Processor Name: Intel Core i9 
Processor Speed: 2.9 GHz 
Number of Processors: 1 
Total Number of Cores: 6 
L2 Cache (per Core): 256 KB 
L3 Cache: 12 MB 
Memory: 32 GB 
OS: macOS 10.14.3 (18D32a) 
    Software
Package Manager: Home Brew 
Big Data: Hadoop 
Cluster Computing Framework: Apache Spark 2.0.0 
Installation
    Install Xcode 8.0.
                    Xcode can be updated from 
https://developer.apple.com/xcode/downloads/ 
If 8.0 is installed, you may need to: 
sudo xcode-select --switch /path/to/Xcode-beta.app 

bash-3.2$ sudo xcode-select --switch /Applications/Xcode-beta.app 
    Install Home Brew

Install Tensor flow
Open a terminal in MAC.
CMD + Space & type Terminal or open terminal from launcher

$ brew install tensorflow
==> Downloading https://homebrew.bintray.com/bottles/libtensorflow-1.12.0.mojave.bottle.tar.gz
######################################################################## 100.0%
==> Pouring libtensorflow-1.12.0.mojave.bottle.tar.gz

🍺  /usr/local/Cellar/libtensorflow/1.12.0: 9 files, 158.7MB


-
Kinshuk Dutta
New York

AI - Machine Learning & Deep Learning


Artificial Intelligence (AI) - Machine Learning (ML) & Deep Learning (DL)

When a machine or a system becomes smart enough to decide what to do next based on a given situation is known as Artificial Intelligence (AI).
Artificial intelligence is pertained to a system by two main ways:

Machine Learning (ML): The ability of a machine to learn independently without any kind of explicit programming for a given scenario is called Machine Learning. Machine learning tool involves a lot of complex math and coding that enables the computer to modify the algorithm based on the result of identifying patterns in a large set of data and performs a function with the data given to it and gets progressively better over time.

 “Algorithms that parse data, learn from that data, and then apply what they’ve learned to make informed decisions” 

Conceptual Neural Network 
Deep Learning (DL): Deep learning is considered an evolution of machine learning. It uses a programmable neural network that enables machines to make accurate decisions without help from humans. Better way to impart intelligence is to follow the mechanism used by human brain. This mechanism is known as neural network which tries to model human brain process with layers of nodes, linked together in different ways. Each additional layer requires a large increase in computing power. This layered model approach deals with millions of parameters which needs to be processed by GPUs. As the GPU becomes more and more affordable. So is the ability to create multi-layered deep neural networks.

In the subsequent blogs we will try to learn some basic ML as well as basic DL implementation techniques.
-
Kinshuk Dutta
New York

Tuesday, October 2, 2018

Scala Basics


What is Scala?

Scala is a general-purpose programming language providing support for functional programming and a strong static type system.



Basic Understanding & Implementation - Scala on Mac

This is my step by step guide to installing Scala macOS Sierra.
Package Manager: Home Brew
Java: Verify that you have java instaled. Couple of ways to verify it:
1 - java -version
openjdk version "1.8.0-adoptopenjdk"
OpenJDK Runtime Environment (build 1.8.0-adoptopenjdk-jenkins_2018_05_19_02_01-b00)
OpenJDK 64-Bit Server VM (build 25.71-b00, mixed mode)
2 - which java
/usr/local/bin/java

Installation


$brew update
Updated Homebrew from bd09f934f to 9141b1509.
Updated 3 taps (homebrew/cask-versions, homebrew/core and homebrew/cask).
==> Updated Formulae
jenkins                   convox                      exploitdb                   git-secret                  grpc                        openconnect                 tcl-tk                      youtube-dl
azure-cli                   dartsim                     git-open                    gnatsd                      mackup                      squashfs                    terraform-docs
==> Deleted Formulae


hyper

$ brew install scala
Warning: scala 2.12.8 is already installed and up-to-date


To reinstall 2.12.8, run `brew reinstall scala`

$ brew reinstall scala
==> Reinstalling scala 
==> Downloading https://downloads.lightbend.com/scala/2.12.8/scala-2.12.8.tgz
Already downloaded: /Users/kinshukdutta/Library/Caches/Homebrew/downloads/4ffc2f15737ba9118ee6050ae3b7f1c997a2ff246a51edea3e4a662c85c4cc13--scala-2.12.8.tgz
==> Caveats
To use with IntelliJ, set the Scala home to:
  /usr/local/opt/scala/idea
==> Summary
🍺  /usr/local/Cellar/scala/2.12.8: 43 files, 20.8MB, built in 5 seconds

$ brew install sbt
==> Downloading https://github.com/sbt/sbt/releases/download/v1.2.8/sbt-1.2.8.tgz
==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.com/279553/ae845a00-0be0-11e9-99d2-03a5afa9f1c7?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190117%2Fus-east-1%2Fs3%2
######################################################################## 100.0%
==> Caveats
You can use $SBT_OPTS to pass additional JVM options to sbt.
Project specific options should be placed in .sbtopts in the root of your project.
Global settings should be placed in /usr/local/etc/sbtopts
==> Summary


🍺  /usr/local/Cellar/sbt/1.2.8: 521 files, 50MB, built in 12 seconds


echo '-J-XX:+CMSClassUnloadingEnabled' >> /usr/local/etc/sbtopts
echo '-J-Xmx4G' >> /usr/local/etc/sbtopts


Scala Plugin for Eclipse

Scala IDE for Eclipse is best installed (and updated) directly from within Eclipse.
This is done by using Help → Install New Software..., add the Add... button in the dialog.
Choose a name for the update site (Scala IDE). Then follow the instructions on screen.

Scala Basics!!


In order to learn the basics of Scala we will be using Scala REPL

The Scala REPL is a An informative tool that logs messages on how our code is interpreted and executed
The scala command will execute a source script by wrapping it in a template and then compiling and executing the resulting program.
In interactive mode, the REPL reads expressions at the prompt, wraps them in an executable template, and then compiles and executes the result.
Previous results are automatically imported into the scope of the current expression as required.
The REPL also provides some command facilities, described below.
An alternative REPL is available in the Ammonite project, which also provides a richer shell evironment.


Values & Variables



Kinshuk Dutta
New York

Monday, July 9, 2018

Implementation - HomeBridge - It's the answer to Impatient HomeKit Enthusiast

Enabling incompatible Accessories to HomeKit using Homebridge

Before we start we must all bear in mind that Apple is known for its robustness of security. Hence a handful of products are HomeKit enabled as it has to go through those rigorous rounds of testing. The process shown in this blog will help you in making a device HomeKit enabled but it might not have that security feature hence you will always be at risk. Again, Homebridge and its accessory plugins are created and maintained by a community of developers and it's not a commercial company hence don't expect it to be up to date and provide support as it would have been in the case of a company. So, yes, lots of risk factors involved. But an impatient HomeKit enthusiast or an apple fanboy won't care.

If you are not the geeky type then refrain from this blog as you will have to get your hands dirty by working on the terminal and changing codes.

Homebridge on Mac

For this exercise, I will be using:
My usual:
MacBook Pro





After you have installed XCode and Node.js you will have to set up a Node.js server. This is your HomeBridge server:


Open terminal and type:
sudo npm install -g --unsafe-perm homebridge
Homebridge will be installed using the NPM package manager. Wait until the process is complete.

Last login: Sat Jul  7 23:47:24 on console
~ kinshukdutta$ sudo npm install -g --unsafe-perm homebridge
Password:
/usr/local/bin/homebridge -> /usr/local/lib/node_modules/homebridge/bin/homebridge

> curve25519-n@1.4.0 install /usr/local/lib/node_modules/homebridge/node_modules/curve25519-n
> node-gyp rebuild

  CXX(target) Release/obj.target/curve/node_curve.o
  SOLINK_MODULE(target) Release/curve.node
clang: warning: libstdc++ is deprecated; move to libc++ with a minimum deployment target of OS X 10.9 [-Wdeprecated]

> ed25519-hap@0.0.5 install /usr/local/lib/node_modules/homebridge/node_modules/ed25519-hap
> node-gyp rebuild

  CC(target) Release/obj.target/ed25519/src/ed25519/keypair.o
  CC(target) Release/obj.target/ed25519/src/ed25519/sign.o
  CC(target) Release/obj.target/ed25519/src/ed25519/open.o
  CC(target) Release/obj.target/ed25519/src/ed25519/crypto_verify_32.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_double_scalarmult.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_frombytes.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_scalarmult_base.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_precomp_0.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_p2_0.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_p2_dbl.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_p3_0.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_p3_dbl.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_p3_to_p2.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_p3_to_cached.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_p3_tobytes.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_madd.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_add.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_msub.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_sub.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_p1p1_to_p3.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_p1p1_to_p2.o
  CC(target) Release/obj.target/ed25519/src/ed25519/ge_tobytes.o
  CC(target) Release/obj.target/ed25519/src/ed25519/fe_0.o
  CC(target) Release/obj.target/ed25519/src/ed25519/fe_1.o
  CC(target) Release/obj.target/ed25519/src/ed25519/fe_cmov.o
  CC(target) Release/obj.target/ed25519/src/ed25519/fe_copy.o
  CC(target) Release/obj.target/ed25519/src/ed25519/fe_neg.o
  CC(target) Release/obj.target/ed25519/src/ed25519/fe_add.o
  CC(target) Release/obj.target/ed25519/src/ed25519/fe_sub.o
  CC(target) Release/obj.target/ed25519/src/ed25519/fe_mul.o
  CC(target) Release/obj.target/ed25519/src/ed25519/fe_sq.o
  CC(target) Release/obj.target/ed25519/src/ed25519/fe_sq2.o
  CC(target) Release/obj.target/ed25519/src/ed25519/fe_invert.o
  CC(target) Release/obj.target/ed25519/src/ed25519/fe_tobytes.o
  CC(target) Release/obj.target/ed25519/src/ed25519/fe_isnegative.o
  CC(target) Release/obj.target/ed25519/src/ed25519/fe_isnonzero.o
  CC(target) Release/obj.target/ed25519/src/ed25519/fe_frombytes.o
  CC(target) Release/obj.target/ed25519/src/ed25519/fe_pow22523.o
  CC(target) Release/obj.target/ed25519/src/ed25519/sc_reduce.o
  CC(target) Release/obj.target/ed25519/src/ed25519/sc_muladd.o
  CXX(target) Release/obj.target/ed25519/src/ed25519.o
  SOLINK_MODULE(target) Release/ed25519.node
clang: warning: libstdc++ is deprecated; move to libc++ with a minimum deployment target of OS X 10.9 [-Wdeprecated]
/usr/local/lib
└─┬ homebridge@0.4.44 
  ├─┬ chalk@1.1.3 
  │ ├── ansi-styles@2.2.1 
  │ ├── escape-string-regexp@1.0.5 
  │ ├─┬ has-ansi@2.0.0 
  │ │ └── ansi-regex@2.1.1 
  │ ├── strip-ansi@3.0.1 
  │ └── supports-color@2.0.0 
  ├─┬ commander@2.8.1 
  │ └── graceful-readlink@1.0.1 
  ├─┬ hap-nodejs@0.4.47 
  │ ├─┬ bonjour-hap@3.5.1 
  │ │ ├── array-flatten@2.1.1 
  │ │ ├── deep-equal@1.0.1 
  │ │ ├── dns-equal@1.0.0 
  │ │ ├─┬ dns-txt@2.0.2 
  │ │ │ └── buffer-indexof@1.1.1 
  │ │ ├─┬ multicast-dns@6.2.3 
  │ │ │ ├─┬ dns-packet@1.3.1 
  │ │ │ │ └── safe-buffer@5.1.2 
  │ │ │ └── thunky@1.0.2 
  │ │ └── multicast-dns-service-types@1.1.0 
  │ ├── buffer-shims@1.0.0 
  │ ├─┬ curve25519-n@1.4.0 
  │ │ ├── bindings@1.3.0 
  │ │ └── nan@2.10.0 
  │ ├─┬ debug@2.6.9 
  │ │ └── ms@2.0.0 
  │ ├── decimal.js@7.5.1 
  │ ├── ed25519-hap@0.0.5 
  │ ├── fast-srp-hap@1.0.1 
  │ ├── ip@1.1.5 
  │ └─┬ node-persist@0.0.11 
  │   └─┬ mkdirp@0.5.1 
  │     └── minimist@0.0.8 
  ├─┬ node-persist@0.0.8 
  │ ├── mkdirp@0.3.5 
  │ └── q@1.1.2 
  ├── qrcode-terminal@0.11.0 
  └── semver@5.0.3 


Type homebridge into Terminal to launch it.


kinshukdutta$ homebridge



You should see the following message:
[7/9/2018, 9:57:53 AM] config.json (/Users/kinshukdutta/.homebridge/config.json) not found.

[7/9/2018, 9:57:53 AM] No plugins found. See the README for information on installing plugins.

Add Homebridge to HomeKit




Kinshuk Dutta
New York

Scala & Spark for Managing & Analyzing Big Data (Using Machine Learning)

Managing & Analyzing Big Data using Apache Scala & Apache Spark In this blog we will see how to use Scala and Spark to analyze Big D...