Clojure Toolchain Reloaded

Clojure keeps growning up, and my 2.5-years old guide for setting up Clojure environment on Mac OS X had been out-of-date for quite a while. The toolchains based on Leiningen 2 and nREPL rise from underground, become really powerful and easy (even joyful for most of us) to use, and de facto standard. Nearly all main stream developing environments provide solutions for serious Clojure developers: Eclipse + Counter Clockwise, IntelliJ IDEA + La Clojure, Sublime Text 2 + SublimeREPL, Vim with fireplace.vim, etc.1, and the favorite I finally found several months ago, Emacs Live.

read more

iOS 7

In my opinion, the major tasks for Apple this year are all about software, especially in the iOS eco-system.

iOS has very solid Unix foundation and decent application framework. For a long time iOS had incontrovertible advantages over its rivals: performance, security, smooth user interaction, etc., most of which are still advantages today. But we all know that some incapabilities in iOS, especially compared to Android, are becoming more and more important aspects that Apple cannot ignore. Consider the following facts: Android may not be rendering the UI animation as smoothly as iOS always does, but it’s been getting better and better since Android 4.0, while iOS still doesn’t allow third-party apps customize the lock screen or put widgets on any part of the main UI. See the difference? Android’s problems are ‘not as good as iOS’ and iOS has some incapabilities. If Apple want more people to choose iOS it should persuade the swing people (not the fans) that iOS is better in all aspects. It’s a prerequisite to eliminate those incapabilities ASAP.

Ars Technica posted their staff wish list for iOS 7 last week. Most features in their list are good ones but not the critical ones. Base on the above eliminating incapabilities theory I’ll list mine below, divided to developer and user categories.

read more

A Brief Guide of (RESTful) SOA, Part II

In the first part of this series we have discussed the core concepts of RESTful architectural style and gives some guideline in how to define the system and prepare for defining the APIs specs, which will be covered in this part.

Level III: Define and Tune the API

Defining API specs is the most important part of all and it’s a continuous progress in the whole lifecycle, mostly documentation oriented. A simple and neat document collaboration platform is very useful. I suggest facilitating tools such as MediaWiki or Markdown + GitHub etc. Then you can follow these sections below.

read more

Europe Summer 2012 and 500px

I spent my summer vacation with my family in Germany, Austria and Switzerland. It’s the first time I visit Europe. Had bunch of photos, most of which are taken by my Fujifilm Finepix X100 with its wide conversion lens WCL-X100. After one and half months I finally picked up ~150 photos and uploaded them to 500px.

X100 is a really amazing camera. Its top-of-the-line APS-C sized CMOS sensor provides great resolution and SNR. Its prime lens (with field of view equivalent to 35mm and 28mm lens on full frame) are especially suitable for landscape and cultural photography. iPhone 4S is a great backup, provide fairly good photos even in some typically difficult scenarios for compact DCs. Remember all these are very lightweight. Farewell my big DSLRs. The best cameras are the ones you always take with you.

As for the digital darkroom, Aperture is a perfect tool both on organising and editing. And the 500px Uploader developed by iKenndac significantly simplifies the process of uploading photos to 500px. But I have some serious suggestions for 500px. Yep, this is the real reason I wrote this blog.

read more