Owen Ou's Blog
user

Jingwen Owen Ou

I'm a hacker.

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.

Featured

testing rails web_service

Automatic Testing of REST Web Services Client with Rails

Posted on .

Testing REST web services client has never been easy. It requires a running web server, multiple threads, network conection and complex transaction management.

Ideally, REST web service client test should have the following characteristics:

  1. The experience of testing REST resource is similar to that of testing a ActiveRecord model
  2. Start up and shut down web server for the purpose of running REST web services
  3. Rollback test data after each test
  4. Control fixture creation for REST web services
  5. All tests are automatic

In this article, I demonstrate solutions to each of those mentioned.