RSS feed [root] /weblog




login:

password:

title search:




 


Tue Jan 17 22:34:04 HKT 2017

weblog


log down some useful resource


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

Tue Mar 14 23:52:20 HKT 2017 From /weblog/learning

code


http://www.infoq.com/articles/kids-enthusiasm-coding

How to teach kid love coding - http://cn.wsj.com/big5/20170314/LIF170612.asp

(google search) (amazon search)


Fri Mar 10 17:49:16 HKT 2017 From /weblog/java/concurrency

Map


putall can cause ConcurrentModifcationException - http://cr.openjdk.java.net[..]ses/sun/management/Agent.java.sdiff.html

Note on writing CopyOnWrite wrapper - http://flyingspaniel.blogspot.com[..]ot.com/2010/12/copyonwrite-wrappers.html

Sometime this is a bit difficult for Chinese to be a good programmer, recently some colleague and me discuss about the behaviour of this class and look like we have difficult understanding

A: ConcurrentHashMap support for locking as this is thread-safe
B: ConcurrentHashMap is thread safe for read but not for write because there is no lock, we still need to have external lock to keep it thread safe. By the way, I get ConcurrentModificationException from this before.
C: ConcurrentHashMap don't support for locking but they still thread safe for all operations, which is how "This class is fully interoperable with Hashtable in programs that rely on its thread safety but not on its synchronization details." mentioned.

Too good that we can actually take a look at the source code to see what going on nowadays rather than just guessing - http://www.google.com[..]HashMap&sourceid=opera&ie=utf-8&oe=utf-8 By the way, this constructor is useful for a lot of concurrency access but actually not many developer notice about this - http://java.sun.com[..]rrentHashMap.html#ConcurrentHashMap(int, float, int)

Lazy initialization of map values - http://artisans-serverintellect-com.si-eioswww6.com[..]ect-com.si-eioswww6.com/default.asp?W122

HashMap.get() can cause infinite loop - http://lightbody.net[..]5/07/hashmapget_can_cause_an_infini.html

Discussing the effect of initCapacity() of HashMap in Java - http://saloon.javaranch.com[..]ltimatebb.cgi?ubb=get_topic&f=1&t=021171

OpenJDK and HashMap …. Safely Teaching an Old Dog New (Off-Heap!) Tricks - http://www.infoq.com/articles/Open-JDK-and-HashMap-Off-Heap

We can run search in ConcurrenctHashMap - https://dzone.com/articles/concurrenthashmap-in-java8

(google search) (amazon search)


Thu Mar 09 23:13:09 HKT 2017 From /weblog/design

visibility


Someone saying that having private method is anti-pattern, here is the discussion - http://www.infoq.com/news/2008/01/private-methods-tdd-design

Discussion of encapsulation - http://niket-this.blogspot.com[..]/encapsulation-does-it-really-exist.html

My view on this is that most of the time there's little value in self-encapsulation. The value of encapsulation is proportional to the scope of the data access. Classes are usually small (at least mine are) so direct access isn't going to be an issue within that scope. Most accessors are simple assignments for the setter and retrieval for the getter, so there's little value in using them internally. - https://martinfowler.com/bliki/SelfEncapsulation.html

(google search) (amazon search)


Tue Mar 07 22:50:23 HKT 2017 From /weblog/computer+science

Linguistics


Introduction of various java linguistics tools:

Lingpipe
OpenNLP
opennlp.maxent
Inflector

http://www.devx.com[..]/Article/35088/1954?pf=true#codeitemarea

Authors homepage - http://www.rodcoffin.com/ http://netsmith.blogspot.com/

Some other Natural Language Processing links - http://www.markhneedham.com[..]-attempt-at-natural-language-processing/

How google improve the translation - https://research.googleblog.com[..]016/09/a-neural-network-for-machine.html

(google search) (amazon search)


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

medical


free to ask medical advice:

http://www.netdoctor.co.uk/
http://www.healthcentral.com/
http://www.healthy.net/
https://www.verywell.com/

if you English is good

If not:
http://www.24drs.com/
http://www.lt3000.com/big5/index.html



(google search) (amazon search)


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

tools


Free online GC log Analyzer - http://gceasy.io/

Free online thread analyzer - http://fastthread.io/

https://dzone.com[..]y-and-cpu-monitoring-tools-and-technique

(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 - http://googletesting.blogspot.com.au[..]sting-on-toilet-risk-driven-testing.html

Fidelity, Resilience, Precision - http://googletesting.blogspot.com.au[..]testing-on-toilet-effective-testing.html

Attributes that unit test should have: Functionality, Accuracy, Instant, Locator - http://www.gilzilberfeld.com/2014/04/what-is-unit-test.html

Isolation - http://agileinaflash.blogspot.com[..]/2012/04/is-your-unit-test-isolated.html

Tips of keeping unit tests running fast - http://www.java-tv.com/2012/03/06/speeding-up-java-test-code/

Testing Patterns - http://c2.com/cgi/wiki?TestingPatterns

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

First rule - http://fishbowl.pastiche.org[..]08/10/01/nothing_is_too_trivial_to_test/

Test first/last is not important? Unit test either? What do you think? http://beust.com/weblog/archives/000477.html

* 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

http://xprogramming.com/xpmag/testFirstGuidelines.htm http://www.theserverside.com[..]AppQuality&asrc=EM_NLN_761453&uid=703565 http://www.coopercode.net[..]og/2007/08/how-not-to-run-beta-test.html

The teaser: Fast, Isolated, Repeatable, Self-validating, and Timely. - http://blog.objectmentor.com[..]es/2007/08/02/not-a-task-but-an-approach http://blog.objectmentor.com/articles/2007/08/02/which-came-first

Corner cases - http://testobsessed.com[..]s/2007/02/testheuristicscheatsheetv1.pdf

One of the targets of TDD coding - http://haacked.com[..]e-code-is-about-managing-complexity.aspx

Design for unit test - http://www.theserverside.com[..]es/content/DesigntoUnitTest/article.html http://openmymind.net/A-Decade-Of-Unit-Testing/

Push and Pull approach -
http://www.richarddurnall.com/?p=10
http://www.richarddurnall.com/?p=15
http://www.richarddurnall.com/?p=31

When not to test - http://www.junitmax.com/blog/?p=187

http://www.infoq.com/news/2009/06/love_agile_testing

Test the story, rather than the implementation - http://www.davesquared.net[..]ving-to-scenario-based-unit-testing.html

Test the configuration - http://searchsoftwarequality.techtarget.com[..]TSS10ctqa&asrc=EM_NLN_8746433&uid=703565

Feel the deep synergy of design and test constraint - http://michaelfeathers.typepad.com[..]athers_blog/2007/09/the-deep-synerg.html

Another set of principles for automated testing - http://a-sisyphean-task.blogspot.com[..]of-principles-for-automated-testing.html

Priority for tester - http://googletesting.blogspot.com[..]t.com/2011/01/new-years-resolutions.html

A lot of links - http://it-techexperts.com/tutorials/tutorials.asp http://testingspot.net/ http://www.exampler.com[..]-links-biased-toward-exploratory-testing

http://www.makinggoodsoftware.com[..]nit-tests-5-principles-for-unit-testing/

Some information and suggestion about setting up a local integrated testing environment - http://googletesting.blogspot.com.au[..]pot.com.au/2012/10/hermetic-servers.html

Virtual Panel: Code-to-Test Ratios, TDD and BDD - http://www.infoq.com/articles/virtual-panel-tdd-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. - http://googletesting.blogspot.com.au[..]ting-on-toilet-what-makes-good-test.html

Discussion about naming the tests - http://www.codeaffine.com[..]14/03/17/getting-junit-test-names-right/ http://www.petrikainulainen.net[..]ting/writing-clean-tests-naming-matters/

http://googletesting.blogspot.com.au[..]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 - http://blog.codeleak.pl[..]ur-test-code-with-custom-assertions.html http://blog.jooq.org[..]-friday-most-internal-dsls-are-outdated/ http://www.petrikainulainen.net[..]ertions-with-a-domain-specific-language/

Good to prevent setup and tearDown? http://www.yegor256.com/2015/05/25/unit-test-scaffolding.html

#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
http://www.thoughtworks.com[..]insights/blog/write-better-tests-5-steps

http://examples.javacodegeeks.com[..]om/core-java/junit/junit-best-practices/

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

(google search) (amazon search)


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

book


https://github.com/vhf/free-programming-books

http://www.oreilly.com/programming/free/

https://97-things-every-x-should-know.gitbooks.io[..]rammer-should-know/content/en/index.html

(google search) (amazon search)


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

data


Interview with JOOQ founder - https://www.infoq.com/news/2017/02/data-geekery-releases-jooq-3-9

(google search) (amazon search)


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

misc


Few distributed SQL DB vendor information - http://www.infoq.com/news/2013/11/sql-newsql-nosql

Approximation DB - http://highscalability.com[..]e-200x-faster-without-having-to-pay.html

Discuss and compare difference technology of querying journey(log) data - http://www.infoq.com[..]on-log-and-data-storage-query-techniques

(google search) (amazon search)


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

dsl


A paper show the evolution of a DSL - http://www.mockobjects.com/files/evolving_an_edsl.ooplsa2006.pdf

A stock trading order example of DSL - http://debasishg.blogspot.com[..]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 - http://martinfowler.com/bliki/DslReadings.html , 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 - http://c2.com/cgi/wiki?TellDontAsk

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

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

One good sample with explaination -
http://hamletdarcy.blogspot.com[..]-it-really-domain-specific-language.html
http://nat.truemesh.com/archives/000727.html

Few links - http://dreamhead.blogbus.com/logs/17667876.html

From CRUD to DDD - http://www.udidahan.com[..]2/15/from-crud-to-domain-driven-fluency/

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

DSL maybe the result of encapsulation - http://dreamhead.blogbus.com/logs/214225975.html

Excellent implementation of extending java yourself - http://www.infoq.com/presentations/JetBrains-MPS-DSL http://www.infoq.com/presentations/JetBrains-MPS-DSL-2

How DSL method named - http://tech.pro[..]he-java-fluent-api-designer-crash-course

https://tomassetti.me/domain-specific-languages/

(google search) (amazon search)


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

book


https://www.ossblog.org[..]ming-with-9-excellent-open-source-books/

https://www.ossblog.org[..]er-c-programming-with-open-source-books/

(google search) (amazon search)


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

leadership


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

Michael Bloomberg - http://cn.wsj.com/big5/20131022/DJF065929.asp?source=rss

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

(google search) (amazon search)


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

reactive


https://realm.io[..]ation-hugo-visser-rxjava-for-rest-of-us/

(google search) (amazon search)


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

mapper


Discussion of difference Java base object to object mapper - http://halyph.blogspot.com.au[..]013/10/java-object-to-object-mapper.html

Some information about JOOQ - https://www.infoq.com/news/2017/02/data-geekery-releases-jooq-3-9

(google search) (amazon search)


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

Boss


A discussion thread about how to due with boss/manager that don't give you anything to do - http://discuss.joelonsoftware.com/default.asp?joel.3.361868

Requirement of a PA of one boss - http://manincentral.blogspot.com/2008/03/blog-post_26.html

How to hire a good CEO - http://www.inside.com.tw[..]13/if-when-and-how-to-avoid-hiring-a-ceo

How if boss asking for too much - http://cn.wsj.com/big5/20170208/LIF141035.asp

(google search) (amazon search)


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

time


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

Java timezone ID reference - http://david.uebelacker.ch[..]etrive-locale-and-timezone-from-request/ http://tutorials.jenkov.com[..]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. - http://keyholesoftware.wordpress.com[..]1/joda-time-the-future-of-java-datetime/

http://blog.joda.org[..]va-time-jsr-310-enhancements-java-9.html

(google search) (amazon search)


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

google


Prediction API - http://code.google.com/apis/predict/

How google predict parking - https://research.googleblog.com[..]2/using-machine-learning-to-predict.html

(google search) (amazon search)


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

performance


http://highscalability.com[..]6/big-list-of-20-common-bottlenecks.html

Nothing specific, mostly code clean up, refactoring and simplification, the performance boost was a surprise. <- This is a good one - http://bad-concurrency.blogspot.com.au[..]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. - http://mechanical-sympathy.blogspot.com.au[..]emory-access-patterns-are-important.html

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

Beware about the performance issue of static initalization - http://stackoverflow.com[..]-cause-problems-with-multi-threading-how

Experiment show why arraylist is better in most cases - http://www.javaadvent.com/2013/12/arraylist-vs-linkedlist.html

How to design low latency application in java - http://vanillajava.blogspot.com.au[..]5/chronicle-and-low-latency-in-java.html

http://highscalability.com[..]ciples-of-high-performance-programs.html http://blog.libtorrent.org[..]principles-of-high-performance-programs/

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

Beware the performance penalty of logging - https://plumbr.eu/blog/locking-and-logging

Keep thing dynamic - http://highscalability.com[..]ciples-of-high-performance-programs.html

http://www.rationaljava.com[..]st-rule-of-performance-optimisation.html

http://www.eecs.berkeley.edu[..]u/~rcs/research/interactive_latency.html

http://highscalability.com[..]aling-data-platforms.html?SSLoginOk=true

Discuss about developing low latency financial application - http://queue.acm.org/detail.cfm?ref=rss&id=2770868

Discussion of object pooling - http://highscalability.com[..]-but-forgotten-trick-object-pooling.html http://coffeenco.de[..]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.
http://www.rationaljava.com[..]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.
http://highscalability.com[..]eduler-jitter-using-cpu-isolation-a.html
http://epickrram.blogspot.co.uk[..]o.uk/2015/09/reducing-system-jitter.html

About design for performance for webapi - http://tech.forter.com[..]y-decision-as-a-service-design-patterns/

check list - http://techbeacon.com[..]ery-software-development-team-should-ask

Beware if system utilization over 80% - http://www.infoq.com/cn/news/2016/02/utilisation-wait-latency http://robharrop.github.io[..]/20/service-latency-and-utilisation.html

scalable-io-events-vs-multithreading-based - https://thetechsolo.wordpress.com[..]lable-io-events-vs-multithreading-based/

How to find out bottleneck - https://vanilla-java.github.io[..]entile-latencies-in-Chronicle-Queue.html

(google search) (amazon search)



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

brain


打游戲有助老年人集中注意力 - http://cn.wsj.com/big5/20131002/ptk113100.asp?source=rss

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

補腦良方要學會 - http://www.yimho.com/2060.html

http://list25.com[..]ain-that-your-brain-didnt-know/?view=all

在預防痴呆症方面,速度訓練已超越另外兩種流行的大腦訓練:記憶和推理練習。 - http://cn.wsj.com/big5/20161226/LIF152715.asp?source=rss

know-about-multiple-personality-disorder - http://list25.com[..]-multiple-personality-disorder/?view=all

(google search) (amazon search)


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

volatility


http://quant.stackexchange.com[..]high-volatility-stocks-over-the-long-run

The hidden issue of low interest environment - http://cn.wsj.com/big5/20130129/opn145859.asp http://cn.wsj.com/big5/20130129/bus141954.asp

Volume and price change - http://traderfeed.blogspot.hk[..]ding-change-and-stability-in-market.html

(google search) (amazon search)



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

city


http://list25.com[..]tos-of-sunsets-in-metropolises/?view=all

(google search) (amazon search)


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

thread


Stealing thread - http://badamczewski.blogspot.com.au/2012/05/work-stealing.html

Intel Guide for Developing Multithreaded Applications - http://software.intel.com[..]or-developing-multithreaded-applications

Difference ways to stop a thread - http://www.ddj.com[..]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.
http://tomayko.com/writings/unicorn-is-unix

1x1 win M*N - http://binkley.blogspot.com/2012/01/1-1-beats-n-m.html

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) - http://www.ibm.com/developerworks/library/j-jtp0730.html http://stackoverflow.com[..]ratio-of-java-threads-to-cpus-on-solaris

Another post about tuning thread pool - http://www.javaadvent.com[..]ortance-of-tuning-your-thread-pools.html

Threads Basics - http://www.hpl.hp.com/techreports/2009/HPL-2009-259html.html http://www.hpl.hp.com/personal/Hans_Boehm/c++mm/threadsintro.html

The Dos and Don'ts of Multithreading - http://www.infoq.com/presentations/multithreading

https://www.infoq.com/articles/engstrand-microservice-threading

http://cbloomrants.blogspot.hk[..]-26-09-low-level-threading-table-of.html

(google search) (amazon search)