R&D
A Successful Git Branching Model
· β˜• 12 min read
This article is built around Git, the tool that controls all of our source code. 1. Why Git? For an in-depth discussion of the pros and cons of git versus centralized source control systems, see here. There has been far too much heated argument on this subject. As a developer, I currently prefer Git over other tools.

JavaScript Event Handling Mechanism
· β˜• 4 min read
1. Event Handling Models: Bubbling and Capturing 1 2 3 <div id="outer"> <p id="inner">Click!</p> </div> In the code above, a div element contains a p child element. If both elements have a click handler, how do we know which one will be triggered first? To solve this problem, Microsoft and Netscape proposed two almost completely opposite concepts.

Getting Started with Character Encoding in Python
· β˜• 3 min read
Background: I had just finished a Django data-query web project. The data came from internal API queries, and every query had to call several APIs to fetch the data and render it on the front-end page. Since the relevant data does not change often, I designed a cache to improve

Using Celery in Django
· β˜• 3 min read
Scenario one: the company is preparing to push an email announcement to all employees. Using a wrapped mail library API and looping over every employee to push the emails will leave the main program stuck in the loop and unable to respond, which is not what we want β€” we want to be able to carry on with other operations normally after clicking execute.

Ghost Source Code Analysis (Part 1): Directory Structure
· β˜• 1 min read
Ghost version:“version”: “0.9.0-beta.2” |— content Content directory | |— apps directory, currently empty; apps may be deployed directly on Ghost in the future | |— data Database folder | |— images Image folder | |— themes Ghost theme folder |— core Core module directory | |— client Client-side code folder