Owen Ou's Blog
user

Owen Ou

I'm a hacker.

Featured

go

My Lightening Talk At GopherCon 2015

Posted on .

I demoed ccat at GopherCon 2015. Enjoy :-)

Featured

go

Fast GitHub Command Line Client Written in Go

Posted on .

About nine months ago, I started gh, a fast command line wrapper around git with extra features and commands that make working with GitHub easier. Today, I’m very glad to announce its 1.0.0 release has landed!

Featured

go

Write Build Tasks in Go with Gotask

Posted on .

One of the things that I miss a lot when programming in Go is being able to write build tasks in Go itself. The de facto build tool for Go is make. Make is simple, classic and gets the work done. But it falls when build tasks are becoming complex. Another drawback with make is that it’s completely isolated from the host language: there’s no way to import and make use of any Go code. Build tools like ant or maven also suffer for similar reasons.

Featured

git github

Ten Things You Didn't Know Git And GitHub Could Do

Posted on .

Git and GitHub are powerful tools. Even if you have worked with them for a long time, it’s likely that you haven’t stumbled across everything yet. I collect 10 common tricks for both Git and GitHub that potentially increase your day-to-day productivity.

Featured

patterns rails

PoEAA on Rails

Posted on .

The book Patterns of Enterprise Application Architecture (PoEAA) laid the blueprints for Rails’ architecture. When choosing which enterprise design patterns to encode into the framework, Rails picked, to name a few, Active Record, Template View, Application Controller, etc. By covering these patterns with a sweet coating of convention-over-configuration, Rails simplifies pattern analysis a lot.

These design assumptions were absolutely pragmatic for the type of applications that Rails was targeting at. However, as applications growing more and more complex, developers are starting to realize these default architectural patterns may not scale very well. Typically, four main areas are overloaded in an enterprise application:

  1. high coupling between domain model and data source,
  2. bloated domain model with a mix of domain logic and application logic,
  3. presentation behaviour leaked into views, and
  4. high coupling between view data and template

To understand these problems better as well as to figure out possible solutions, I would like to walk you through some enterprise patterns from the same book that Rails’ architecture heavily bases upon.