RSS feed [root] /weblog



title search:


Tue Jan 17 22:34:04 HKT 2017


log down some useful resource

(google search) (amazon search)
download zip of files only

Wed Mar 01 00:26:23 HKT 2017 From /weblog/house


free to ask medical advice:

if you English is good

If not:

(google search) (amazon search)

Tue Feb 28 16:39:40 HKT 2017 From /weblog/java/performance


Free online GC log Analyzer -

Free online thread analyzer -[..]y-and-cpu-monitoring-tools-and-technique

(google search) (amazon search)

Tue Feb 28 00:03:14 HKT 2017 From /weblog/science/animal


about-search-and-rescue-dogs -[..]arch-and-rescue-dogs-youll-want-to-know/

(google search) (amazon search)

Sat Feb 25 18:26:46 HKT 2017 From /weblog/software_engineering/testing

best practices

Consider the risk of not being tested -[..]sting-on-toilet-risk-driven-testing.html

Fidelity, Resilience, Precision -[..]testing-on-toilet-effective-testing.html

Attributes that unit test should have: Functionality, Accuracy, Instant, Locator -

Isolation -[..]/2012/04/is-your-unit-test-isolated.html

Tips of keeping unit tests running fast -

Testing Patterns -

Continuously to break thing so that we know our system is solid -[..]11/04/working-with-the-chaos-monkey.html

First rule -[..]08/10/01/nothing_is_too_trivial_to_test/

Test first/last is not important? Unit test either? What do you think?

* The name of the test should describe the requirement of the code
* There should be at least one test for each requirement of the code. Each possible path through of the code is a different requirement#
* Test the goal of the code, not the implementation[..]AppQuality&asrc=EM_NLN_761453&uid=703565[..]og/2007/08/how-not-to-run-beta-test.html

The teaser: Fast, Isolated, Repeatable, Self-validating, and Timely. -[..]es/2007/08/02/not-a-task-but-an-approach

Corner cases -[..]s/2007/02/testheuristicscheatsheetv1.pdf

One of the targets of TDD coding -[..]e-code-is-about-managing-complexity.aspx

Design for unit test -[..]es/content/DesigntoUnitTest/article.html

Push and Pull approach -

When not to test -

Test the story, rather than the implementation -[..]ving-to-scenario-based-unit-testing.html

Test the configuration -[..]TSS10ctqa&asrc=EM_NLN_8746433&uid=703565

Feel the deep synergy of design and test constraint -[..]athers_blog/2007/09/the-deep-synerg.html

Another set of principles for automated testing -[..]of-principles-for-automated-testing.html

Priority for tester -[..]

A lot of links -[..]-links-biased-toward-exploratory-testing[..]nit-tests-5-principles-for-unit-testing/

Some information and suggestion about setting up a local integrated testing environment -[..]

Virtual Panel: Code-to-Test Ratios, TDD and BDD -

A test is complete when its body contains all of the information you need to understand it, and concise when it doesn't contain any other distracting information. -[..]ting-on-toilet-what-makes-good-test.html

Discussion about naming the tests -[..]14/03/17/getting-junit-test-names-right/[..]ting/writing-clean-tests-naming-matters/[..]esting-on-toilet-test-behaviors-not.html <- Test behaviour, not method. This will make your tests more resilient since adding new behaviors is unlikely to break the existing tests, and clearer since each test contains code to exercise only one behavior.

Tips on having better assertion or cleaner test -[..]ur-test-code-with-custom-assertions.html[..]-friday-most-internal-dsls-are-outdated/[..]ertions-with-a-domain-specific-language/

Good to prevent setup and tearDown?

#1 Treat Test Code as Production Code
#2 Use Test Patterns to achieve great readability
#3 Avoid Unreliable Tests
#4 Test at The Appropriate Level
#5 Do Use Test Doubles[..]insights/blog/write-better-tests-5-steps[..]om/core-java/junit/junit-best-practices/

Document ‘Why’, specify ‘What’, automate ‘How’ -[..]/agile/2016/05/24/large-test-suites.html

(google search) (amazon search)

Thu Feb 23 18:39:36 HKT 2017 From /weblog/misc


(google search) (amazon search)

Thu Feb 23 16:14:03 HKT 2017 From /weblog/design/interview


Interview with JOOQ founder -

(google search) (amazon search)

Wed Feb 22 15:10:51 HKT 2017 From /weblog/database/vendor


Few distributed SQL DB vendor information -

Approximation DB -[..]e-200x-faster-without-having-to-pay.html

Discuss and compare difference technology of querying journey(log) data -[..]on-log-and-data-storage-query-techniques

(google search) (amazon search)

Tue Feb 21 17:44:20 HKT 2017 From /weblog/design


A paper show the evolution of a DSL -

A stock trading order example of DSL -[..]05/designing-internal-dsls-in-scala.html

What is the difference between API / DSL if we don't write a parser for our language? From Martin Fowler's blog - , it is mentioned:
Piers Cawley makes the point that a key characteristic of DSLs is their narrow focus on a domain.
I think this is a very good summary, usually if most of the APIs are getXXX() , setXXX(), loadXXX() , createXXX() ........ Then we mostly design APIs that expose low level detail to the API user to work on, which, is work but user probably work nicer if we can come up with language like API that allow users to do their work in more descriptive level.

I think if API design like that usually it will reduce the code duplication, what ever real duplication or conceptual duplication. It probably already apply "Tell, don't ask" style -

A discussion about applying "Tell, don't ask" which lead to message passing architecture -[..]07/10/do_messages_want_to_be_asynchr.php

And other discussion about "Tell, don't ask"[..]/2008/11/demeters-law-tell-dont-ask.html[..]part-two-demeters-law-tell-dont-ask.html[..]rt-three-demeters-law-tell-dont-ask.html

One good sample with explaination -[..]-it-really-domain-specific-language.html

Few links -

From CRUD to DDD -[..]2/15/from-crud-to-domain-driven-fluency/

I like this: "XML abuse reduction (conducting an “XML Intervention”)" -[..]ps-internal-dsl-draft-outline-notes.aspx

DSL maybe the result of encapsulation -

Excellent implementation of extending java yourself -

How DSL method named -[..]he-java-fluent-api-designer-crash-course

(google search) (amazon search)

Tue Feb 21 17:42:46 HKT 2017 From /weblog/software_engineering/team


Servant Leadership -[..]t-be-my-style-of-servant-leadership.html , similarly, what a leader should do is helping other to do better, not to be the best of the team -[..]/03/onthings-manga-taught-me-leadership/[..]what-do-you-look-for-in-a-servant-leader

Mentorship -[..]entorship-in-software-craftsmanship.html

Keep focus, or lose -[..]0/how-steve-jobs-influenced-googles.html

The anti-pattern and suggestion about new joiner -[..]-you-will-face-as-a-software-team-l.html

Believe me, the objective was not to make decisions, but to create the right environment so that the right decision would be made.

A nice set of questions to ask for a leader -[..]3/questions-on-influence-and-growth.html

In short, don't put your shoes on others' foot -[..]earned-in-the-army_Printer_Friendly.html

4 types of leadership style, well, I think he model leadership a little too simple -[..]s-the-best-leader-for-the-software-team/

Your experts are spending all their time mentoring novices. Therefore:

Put one expert in charge of all the novices, let the others develop the system. -[..]010/2/25/organizational-pattern-day-care

What is the key Characteristics of great team -

This is very insightful obversation, in many time we look into something work in short term but not really solve the problem, a discussion about why so many people like micromanagement even if they know it is bad -[..]m/2011/01/programmers-and-micromanaging/[..]best-thing-you-can-do-for-your-team.html <- is provide required information, probably more transparent.

Don't make me think... but you have no business not allowing me to think if I choose to. -[..]allow-me-to-think-just-dont-make-me.html

How To Lead Clever People, actually I am double about this, let's see -

How to grow the leadership -[..]og/mpd/2012/11/nurturing-leadership.html

他在公司的名言是「When you give, you get」。他在上海成立科研中心,大方讓上汽參與,他認為各懷鬼貽的氣氛不可能做出成績。合資公司理論上是獨立個體,合資公司員工應把合資公司利益放到最前,而不是自己原屬公司的利益,但很少人做得到。慢慢下來,上汽也逐漸對墨菲產生尊重。


10. 永遠記得,做出決定前要先綜觀全局。

9. 否定別人跟切換開關一樣容易。但你最好拼死抵抗這種衝動,因為你也曾經做過蠢事。你做過爛決定,然後學習、成長,別人也一樣。

8. 掃地、擦桌、關燈。哪裡有漏洞要補就去補——即便那很瑣碎、沒人會注意。你必須做這些事去造福你的產品、你的公司,以及所有你們團隊共同打造的,令眾人驚艷、神奇的事物。

7. 你無法做所有的事。閉上眼睛,向後仰倒,學會信任。

6. 顯然有某種更為有效的方法能處理你正在做的事。是什麼呢?在每天回家的路上反覆思考吧。

5. 找出總是在依賴你的人,想想要怎麼做才能協助他們,讓他們自力更生。或許你覺得當個壟斷市場的鮭魚供應商很重要,但如果小鎮的所有人都學會捕魚,便能將你解放出來去做別的事。像是學習種小麥,或是如何馴服那些可愛的小狼。

4. 別說任何對當下討論沒有貢獻的話。你的聲音並非悠揚到絕對必須被聽見。

3. 做得出最好的決定比不上處在得以確保做出更多最佳決定的流程。

2. 就像你經常發表意見那樣,多說感謝和鼓勵的話語。

1. 最重要的是:永遠要掃除障礙物。那怕只是玩玩手指、看看窗外的雲,也別讓你那愚蠢、幼稚的自我阻礙團隊前進的腳步。[..]oftware-leadership-6-read-every-checkin/[..][..]op-5-mistakes-for-first-time-tech-leads/

How to lead with diplomatic -[..]how-to-be-both-assertive-and-diplomatic/

Dr. Nico Rose cites research that finds that happy people tend to be more effective leaders. -[..]-your-money-managing-your-life-part-one/

(google search) (amazon search)

Thu Feb 16 22:45:06 HKT 2017 From /weblog/languages/c


(google search) (amazon search)

Thu Feb 16 10:04:23 HKT 2017 From /weblog/database/vendor


SQL 2005 JDBC fix the resultset re-read throws exception problem. However, you need to use executeUpdate() for insert,update and delete instead of execute() for SQL 2005 JDBC, otherwise will throw exception on this.

Other that, statement.executeBatch() will throws exception:[..]kid=e13a8009-7466-4803-ba19-6bfd4b5f8966

Update of newer version -

New function of SQL server 2014, In-Memory Optimization tables, suppose to be faster? - MOT table also support native compiled query - , and lock free write?

From microsoft, Use the columnstore index to achieve up to 10x query performance gains over traditional row-oriented storage, and up to 7x data compression over the uncompressed data size. -

A tool from M$ to help sql server user to manage change of database: . Other similar product is DBGhost, also only work for SQL server

There is a free version of SQL server 2005 call SQL server express, which just like MSDE

Here is a comparison:[..]le/ArticleID/49618/sql_server_49618.html , may be we can use that instead of MSDE 2005 and discoutinue support of SQL server 2000 so that we can test one thing less?

Import CSV to SQL server -[..]oad-comma-delimited-file-csv-in-sql.html

Shriking DB cause performance problem... not sure how long this finding is hold -[..]eases-fragmentation-reduces-performance/[..]ver-storage-internals-part-1-basics.aspx

Get the metadata -[..]-metadata-from-sql-server-catalog-views/

Date functions -[..]roduction-to-sql-servers-date-functions/

Enhancement of 2016 -

Tool to rescue sql server -

(google search) (amazon search)

Thu Feb 16 00:11:57 HKT 2017 From /weblog/political


羅斯福 (Franklin D. Roosevelt, 1882-1945) -[..]%9A%E5%B0%8D%E4%BA%86%E4%BB%80%E9%BA%BC/

Michael Bloomberg -

Many leaders are the opposite—forceful and even dogmatic. And yet, they are very successful -[..]from-using-crucial-conversations-skills/

(google search) (amazon search)

Thu Feb 16 00:03:22 HKT 2017 From /weblog/design/pattern


(google search) (amazon search)

Wed Feb 15 17:35:52 HKT 2017 From /weblog/java/libraries


Discussion of difference Java base object to object mapper -[..]013/10/java-object-to-object-mapper.html

Some information about JOOQ -

(google search) (amazon search)

Sat Feb 11 22:53:30 HKT 2017 From /weblog/entertainment


讓我狠狠想你——王家衛電影的思念與愛情 -[..]%9D%E5%BF%B5%E8%88%87%E6%84%9B%E6%83%85/

十大最浪漫電影 -[..]A3%E5%B9%B4%E8%8F%AF-%E4%B8%8A%E6%A6%9C/

不按牌理出牌!影史10大即興演出 -[..]02/top-10-deadliest-horror-villains.html

歎為觀止的一鏡到底!影史著名12顆長鏡頭畫面 -

你是動作科幻迷嗎?影史40把知名槍械大集合! -

「我要打十個!」 回顧甄子丹7場精彩武打場面 -

喜劇之外:班史堤勒 -

中土世界的魔法師:彼得傑克森 -

Famous robots -

Robin Williams -[..]-actor-and-comedy-genius-robin-williams/[..]ilarious-stand-up-comedy-jokes-from.html

鈕承澤 -

Matrix -[..]hings-you-probably-didnt-know-about.html[..]/what-does-an-engineer-see-in-the-matrix

[專題] 從黑澤明的《七武士》淺談剪接在電影發展裡的奧祕 -

About Pulp Fiction -

Johnny Deep -

Inception -

Evolution of sound in movie -

聽到聲就知影!8 首知名角色登場配樂! -

[專題] 跟著老師動疵動!十部你不能錯過的歌舞電影 -

[專題] 最熟悉的陌生人:六位你一定要認識的電影片頭設計大師 -

傑克葛倫霍, Jake Gyllenhaal -

About "Back to the future" -[..]facts-you-probably-never-knew-about.html

Star war fact -[..]s-to-bring-out-your-inner-jedi/?view=all

Alan Rickman -[..]should-know-about-alan-rickman/?view=all

10 個不露骨卻讓人臉紅心跳的床戲-

(google search) (amazon search)

Sat Feb 11 16:11:56 HKT 2017 From /weblog/career/jobs


A discussion thread about how to due with boss/manager that don't give you anything to do -

Requirement of a PA of one boss -

How to hire a good CEO -[..]13/if-when-and-how-to-avoid-hiring-a-ceo

How if boss asking for too much -

(google search) (amazon search)

Tue Feb 07 23:18:45 HKT 2017 From /weblog/java/fundamental


How difference platform implement nanoTime() -[..]12/02/what-is-behind-systemnanotime.html[..]62/is-system-nanotime-completely-useless

Java timezone ID reference -[..]etrive-locale-and-timezone-from-request/[..]m/java-date-time/java-util-timezone.html

setTimeZone affects calls to set(), but doesn’t change the existing Calendar time? So if we wanted to change the time zone we are working with, we have to adjust all the time fields too…but a SimpleDateFormatter still would show it as the current time zone. -[..]1/joda-time-the-future-of-java-datetime/[..]va-time-jsr-310-enhancements-java-9.html

(google search) (amazon search)

Tue Feb 07 19:07:19 HKT 2017 From /weblog/ai


Prediction API -

How google predict parking -[..]2/using-machine-learning-to-predict.html

(google search) (amazon search)

Tue Feb 07 15:44:58 HKT 2017 From /weblog/design


Nothing specific, mostly code clean up, refactoring and simplification, the performance boost was a surprise. <- This is a good one -[..]12/07/disruptor-v3-faster-hopefully.html

Is there anything we can do about this when designing algorithms and data-structures? Yes there is a lot we can do. If we perform chunks of work on data that is co-located, and we stride around memory in a predictable fashion, then our algorithms can be many times faster. For example rather than using bucket and chain hash tables, like in the JDK, we can employ hash tables using open-addressing with linear-probing. Rather than using linked-lists or trees with single items in each node, we can store an array of many items in each node. -[..]emory-access-patterns-are-important.html

Skip lists are used instead of b-trees because b-trees don’t scale. -[..]ast-mvcc-inmem-lockfree-codegen-and.html

Beware about the performance issue of static initalization -[..]-cause-problems-with-multi-threading-how

Experiment show why arraylist is better in most cases -

How to design low latency application in java -[..]5/chronicle-and-low-latency-in-java.html[..]ciples-of-high-performance-programs.html[..]principles-of-high-performance-programs/

Suggestion about how to determine number of thread pool -[..]rmine-Web-Applications-Thread-Poll-Size/

Beware the performance penalty of logging -

Keep thing dynamic -[..]ciples-of-high-performance-programs.html[..]st-rule-of-performance-optimisation.html[..]u/~rcs/research/interactive_latency.html[..]aling-data-platforms.html?SSLoginOk=true

Discuss about developing low latency financial application -

Discussion of object pooling -[..]-but-forgotten-trick-object-pooling.html[..]m_performance_part_1_object_pooling.html

Efficiency - the amount of work you need to do.
Performance - how fast you can do that work
Efficiency - governed by your algorithm
Performance - governed by your data structures.[..]e-difference-between-efficiency-and.html

Turning off power save mode on the CPU reduced brought the max latency from 11 msec down to 8 msec.
Guaranteeing threads will always have CPU resources using CPU isolation and thread affinity brought the maximum latency down to 14 microseconds.[..]eduler-jitter-using-cpu-isolation-a.html[..]

About design for performance for webapi -[..]y-decision-as-a-service-design-patterns/

check list -[..]ery-software-development-team-should-ask

Beware if system utilization over 80% -[..]/20/service-latency-and-utilisation.html

scalable-io-events-vs-multithreading-based -[..]lable-io-events-vs-multithreading-based/

How to find out bottleneck -[..]entile-latencies-in-Chronicle-Queue.html

(google search) (amazon search)

Fri Feb 03 10:45:17 HKT 2017 From /weblog/health


打游戲有助老年人集中注意力 -

康寧漢說,工作要求人們集中注意力,這使得其心理、社交及物質層面的能量精力消耗枯竭,而這一切又會導致壓力的產生并降低勞動者的生產力。他說:“從辦公桌邊抽身離去進行午間休息能讓人們遠離腦力枯竭的根源。這還會為你提供在晌午時分——而不是等到一天工作結束之際——恢復大腦活力、重整精氣神的機會。” -

補腦良方要學會 -[..]ain-that-your-brain-didnt-know/?view=all

在預防痴呆症方面,速度訓練已超越另外兩種流行的大腦訓練:記憶和推理練習。 -

know-about-multiple-personality-disorder -[..]-multiple-personality-disorder/?view=all

(google search) (amazon search)

Wed Jan 25 23:40:16 HKT 2017 From /weblog/investment


The hidden issue of low interest environment -

Volume and price change -[..]ding-change-and-stability-in-market.html

(google search) (amazon search)

Tue Jan 24 11:35:02 HKT 2017 From /weblog/photographic/collections


(google search) (amazon search)

Mon Jan 23 18:33:07 HKT 2017 From /weblog/design/concurrency


Stealing thread -

Intel Guide for Developing Multithreaded Applications -[..]or-developing-multithreaded-applications

Difference ways to stop a thread -[..]ept_url=/hpc-high-performance-computing/

Interesting, I am not sure if I agree, but chrome ( which use fork ) are really cool in performance:
There’s another problem with Unix programming in Ruby that I’ll just touch on briefly: Java people and Windows people. They’re going to tell you that fork(2) is bad because they don’t have it on their platform, or it sucks on their platform, or whatever, but it’s cool, you know, because they have native threads, and threads are like, way better anyways.

Fuck that.

Don’t ever let anyone tell you that fork(2) is bad. Thirty years from now, there will still be a fork(2) and a pipe(2) and a exec(2) and smart people will still be using them to solve hard problems reliably and predictably, just like they were thirty years ago.

MRI Ruby people need to accept, like Python (you have seen multiprocessing, yes?), that Unix processes are one of two techniques for achieving reliable concurrency and parallelism in server applications. Threads are out. You can use processes, or async/events, or both processes and async/events, but definitely not threads. Threads are out.

1x1 win M*N -

Best number of threads:
N = number of CPUs
U = target CPU utilization (0 <= U <= 1)
W/C = ration of wait time to cpu time (measured through profiling)

threads = N * U * (1 + W/C) -[..]ratio-of-java-threads-to-cpus-on-solaris

Another post about tuning thread pool -[..]ortance-of-tuning-your-thread-pools.html

Threads Basics -

The Dos and Don'ts of Multithreading -[..]-26-09-low-level-threading-table-of.html

(google search) (amazon search)