Thursday, December 21, 2017

What I am doing? I am learning :)

Its been so long that, I met you all though blog post. I have joined in a telecommunication company on this month last year. Since there I have been learning new thing. Its new place with different approach to solve problems. Quite legacy but it is giving nice learning.

Agile:
 Searching for new architecture , algorithm , pattern , language, solution are all keep you motivated and passionate about programming. But what I am learning here is quite simple. Its MVB - minimum viable product. This mantra is where they shine, make something useful for customer. Do research , but don't wait until you complete it. Give a MVB.

You don't have time to do 100 days for a single painting. Give us segment of it. And Go and do agile.

Interview:
 Taking interview for java opening in the current organization. What managers are expecting from the candidate is quite interesting. If you are under 3 years then know well what you worked on. Move your thinking from what and how? to why when you are in 3 - 5 years experience and You must be strong in basics too. 5 -7 years candidate must be strong in, how your current projects architectures works and crack some on the spot technical problems. Design and explain your solution in a such a way that how you normally do it in front of your desk.

Be confident and ready to learn from the interview questions. Don't over argue unless you are super confident. It may eat your interviewe timing and you may lose some other nice question what you could easily crack.

Interview is where candidate do the self judgement and interview do the discussion.

Cloud:
ML, Big data is cool. But moving to cloud is foundation. I had my first cloud training 5 years back. It was costly and cool to think about it on those days. But now cloud is every where. If you are not in cloud then you are not in this era.

Rust : (Every year new language;and new Style)
2015 - Scala
2016 - ELM
My language of 2017 is RUST.

Why I learn new language? for Interest. I am multilingual guy.
What you do with it? I use when I need it. It gives me broad vision to understand and sail in programming ocean.

Why Rust:
Rust influenced Elm - lang.
Low level language; No GC; No Interpret language;
Strong and Strick type and Safe.

Firefox quantum running much faster than the older version. Servo engine supports firefox to run faster which is written on Rust.


Tuesday, March 21, 2017

Found Monads in scala library

Scala library - A view in the Functional programming perspective
Here is the Monad from scala library
implicit class MonadOps[+A](trav: TraversableOnce[A]) {
    def map[B](f: A => B): TraversableOnce[B] = trav.toIterator map f
    def flatMap[B](f: A => GenTraversableOnce[B]): TraversableOnce[B] = trav.toIterator flatMap f
    def withFilter(p: A => Boolean) = trav.toIterator filter p
    def filter(p: A => Boolean): TraversableOnce[A] = withFilter(p)
  }
Lets look some important transfermations and actions available in scala

Transformation

map,flatMap, filter

map

maping to another type in collection
Scala doc says
Creates a new iterator that maps all produced values of this iterator to new values using a transformation function.
def map[B](f: A => B): Iterator[B] = new AbstractIterator[B]

flatMap

mapping to another type and flatterning it
Scala doc says
Creates a new iterator by applying a function to all values produced by this iterator and concatenating the results.
def flatMap[B](f: A => GenTraversableOnce[B]): Iterator[B]

filter

filtering to same type with applied function
Scala doc says
Returns an iterator over all the elements of this iterator that satisfy the predicate p. The order of the elements is preserved.
def filter(p: A => Boolean): Iterator[A]

Reduction

fold,reduce and aggregate

fold

Returns to single unit It takes the default parameter to accumulate the resulting value
Scala doc says
folds the elements of this traversable or iterator using the specified associative binary operator.
def fold[A1 >: A](z: A1)(op: (A1, A1) => A1): A1 
Usage
list.map(_.budget).fold(0)((a,b)=> a+b)

reduce

It do the same like fold but does not accept the default value The accumulater is the first value of the traversable
Scala doc says
Reduces the elements of this traversable or iterator using the specified associative binary operator.
def reduce[A1 >: A](op: (A1, A1)  A1): A1

aggregate

It works as like reduce and fold, but in parallel
Scala doc says
Aggregates the results of applying an operator to subsequent elements.
def aggregate[B](z:  B)(seqop: (B, A)  B, combop: (B, B)  B): B

Merging two sorted arrays - Big O (n+m) time complexity

 Problem :  Merge the two sorted arrays. Edge case :  Array can empty Arrays can be in different size let getMaxLength = ( input1 , input...