# Introduce FawkesJs

It has been awhile since I have been inactive in open-source world. Although nowadays trend is in VR, AI and iOT, API development is still needed.

FawkesJs is a Javascript framework that is built on top of express, typescript and MVC structure. Inspired by Laravel and Loopback, the target of the framework is to make Javascript development even easier.

## Build in structure in this project

• Express
• Sequelize
• Typescript
• Swagger: use fawkesjs -s ./swagger/swagger.json to generate swagger document
• Express Rest Param Validation: integration with swagger document generation
• Acl (inside fawkesjs-starter/src/module)
• AccessToken (inside fawkesjs-starter/src/module)

## Why FawkesJs

• NodeJS has good async support that PHP lack of
• Laravel is the first choice in PHP, however NodeJS is still full of framework choices
• Express in NodeJS is good, however its too minimalist.
• Loopback is good, however personally I think Laravel structure is somehow better than Loopback - more organized
• With Typescript, we can have better type checking during development time. Convenient to develop with atom
• Name is just a symbol, its so hard to come out with a good naming
• Rust seems promising, however I’m still waiting for Hyper to implement async IO.

## Usage

• git clone https://github.com/fawkesjs/fawkesjs-starter

# Lubuntu to replace Window

### Why Lubuntu

As a developer, you must have heard of ubuntu. FYI, Lubuntu is a light weight version of Ubuntu. Using Lubuntu, you can have more control on your PC.

### Advantage for replacing Windows for Lubuntu

• Combination of Windows 7 with command line feeling
• Directly use docker container to run application instead of virtualbox, which provide a higher speed.
• Faster speed for most of the program, for example android-studio. This might be due to less backend application run in Windows (And it is hard to disable those application).
• More control on the system and more debug message can be seen.

• Most gaming software run natively in windows, the worst things is I have installed lubuntu xenial 16.04LTS version and they have dropped support for my AMD RADEON graphic card model,
• The UI is not as beautiful as Windows

### Some bug Fix

• Fix no sound
install restrict-ubuntu

• Fix frequent crash in dell inspiron graphic card: upgrade from kernel 4.4 to kernel 4.6
• Local Support: go to start > Preferences > Language Support
• Unable to start docker: sudo docker daemon -D -s vfs

### Some example

• Run this blog locally
cd /e/nghenglim.github.io/ # contain the repo

# Kaggle contest review - Bike Sharing Demand

This kaggle bike sharing demand challenge is to forecast use of a city bikeshare system.

### Summary

Bike sharing systems are a means of renting bicycles where the process of obtaining membership, rental, and bike return is automated via a network of kiosk locations throughout a city. Using these systems, people are able rent a bike from a one location and return it to a different place on an as-needed basis. Currently, there are over 500 bike-sharing programs around the world.

The data generated by these systems makes them attractive for researchers because the duration of travel, departure location, arrival location, and time elapsed is explicitly recorded. Bike sharing systems therefore function as a sensor network, which can be used for studying mobility in a city. In this competition, participants are asked to combine historical usage patterns with weather data in order to forecast bike rental demand in the Capital Bikeshare program in Washington, D.C.

### Evaluation

Submissions are evaluated one the Root Mean Squared Logarithmic Error (RMSLE). The RMSLE is calculated as

Where:

• n is the number of hours in the test set
• pi is your predicted count
• ai is the actual count
• log(x) is the natural logarithm

### Method

Data preprocess with python. Using random forest number of trees = 50. Result:

### Thought

This is the first kaggle challenge that I participate in because of an coursera course Introduction to Data Science. During the process of competing, I have improved quite a lot. This is my first kaggle competition, and is not the last. I am currently working on the challenge with prize pool. Hope will have a good result with state of the art machine learning technique - deep learning.

Its quite interesting working in kaggle project as I am competing with the world data scientist. By the way, this is my kaggle profile

# Coursera course review - From Nand to Tetris

### Course Summary

Build a modern computer system, starting from first principles. The course consists of six weekly hands-on projects that take you from constructing elementary logic gates all the way to building a fully functioning general purpose computer. In the process, you will learn – in the most direct and intimate way – how computers work, and how they are designed.

### Rating

I think this course is great for programmer with no electrical engineering background. After taking this course, now when I do coding, I can imagine the background process done by the laptop – logic gates, ALU, RAM, BUSES, machine language and the assembly language.

### Notes

• I did not do the assignment of this course, as it needs to install a software that chrome thinks that it is harmful.
• This course require no hardware to start, it uses a software program to simulate and to write a logic gate. From the logic gates we build a 16 bits pc.
• Nowadays, we are building a computer from a computer.
• There are no part 2 yet, the book “From Nand to Tetris” should contain from assembly to tetris part.

# Coursera course review - Android

This course full name is Programming Mobile Applications for Android Handheld Systems, and it contains part 1 and part 2. It is taught by Dr.Adam Porter from University of Maryland.

### Favourite Part

The peer assessment is this course is great! In the peer assessment, I have to build an android app from scratch. The community is great, here is the peer assessment feedback of Android Part 2.

### What I have learnt

In this 2 course, I have learnt the basic of Android handheld system. All the functionality shown in below screencast. The app shown in the screencast is built by myself from scratch for the peer assessment.

### Personal thought

Android programming is quite important in the future IoT world, as most of the IoT could be monitored through Android app. Many valuable data will come from it.

With this course, I have learnt the basic of Android programming and have quite some understanding on Android architecture.

# Paper reading - Weight Uncertainty in Neural Networks.

### Background

Backpropagation, is a well known learning algorithm in neural network. In the algorithm, the weight calculated is based on the out put of the result. To prevent overfitting and introduce more uncertainty, its often comes with L1 and L2 regularization.

Weights with greater uncertainty introduce more variability into the decisions made by the network, leading naturally to exploration

Instead of a fixed value, they view neural network as a probabilistic model.

In Dropout or DropConnect, randomly selected activations or weights are set to zero. However in Bayes by Backprop, the activation is set based on its probability. When the dataset is big enough, its similar to the usual backpropagation algorithm, with more regularization.

### Result

1. When classifying MNIST digits, performance from Bayes by Backprop(1.34%) is comparable to that of Dropout(~=1.3%), although each iteration of Bayes by Backprop is more expensive than Dropout – around two times slower).
2. In MNIST digits, Dropconnect(1.2% test error) perform better than Bayes by Backprop.

### Personal Thought

This paper comparison based on MNIST test error is not accurate enough, we should compare its false positive result with human eye classification - as some of MNIST labelling is arguable.

Bayes by Backprop might achieve higher performance in specific situation.