Friday 12 December 2014

Storm Blueprints: Patterns for Distributed Real-time Computation

A very useful book for anyone interested in Storm for real-time processing. I am particularly benefited by some of the practical use cases of Storm, especially on Storm Trident. Compared to other books on Storm that I read so far, this one seems to offer very good tutorials on several aspects of Trident which answers some of my puzzles over Trident such as:


  • How to implement a Trident State
  • How to implement a Trident State Factory
  • How to implement a Trident State Updater
  • How to effectively uses combiner, reducer, aggregator
  • How to implement a Trident non-transactional, repeat transactional topology and opaque trident map state
  • How to implement a Trident spout, coordinator, emitter
  • How to implement recursive functions in Trident


While the later chapters involving druid and hadoop are a bit difficult for me to assimilate at this stage due to time constraints, i will definitely like to read it again on these chapters.

https://www.packtpub.com/big-data-and-business-intelligence/storm-blueprints-patterns-distributed-real-time-computation

Unity 4.x Cookbook

Totally worth my money to purchase the book, The book is relatively easy to understand and contains a lots of visual clues on the instructions which makes the practice very intuitive as some instructions which can a bit complex for a beginner of Unity game engine. I particularly like the introduction on the animator and the mecanim engine and the camera tutorials. The book serves well for the beginners who want to learn about Unity engine.

https://www.packtpub.com/game-development/unity-4x-cookbook

Tuesday 2 December 2014

Unity 2D Game Development

Managed to read half of the book, but was too exhausted to have any further interest to continue reading. Not that it is difficult, it is actually quite suitable for beginner. I think the book has too much distractions which are details that i don't really care (such as the logic of the game the authors tried to get the readers to develop, as it is not important for someone who already have experiences developing games) and no enough concise explanations on how various scenarios and technical issues to be handled using Unity 2D as game development tool.

The only good stuffs i got away from reading the book are:

1. the animation (such as Sprite Editor, Dope Sheet, Animator Editor)
2. the game physics part such as Polygon Collider, Collider2D, OnTriggerEnter2D

This book is definitely not something i am looking for (i am looking for a "recipe" type of book i guess), but the book may be good for someone who has the luxury of time to follow through the entire tutorial of developing a 2D game.

https://www.packtpub.com/game-development/unity-2d-game-development

Saturday 29 November 2014

Apache Maven Dependency Management

A very easy-to-understand and follow good for introducing Maven:

http://www.amazon.com/Apache-Maven-Dependency-Management-Jonathan/dp/1783283017

While most of the stuffs are basic, I get away with:

1. how to analyze dependency in Maven
2. how to create and use profile
3. how to determine which transitive dependency being taken in the project and how to exclude some of them
4. how to create a release and how to distribute maven dependency
5. how include include non-Maven standard library as dependency in a Maven project
6. how to migrate from Ant project to Maven project
7. the various maven-plugins such as exec-maven-plugin, maven-assembly-plugin, maven-install-plugin, maven-release-plugin, maven-dependency-plugin, maven-compiler-plugin.
8. What is dependency scope and how / when to use them.

Thursday 27 November 2014

Instant Drools Starter

Very-easy to understand and follow tutorial for Drools:

https://www.packtpub.com/application-development/instant-drools-starter-instant

Should get you quickly up-to-speed with java development using Drools, also not bad as a quick reference book on Drools syntax.

Wednesday 26 November 2014

Elastic Search Cookbook

The book is nice and easy for someone who just starts learning ElasticSearch. Interesting reader can get the book from:

http://www.amazon.com/ElasticSearch-Cookbook-Alberto-Paro/dp/1782166629

There are some parts which i feel a bit verbose such as when explaining the installation and different ways of search, query, map, etc (which will be useful for reference anyway) as i only need to understand a subset of these command while explore the rest in the wild (e.g., http://java.dzone.com/articles/elasticsearch-java-api). While I did read through most of the materials, the book seems to me a bit week to present in a short and concise way to get someone immediately up-to-speed with working with various features of elastic search. However, coupled with a bit of online resources, it is actually quite easy to get started and toy with elastic search.

Tuesday 25 November 2014

Learning Storm

Just completes the book "Learning Storm". Very nice read, interesting readers can go to the following link to buy:

https://www.packtpub.com/big-data-and-business-intelligence/learning-storm

The book covers quite widely, with quite a number of ways to show how other technologies  working with Storm introduced in a easy-to-understand way such as the covering of ZooKeeper, Kafka, Hadoop, YARN, Ganglia, JMX, HBase, Redis, MySQL, etc. I especially likes the way they teach Trident, which makes it much easier to grasp the concept of Trident, and the last chapter on machine is extremely useful.

While the normal readers can read the book chapters by chapters to take a slow and full exposure. For someone like me, who always like to delve directly into practice, the best approach is actually to read the book three times, each time skipping some chapters.

During first time, the reader should go through chapter 1 to chapter 4, skipping the thrift library introduction in chapter 3, and then directly jump to chapter 8, which gives an example of log processing in Storm. With this the reader will build a level of confidence after practicing the simple cases in these chapters.

During the second time, the reader should go through chapter 5 and chapter 9 to get a good ideas of what Trident is and how Trident work, as well as how to do machine learning using Trident.

During the third time, the reader can optionally go through the thrift library in chapter 3, then go to chapter 7 which show rich tools to interact with Storm such JMX and Ganglia. Finally if there is a need for integration with Hadoop, then go to chapter 6 and some other parts in chapter 7.

Friday 21 November 2014

Learning C# by Developing Games with Unity 3D Beginner's Guide

Just completed that book, below is the link for anyone interested to buy the book:

https://www.packtpub.com/game-development/learning-c-developing-games-unity-3d-beginners-guide


The book teaches some simple programming in C#, but does provide in a succinct way how to do C# coding in Unity environment, which is suitable for my case as i know quite a lot about C# but nothing about Unity development. So in a sense the book is also good for programmers who previously know nothing about Unity IDE and wonder how to add codes to a game to modify game behavior (kind of like a teach yourself in 6 hours books on how to start code on Unity).

The first 6 chapters basically a hello-world C# tutorial, with some minor examples of:

1. how to create and attach script to game objects, how to get game object using GameObject.Find("[gameObjectId]"),

2. how to get the MonoBehavior sub-class script object attached to a game object (i.e. the class defined in a script attached in a game object) using thisScriptInstance.GetComponent<classname> (where ClassName refers to the class name of the MonoBehavior sub-class)

3. how to rotate a game object, by calling its transform.Rotate(x, y, z) method

4. How to expose a script object's variable as property in the Unity Inspector panel (by declaring the variable as public)

5. Where to add script behavior during game initialization (i.e. in the Start() method) and game update (i.e. in the Update() method) or for GUI output (i.e. in the OnGUI() method)

Chapter 7 teach about a simple design of a state machine and its implementation (as a script object derived from MonoBehavior)

Chapter 8 delves a bit more into implementation of individual state. Not much interesting stuff except the part where it shows how to use Unity API to interact with Unity engine, such as

1. add codes to pause a game scene (by settings Time.timeScale = 0) and restart again (by settings Time.timeScale=1). The Time.timeScale sets the game speed. Time.realtimeSinceStartup is another interesting property which returns the time in seconds from the start of the game.

2. Some basic Unity properties and method including:

Screen.width: width of the game screen
Screen.Height: height of the game screen.

bool GUI.Button(Rect rect, String text): create a button on the game screen, the return value can be used implement logics run when it return true (i.e. onClick) or false. Note that this method must be called inside the OnGUI() of a MonoBehavior object

bool GUI.Box(Rect rect, String text): a label on the game screen. Note that this method must be called inside the OnGUI() of a MonoBehavior object.

3. How to attach a script object to an empty game object (by selecting GameObject--&gt;Create Empty, then attach a script to it by dragging the script onto the create empty game object in the Unity Hierarchy panel). This is good for, e.g., when building a Unity scene of a GUI panel for game settings and configuration.

4. How to implement logic in the MonoBehavior.Awake() method override to persists an object across multiple scenes (via static member variable and DontDestroyOnload(this.gameObject) and DestroyImmeidate(this.gameObject))

5. How to switch between different scenes using Application.LoadLevel("[sceneName]") (all scenes must be in the "Scenes In Build" accessed via File--&gt;Build Settings)

While the first 8 chapters to most C# programmers is not worth much except for some of the stuffs mentioned above.

By the way, Chapter 9 and Chapter 10 is worth some reading for Unity programming using C#

Wednesday 12 November 2014

Getting Started with Storm

Just completed reading the "Getting Started with Storm" book, I will say this is one of the easiest-to-follow books I have read, yet it provides good basic understanding of working with Storm, a distributed system for processing streaming data. A good read, totally recommended for someone interested in learning Storm.

http://www.amazon.com/Getting-Started-Storm-Jonathan-Leibiusky/dp/1449324010

Thursday 25 September 2014

Thursday 11 September 2014

Online Course: Machine Learning: Supervised Learning

Udacity Link: Machine Learning: Supervised Learning

Easy-to-learn course, by studying the course, I was able to implement the following algorithms for my library


  • AdaBoost 
  • TreeBagging
  • RandomForest
  • Improves some designs over my ID3 and C45 decision tree.

Sunday 7 September 2014

Online Course: Intro to Hadoop and MapReduce

Udacity Link: Intro to Hadoop and MapReduce

Very easy-to-learn course (should be able to finish the tutorial and course in around 1.5 hours), basically the user will learn how to write command lines to interact with Hadoop DFS and write simple mapper and reducer python scripts to process files in Hadoop DFS

Online Course: Social Network Analytics

Coursera Link: Social Network Analytics

Easy-to-follow course, by studying this course, I was able to implement the following algorithm in C# for my library:


  • Eigen Vector Centrality Measure
  • Degree Centrality Measure
  • Closeness Centrality Measure
  • Betweenness Centrality Measure
  • Community Detection

Online Course: Machine Learning

Coursera Link: Machine Learning

Easy-to-learn course, by studying the course, I implemented the following algorithms in C# for library:


  • Linear Regression
  • Linear Solver
  • Logistic Regression
  • MLP Neural Network with gradient descent learning
  • Linear and gaussian kernel SVM
  • Gaussian distribution -based Anomaly Detection algorithm
  • Collaborative filtering based Recommender
  • Content based Recommender
  • Regularization and Error Analysis, Learning Curve, etc
  • Principal Component Analysis (PCA)

Online Course: Introduction to Artificial Intelligence

Udacity Link: Intro to Artificial Intelligence

Easy-to-learn course, by studying the course, I implemented the following algorithms in C# for my library:

  • Probabilistic inference: Bayesian Network and Inference
  • Computer Vision: Sobel Filter (Edge Detection)
  • Computer Vision: Gaussian Filter (Image Blur)
  • Computer Vision: Prewitt Filter (Edge Detection)
  • Computer Vision: Kirsh Filter (Edge Detection)
  • Computer Vision: Linear and gradient filters
  • Computer Vision: Average Filter (Noise Removal)
  • Computer Vision: Fog Filter (Fog effect)
  • Computer Vision: SSD / SAD and minimization / Disparity Map
  • NLP: Language Identifier
  • NLP: Text Segmentation
  • NLP: Spell Correction

Online Course: Artificial Intelligence for Robotics

Udacity Link: Artificial Intelligence for Robotics

Easy-to-learn course, by studying the course, I implemented the following algorithms in C# for my library:


  • Bayesian Filter: Histogram Filter (Uni-Variate)
  • Bayesian Filter: Particle Filter (Multi-Variate)
  • Bayesian Filter: Kalman Filter (Multi-Variate)
  • Robotics: SLAM (Simultaneous Localization and Mapping) (Multi-Variate)
  • Controller: Tweedle for PID Controller parameter tuning
  • Controller: Smoothing function for path

Online Course: Machine Learning: Unsupervised Learning

Udacity Link: Machine Learning: Unsupervised Learning

Easy-to-learn course, by studying the course,  I implemented the following algorithms in C# for my library:


  • Clustering: EM (Expectation Maximization) Clustering
  • Clustering: Single Linkage Clustering
  • Feature Selection: Forward Sequencing
  • Feature Selection: Backward Elimination
  • Feature Selection: Hill Climbing Feature Selection
  • Feature Transformation: Principal Component Analysis
  • Feature Transformation: Independent Component Analysis
  • EDA Solver: MIMIC

Online Course: Machine Learning: Reinforcement Learning

Link : Udacity: "Machine Learning: Reinforcement Learning"

Easy-to-learn course for reinforcement learning. By studying the course, i implemented the following algorithms in C# for my library:
  • Reinforcement Learning: Q-learning
  • Reinforcement Learning: Value iteration
  • Reinforcement Learning: Policy iteration
  • Game: MiniMax
  • Game: ExpectiMiniMax