Feng Xia


Introduction of Juju charms

Juju charms are, charming. It promises a selection of blueprints that hold magic to make an application deployment easy. But devils are in the details, as always the case. In this article we will walk in the charm world to learn its design.

Bundle, charm, service, application

Juju terms can ...


Juju deploy and Provider

In this article, we have demonstrated how Juju deploys a charm, including what makes a node eligible as a target and what files will be put on by the deployer.If you recall, there were four steps in a deploy process:

  1. Add a new machine to the cloud environment. In ...



What a wonderful editor!

I wouldn't even call it an editor because it can do so much beyond text editing. Still on the learning curve to get a grasp of what it can do in my daily development workflow. Here is to document the init.el that I'm ...



My favourate desktop manage which tiles windows neatly so I never worry about cluttered view while opening and closing windows.

Here is the config file I'm using.

# http://opensource.conformal.com/cgi-bin/man-cgi?spectrwm

# colors for focussed and unfocussed window ...


Juju charm deployment

We have covered Juju's bootstrap phase. In this article, we will continue our research into another important function — juju deploy.

Deploy will command a node to pull down requested charm and install whatever needed based the charm's instruction. As the bootstrap research, I'm interested in the internal ...


Juju bootstrap process

The very first command user will encounter is the juju bootstrap. It createa a special machine — state controller, machine-0, control node, etc. — naming convention aside, it is the brain that tracks others nodes in the cloud, applications installed and their status.


Through research I want to learn about its ...


Juju charm model

This article is a high level view of Juju's internal modelings. For me it was fairly confusing when looking at its document which has an army of these concepts: charm, bundle, model, unit.... of course, each of them makes sense after a while. Its terminology page helps on understanding ...


Targets in MAAS lab

After setting up the MAAS server and its subnet, bringing up a target node is simple.

All nodes must be on the same subnet, and they must support PXE boot.

PXE boot

The MAAS machine functions as both the DHCP server and the TFTP server ...


Setup a MAAS Virtualbox lab

Canonical MAAS is a deployment tool that can give a bare metal life by putting an OS on it. Working together with Juju, they can setup a cluster of applications quite quickly. Think of them as a package manage like Ubuntu's apt-get, but in the context of a cloud ...


SPA: World Snapshot

World Snapshot

The joy of making graphs in a data-driven web application has been the highlight that kept me going from project to project. Once all things are hooked up and data can be created in a meaningful way, the ultimate presentation are reports and graphs ...


SPA: car leasing calculator

Project Car Leasing Calculator

Car leasing rooted in my own experience while researching for a new car. After putting together an Excel to model the car leasing process, I started to think how to make the lesson learned available for other buyers. Also, I figure this ...


Deployment architecture

Deployment strategy for system architecture is centered around AWS services: EC2 for application server, RDS for database, and S3 for static files and media files. AWS does have message service as well. But to maintain a fair level of portability, I am not using that. Instead, vanilla message broker such ...


General system architecture

The word "system architect" has been puzzling to me. I was hired to be one at one point. But it was not a comfortable position. How much do we understand the business? What is the problem we are to solve? How does ...


DIY Pelican theme

As a Python house, Pelican is definitely a winner for our blog site. But like any software engineer who hold a high standard to his work, I got turned off by all the available themes. "Ugly", "Where is the document?", "Why my translation is not shown?", I felt running in ...


Prototype needed

Building a prototype is a must-have for any new project and new business idea. It is not only a way to test out the initial thoughts so we know it is feasible, it also builds a common platform for client and developers to communicate while they are looking at the same thing.


ODOO8 native server loading process

During daily development of ODOO8 modules, one thing I have been noticing is the slowness when ODOO first boot up. We are observing up to minutes of a bootup time. This plainly is too slow. Watching debug prints indicates that ODOO scans through all modules listed on Python path and ...


Buildbot continuous integration setup

The whole point of quick development cycle is to shorten the path between a verbal or written requirement, and an actionable application that reflects an implementation of this requirement. Therefore, it becomes crucial to set up an CI environment not only to facilitate development and testing, but to enforce our ...


Fashion ERP — reports

In part one and part two, we have reviewed inventory management and order management. Their functions are meant for operator to book-keep information of daily operations. Once these data points have been captured, the power of the application shines in term of data analysis and reporting.

Reports can be grouped ...


Fashion ERP — orders

In part one I have shown the design and function behind Product and Inventory management. In this article I'll talk about orders.

Sales order and purchase order are like two sides of the same coin. Each sales order(SO) can include a mixed bag of products from different vendors ...


Fashion ERP — introduction

Project Fashion is an ERP system built from ground up based on operations in an international trading company who has a specialty in fashion products. Each season there are between 10 and 20 vendors and a few thousand new SKUs. Most vendors roll out new designs twice per year — spring ...