Friday, April 25, 2014

Tại sao mc2ads nhiều thông tin chuyên môn có ích ? Tại sao là Rfx có ích cho big data developer ?

Tại sao mc2ads có nhiều thông tin chuyên môn hữu ích ?
mc2ads vốn là tâm huyết, sở thích của mình về 1 trang blog và tin tức chuyên ngành về mảng công nghệ xử lý dữ liệu lớn (big data processing).
Mình đọc, lựa chọn và biên tập các thông tin từ trên các nguồn khác nhau từ Internet, cả kinh nghiệm và kiến thức bản thân cũng đưa vào đây.
mc2ads là nơi chia sẻ kiến thức, xây dựng cộng đồng để cùng nhau Research & Development những ý tuởng một cách TỰ DO SÁNG TẠO nên không có tiền bạc hay kinh doanh gì cả NON-PROFIT (không có quảng cáo trên trang này, không chuyên giao công nghệ, không bán công nghệ).

Ngoài ra, mc2ads còn là 1 lab, thực hành và chia sẻ các ý tuởng khả thi và có ích. Làm CNTT không nhất thiết phải như mấy ngành ghê gớm khác, phải đầu tư nhiều tiền để research.
Các thí nghiệm trong trí tuởng tuợng là đủ, biến chúng thành hiện thực , thành cái có ích thì quá tuyệt.

Vì là blog nên nhiều lúc nó lộn xôn (vừa tiếng Anh để share cho dân Tây trên Twitter , vừa tiếng Việt để share trên Facebook cho bạn bè đọc) , mình đang xài blogger của Google với customized domain là mc2ads.com cho nó dễ nhớ. Tuy nhiên sắp tới sẽ vài thay đổi để dễ tìm content hơn.

Số liệu thống kê của mc2ads từ 2011 đến 2014 là như sau, nó chỉ tăng cao nhất từ đầu năm đến nay.

Trong số các bài viết trên mc2ads, bài có pageview và refer từ US cao nhầt là:
http://www.mc2ads.com/2014/02/install-apache-spark-and-fast-log.html

Một phần traffic cao là nhờ bài này đuợc 1 tác giả Alvin J Alexander, chuyên viết blog và sách về lập trình có tiếng refer tới (thanks Alvin a lot)


Tìm hiểu thêm ở các links sau: 
http://alvinalexander.com/photos/install-apache-spark-and-fast-log-analytics

Tại sao là Rfx là framework có ích cho big data developer và sinh viên ?
Nếu là nguời trong ngành, bạn có thể so sánh nó với Storm (http://storm.incubator.apache.org/)  hay Spark (http://spark.apache.org/), nhưng sự thật mình tạo ra nó không phải để "ăn thua" với 2 cái kia.
Mình đã từ research cà 2, từng Go Production với Storm hơn 1 năm trời, cho nên mình thấy nó có vài khuyết điểm cần bổ sung.
Big Data rất rộng lớn, ứng dụng rất đa dạng nên 1 tool không phù hợp tất cả mọi vấn đề.

Bạn có thể nói Storm là từ Twitter, Spark là từ đại học Berkeley danh tiếng còn Rfx chỉ là nguời Việt Nam bình thuờng làm ra.
Rfx đuợc thiết kế cho sinh viên học trong vòng 1 tiếng là có thể code đuợc 1 cái app xử lý big data (real-time, scale and simple). Cho nên mục đích thiết kế là Rfx rất bình thuờng cho những ai thích cũng hiểu và code đuợc.
“Make things as simple as possible, but not simpler.”
Tuy nhiên, càng đi sâu, bản thân Rfx dựa trên mô hình tóan, do mình đã học từ thầy Peter lúc đi thực tập ở DRD. Xem ở đây nhé http://www.mc2ads.com/2014/04/mot-cau-chuyen-tu-lambda-en-java-8.html
Tóm lại, Rfx là tâm huyết và là ý tuởng đã ấm ủ từ thời sinh viên (2007) về 1 hệ thống xử lý dữ liệu phân tán và có khả tự liên kết các môi quan hệ thông tin lại với nhau theo mô hình xác suất (functor) để làm máy tính xử lý giống như 1 bộ não người, chứ kg phải tự nhiên mà có (làm theo phong trào big data blah..blah..)

Rất may là làm ở FPT Online, có nhiều bài tóan big data để mình giải nên có nhiều kinh nghiệm (hơn 1 năm trời với cái eclick), nên tập hợp nó lại thành 1 framework vừa code cho nhanh, vừa để cộng đồng chuyên môn đóng góp thêm và để ứng dụng lý thuyết và thực tế.

Code nó ở đây: bạn có thể tự tìm hiểu:
https://bitbucket.org/trieunt/rfx/wiki/Home

Tài liệu thì ở đây: http://www.mc2ads.com/p/rfx-for-big-data-developer.html
Vì thời gian mình dành công ty cũng hết ngày rồi nên mình đang viết khi rảnh, (buổi tối và T7, chủ nhật thôi)

Thôi nhé, tạm là thế.


Saturday, April 19, 2014

Một câu chuyện từ lambda đến Java 8 (build native and faster Big Data Application)

1) Từ một nhận định đến một suy nghĩ hơn 7 năm
Lúc còn là sinh viên, khi thầy Peter Gammie chỉ ra những hạn chế của cách lập trình truyền thống (imperative programming) khi mà số CPU/GPU ngày càng tích hợp nhiều vào máy tính, và mình đã thắc mắc 1 câu nói từ 2007 đến nay 2014:
"In a concurrent world, imperative is the wrong default"
(tạm hiểu: trong một thế giới tính tóan và nhiều việc xảy ra song song 1 cách đồng thời này, mô hình imperative là một sự mặc định sai lầm ).
Thấy tặng tôi một cuốn sách và đến nay nó vẫn kỉ niệm , cũng như 1 cuốn sách tham khảo.

Tìm hiểu thêm:


2) Lambda như là một tất yếu và sự phục hưng của việc mô tả các thế giới song song bằng đối tượng hàm (functor)
Định luật Moore về khả năng xử lý của máy tính, số luợng dữ liệu ngày càng nhiều (zeta-bytes) trong một thế giới mọi thứ đuợc số hóa (digital world).
Khái niệm lambdafunctional programming ,  xuất hiện từ 1930s . Dù có lịch sử đã khá lâu, nhưng khỏang 30 năm trở lại đây, nó mới nghiên cứu, hiện thực và áp dụng ra thực tế.

Trong thời kỳ mà Big Data và Cloud Computing, lambda và functional programming đã đuợc phát triển lên một mức cao hơn: mô hình kiến trúc lambda cho các hệ thống xử lý dữ liệu lớn
Tìm hiểu thêm về :


3) Java 8, lời hứa đã đuợc thực hiện (bởi Oracle)
Khi 2009, trong một đi dự hội nghị Java Developer thuờng niên (thời mà Java còn của Sun Microsystem ), mình đã nghe về 1 project mà các khái niệm lambda sẽ đưa vào để Java phát triển và phù hợp hơn với các nhu cầu của việc tính tóan song song đồng thời (concurrent computation)
http://openjdk.java.net/projects/lambda

ban đầu, trong Java 7 sẽ có, nhưng đến mãi gần 5 năm. Đến tân 2014 này, trong JDK mới nhất của Java 8, lambda mới đuợc đưa vào chính thức.

Ok, bắt đầu test và code:

  1. JDK cho Java 8: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  2. Eclipse cho Java 8: https://www.eclipse.org/downloads/index-java8.php
  3. Download sample Java 8 code: https://dl.dropboxusercontent.com/u/4074962/code/try-java8.zip
  4. Tham khảo thêm: http://pragprog.com/book/vsjava8/functional-programming-in-java

Kết quả benchmarking 
Code test dùng JDK 8


Friday, April 18, 2014

Deep Learning with H2O

Deep Learning with H2O presented by Arno Candel

http://0xdata.com The open source in-memory Prediction engine for Big Data Science.


Andrew Ng: Deep Learning, Self-Taught Learning

Good paper for Internet Advertising, Advertisers, Online publishers, Ad exchanges and Web Users

Direct download link: http://arxiv.org/pdf/1206.1754v2.pdf
Collect data from http://codecondo.com/9-free-books-for-learning-data-mining-data-analysis/


Internet advertising an interplay among advertisers,online publishers, ad exchanges and web users from Trieu Nguyen

Web advertising or online advertising, is a fast grow- ing business. It has already proved to be significantly important in digital economics. 

Thursday, April 17, 2014

Why Rfx for Big Data Application

We are in the Data-Driven Age or "data-driven society". New demands, mean some open source projects would be born  to solve new kind of problems.
More information can be found here:
http://www.technologyreview.com/review/526561/the-limits-of-social-engineering
http://socialphysics.media.mit.edu
Tapping into big data, researchers and planners are building mathematical models of personal and civic behavior. But the models may hide rather than reveal the deepest sources of social ills.
There are some good tools for developing some practical solutions:
Some promising projects, which complement Hadoop for more advanced features
and what about Rfx ? 
simple, reactive, real-time, streaming data processing, full-stack and awesome !




  • Ideas since 2007 (from Haskell and Actor model theory)
  • R&D and Deployed in Production since 2013
  • Open Source: Apache License, Version 2.0 
  • Full Stack: backend+frontend for real-time big data framework
    • Backend: Data Crawler/Importer/Exporter + Kafka + Netty + Akka + Redis
    • Frontend: Groovy/Java Restful API + WebSocket + HTML5 + AngularJS + D3 + Bootstrap
  • Apply Agile for Analytic and Data Science (Continuous Delivery)
  • Apply & Implement Reactive Lambda Architecture
  • Really fast and near-real-time processing
  • Tested with 1.000.000 logs / second (1 million in 1 second)
  • Simple development model for big data developer
Current git repo sourcehttps://bitbucket.org/trieunt/rfx/wiki/Home

Tuesday, April 15, 2014

Thinking about your Digital Brain

Làm sao ứng dụng các mô hình và kết quả từ các nghiên cứu vô cùng phức tạp này ra đời thuờng ?
Brain computing có thể là khoa học về lập trình máy tính phức tạp, tuy nhiên việc dùng các thuật tóan và cấu trúc dữ liệu phức tạp vào  các ứng dụng có ích cũng giống xài 1 library trong lap trình thôi (gọi hàm là xài)




Resource:
http://www.brain-map.org

Paper:
http://arxiv.org/abs/1112.6209v3

Article:
http://www.nytimes.com/2012/06/26/technology/in-a-big-network-of-computers-evidence-of-machine-learning.html?_r=0
http://singularityhub.com/2014/04/14/network-of-75-million-neurons-of-the-mouse-brain-mapped-for-the-first-time

One of Breakthrough Technologies 2014
Neuromorphic Chips: Microprocessors configured more like brains than traditional chips could soon make computers far more astute about what’s going on around them.
http://www.technologyreview.com/featuredstory/526506/neuromorphic-chips

Sunday, April 13, 2014

Từ Visual Thinking đến Visual Communication với 1 cây bút chì và 1 tờ giấy

Dan Roam,  là một trong những chuyên gia về Visual Thinking. 

ông đã viết vài cuốn sách về Visual thinking và phuơng pháp giao tiếp bằng các hình ảnh. Kỹ thuật này đã đuợc các công ty phần mềm hàng đầu như Google ứng dụng. Có thể xem thêm ở đây:


Chỉ với bút chì và giấy trắng, cùng với kỹ thuật trong visual thinking trong cuốn sách.


Summary tiếng Anh http://credu.bookzip.co.kr/Resource/Englishbook/PDF/AE30404.pdf

Bản Tiếng Việt có thể tìm ở nhà sách Minh Khai hoặc Tiki:



Chỉ Cần Mẩu Khăn Giấy
“Để chứng minh rằng chúng ta hiểu rõ một điều gì, không có cách nào hùng hồn bằng việc vẽ ra một bức tranh đơn giản về vấn đề đó. Và để thấy được những giải pháp ẩn bên dưới, không có cách nào hiệu quả bằng việc cầm bút lên và vẽ ra các “mảnh” vấn đề của chúng ta.”
Đó là những điều Dan Roam viết trong cuốn Chỉ cần mẩu khăn giấy, cuốn sách bán chạy nhất thế giới đã chứng minh rằng một bức vẽ đơn giản trên mảnh khăn giấy khiêm nhường có thể hiệu quả hơn nhiều so với một bài trình bày PowerPoint cầu kỳ nhất. Dựa trên 20 năm kinh nghiệm và những khám phá mới nhất về khoa học thị giác, Roam hướng dẫn người đọc cách làm sáng tỏ bất cứ vấn đề nào và “bán” bất cứ ý tưởng nào, chỉ sử dụng một bộ công cụ vô cùng đơn giản.
Nhờ đó, cuốn sách đã được bình chọn là cuốn sách hay nhất năm, ở ba hạng mục khác nhau của ba tờ báo uy tín là BusinessWeek, Fast Company và Times (London), đồng thời nằm trong Top 5 cuốn sách kinh tế hay nhất của Amazon.
Vài hình ảnh trong chuơng 7, cách thức show các ý tuởng cho mọi thành viên trong team:





Monday, April 7, 2014

Stream Mining with Rfx Framework

Estimate the unique words from data stream URL http://en.wikipedia.org/wiki/List_of_United_States_counties_and_county_equivalents
Using new data structure HyperLogLog since Redis 2.8.9
http://redis.io/commands#hyperloglog

Open Source Stream Library of AddThis
https://github.com/addthis/stream-lib

HyperLogLog: the analysis of a near-optimal cardinality estimation algorithm
Original Paper: http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf

Mining Data Stream 
Slide: http://www.stanford.edu/class/cs246/slides/16-streams.pdf

Applicable Problems:
  • Estimate the unique elements in continuous data stream
  • Estimation for Big Data
  • finding an ever growing number of applications in networking and traffic monitoring, such as the detection of worm propagation, of network attacks (e.g., by Denial of Service), and of link-based spam on the web
  • an important indication for detecting attacks and monitoring traffic, as it records the number of distinct active flows
Refer Links

Friday, April 4, 2014

Introduction to Reactive Programming - from old laptop to cluster

Modern applications present incredible design challenges: we expect near-realtime performance while managing petabyte-scale data and distribution across environments ranging from traditional servers to cloud systems to mobile devices. 
The Reactive Application model addresses these demands through new patterns designed to "react" effectively to user and system events, changes in load, competition for shared system resources, and unanticipated failures. Although reactive design patterns can be implemented using standard enterprise development tools, you best realize the benefits when you pair them with a functional programming language like Scala and an Actor-based concurrency system like Akka.

http://www.manning.com/kuhn/
https://www.coursera.org/course/reactive


On May 1 2014, we will release Rfx version 1.0, the first open source framework for reactive big data processing, applied Reactive programming with Lambda Architecture
at https://github.com/mc2ads


Core ideas of Rfx:


  • event source (user click a link), creates an new event, which sends to Rfx system (a page-view of URL)
  • an event is recorded in a topic, transmits to seeding functor (aka" event handler) in topology
  • the seeding functor will emit to all functors in hyper-topology
  • the ending functor will push back the info graph to event source (user) or event subscriber (data analyst)

Tuesday, April 1, 2014

How Usability Testing with Reactive Big Data, case studies: NewYorkTimes, BBC and VnExpress

Just write down the ideas, thinking & post a solution later.
Which one is better ? 
https://dl.dropboxusercontent.com/u/4074962/mc2ads/test-ui.html

Possible Solutions:
http://webdesign.tutsplus.com/articles/a-web-designers-introduction-to-ab-testing--webdesign-9056
A/B testing is the process of experimenting with different options in order to measure the relative success of each one. Where the web is concerned, A/B testing can make it clear which design choices are most effective; clear to the designer and (more importantly) clear to the client.
Service:


Open Source Tools (self-deploy)


Recommended books: