Who and What is David Yang?
As an enthusiastic developer and a former entrepreneur, I started my career as a co-founder of Veloxsoft, Inc from 2000. After finishing the successful 15-year experience in the company, I'm on the verge of starting another career as a programmer to keep up with the rapid technology advance.
My detailed profile can be founded at LinkedIn Profile and I'm reachable via an email.
Personal Interests
Scala : A hybrid language of OOP and FP
FP(Functional Programming) is getting more and more attention for large-scale service implementation and robotics which require robustness and scalability. As a developer accustomed to the traditional imperative programming, I realized that learning FP and programming in a FP style is both challenging and intriguing. Since Scala runs on top of JVM and provides a seamless integration with Java, it reminds me of C++, which incorporates C and OOP. With Scala, either a pure OOP or a pure FP would be possible, as well as a hybrid of OOP and FP. Basically, I like such flexibility of the language even though that flexibility may lead to complexity sometimes. It's about 4 months that I started to learn Scala. I can still realize that there are so many things to learn and remember more. I frequently google the related Scala stuffs including the API reference and programming advises.
Algorithms and data structures
In order to refresh my programming skills, I'm reading the classical book, "Introduction to Algorithms, 3rd Edition" from start to end. The book is very well-written and explains many interesting problems in a rigorous way. Understanding explained algorithms and finding solutions to problems and exercises are frequently challenging to me to a level of frustration. However, squeezing my head is exciting and makes me feel alive. As my personal project, I've implemented many algorithms and data structures explained in the CLR book with the Scala Language. The current snapshot can be found at David's Algorithm & Scala Study
Linux for cloud systems and IoT environments
I installed several Linux distributions onto my notebooks and computers in my house to become more familiar to Linux environment with help of VMbox and Hyper-V. Among them, Gentoo and coreOS look interesting to me.
- Gentoo : Its package system is source-based, not binary-based. Every packages should be compiled on the machine, which takes some time. Instead, all applications can be specialized to the machine with a clever setting of CFLAGS and other build instructions. I like its flexibility. Chromium OS and coreOS can be considered as a spin-off distro from Gentoo.
- coreOS : It is a micro OS, concisely packaged for using in cloud systems and IoT environments. It uses Docker as the basic package system and provides a distributed computing environment through etcd and fleetctl. Based on the ChromeOS upgrade mechanism, it provides a seamless and recoverable system upgrade with help of a dual-root system. I like its conciseness. Even though there are other similar micro OS's such as Snappy Ubuntu and Project Atom, I feel the future of coreOS is bright because of its fast movement and Google's endorsement.
Docker and containerization
Similarly to virtualization, containerization provides a virtual execution environment for applications. As a VM developer, I have a natural interest in such virtualization technologies. Coupled with Linux, containerization may provide an isolated and secure environment for execution of heterogeneous types of applications with overheads lighter than the Java VM approach. This lightweight isolation from Docker/Containerization can lead to interesting use cases on various embedded system areas. For example, an automotive system may be benefited from containerization. Docker can provide separate execution environments for the mission-critical internal apps and the downloaded/3rd-party apps in the system. A failure of the downloaded apps does not influence the whole system, which ensures a robust operation of the system.
Machine learning and deep learning
Nowadays, machine learning and deep learning become very hot and proliferated to many business areas coupled with cloud services. The more information gathered through IoT infrastructure, the more powerful machine learning services will be. In a near future, I want to study machine learning stuffs more rigorously. I hope Scala to be a useful tools for the purpose.
My repositories (github.com/bluepilgrim)
Currently, my github site contains three repositories.
mentisware : repository to store my personal programming projects. Currently, containing "Algorithm Study".
system_setup : repository to store my personal computing environment settings for Linux and Docker.
bluepilgrim.github.io : repository to store my official web page.
More detailed explanation resides in each repositories as a README.md file.