<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Welcome to the Corecool’s Home. I am interested in Software Engineering and Computer Science. If you are, please contact me. 
Twitter:@Corecool</description><title>Corecool's Home</title><generator>Tumblr (3.0; @corecool)</generator><link>http://corecool.tumblr.com/</link><item><title>Emacs: View and Set Environment Variables within Emacs</title><description>&lt;a href="http://xahlee.org/emacs/emacs_env_var_paths.html"&gt;Emacs: View and Set Environment Variables within Emacs&lt;/a&gt;: &lt;p&gt;&lt;blockquote&gt;
&lt;ul&gt;&lt;li&gt;When you start emacs from a shell, emacs inherits shell’s environment variables. (true on Windows, Mac, Linux)&lt;/li&gt;
&lt;li&gt;On Windows, when you start emacs from GUI, emacs also inherit environment variables, from the Registry.&lt;/li&gt;
&lt;li&gt;On Mac OS X, when you start emacs from GUI, emacs does not inherit environment variables from your shell, but does inherit the system-wide environment variables from 〔~/.MacOSX/environment.plist〕.&lt;/li&gt;
&lt;li&gt;On Mac OS X, you can start GUI emacs from shell, like this: &lt;code&gt;nohup /Applications/Emacs.app/Contents/MacOS/Emacs &amp;&lt;/code&gt;. This way, it’ll inherit shell’s environment variables.&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;&lt;/p&gt;</description><link>http://corecool.tumblr.com/post/25023784624</link><guid>http://corecool.tumblr.com/post/25023784624</guid><pubDate>Wed, 13 Jun 2012 11:10:27 -0400</pubDate><category>Emacs</category></item><item><title>Recursive Greps </title><description>&lt;a href="http://irreal.org/blog/?p=823"&gt;Recursive Greps &lt;/a&gt;: &lt;p&gt;—include=”xxx” &lt;/p&gt;</description><link>http://corecool.tumblr.com/post/24601157994</link><guid>http://corecool.tumblr.com/post/24601157994</guid><pubDate>Thu, 07 Jun 2012 05:51:11 -0400</pubDate><category>shell</category></item><item><title>New Garbage Collector</title><description>&lt;a href="http://wiki.luajit.org/New-Garbage-Collector"&gt;New Garbage Collector&lt;/a&gt;: &lt;blockquote&gt;
&lt;p&gt;The following design document describes the the new garbage collector (GC) to be introduced with LuaJIT 2.1. This document is very much a work in progress right now. Anything may change for the actual implementation. No code is available, yet.&lt;/p&gt;
&lt;p&gt;The purpose of this document is to gather early feedback on all design aspects and to present the planned work to sponsors.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note to potential sponsors: This feature is in need of sponsorship! Work on LuaJIT 2.1 probably won’t start until I’m able to get full covenants for this and other planned new features. Please refer to the &lt;a href="http://luajit.org/sponsors.html"&gt;LuaJIT Sponsorship Page&lt;/a&gt;. Thank you!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You probably need to have at least some background knowledge on garbage collection algorithms to fully enjoy the following document. There are plenty of books, research papers and other freely available online resources for this. A good start would be the &lt;a href="http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29"&gt;Wikipedia article on Garbage Collection&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://corecool.tumblr.com/post/24250241591</link><guid>http://corecool.tumblr.com/post/24250241591</guid><pubDate>Sat, 02 Jun 2012 03:57:11 -0400</pubDate><category>GC</category><category>Lua</category></item><item><title>Default grep options | Arabesque</title><description>&lt;a href="http://blog.sanctum.geek.nz/default-grep-options/"&gt;Default grep options | Arabesque&lt;/a&gt;: &lt;p&gt;The environment variable of grep.&lt;/p&gt;</description><link>http://corecool.tumblr.com/post/23454724395</link><guid>http://corecool.tumblr.com/post/23454724395</guid><pubDate>Sun, 20 May 2012 21:42:12 -0400</pubDate><category>grep</category></item><item><title>Steve's Awk Acadamy</title><description>&lt;a href="http://www.troubleshooters.com/codecorn/awk/index.htm"&gt;Steve's Awk Acadamy&lt;/a&gt;: &lt;p&gt;Don’t use &lt;span&gt;awk&lt;/span&gt;!&lt;br/&gt;&lt;br/&gt; Unless:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;The task at hand is primarily the parsing of files or piped streams.&lt;/li&gt;
&lt;li&gt;You’re willing to ignore OOP and Structured Programming principles.&lt;/li&gt;
&lt;li&gt;You’re willing to learn the &lt;span&gt;awk&lt;/span&gt; way of doing things.&lt;/li&gt;
&lt;li&gt;The program is not expected to grow larger than 400 lines.&lt;/li&gt;
&lt;/ul&gt;</description><link>http://corecool.tumblr.com/post/23453707217</link><guid>http://corecool.tumblr.com/post/23453707217</guid><pubDate>Sun, 20 May 2012 21:26:44 -0400</pubDate><category>AWK</category></item><item><title>12 Ways to Increase Throughput by 32X and Reduce Latency by  20X</title><description>&lt;a href="http://highscalability.com/blog/2012/5/2/12-ways-to-increase-throughput-by-32x-and-reduce-latency-by.html"&gt;12 Ways to Increase Throughput by 32X and Reduce Latency by  20X&lt;/a&gt;: &lt;p&gt;&lt;ol&gt;&lt;li&gt;&lt;span&gt;Do not use locks in the main transaction flow because they cause context switches, and therefore latency and unpredictable jitter.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Never have more threads that need to run than you have cores available.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Set affinity of threads to cores, or at least sockets, to avoid cache pollution by avoiding migration.  This is particularly important when on a server class machine having multiple sockets because of the NUMA effect.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Ensure uncontested access to any resource respecting the &lt;/span&gt;&lt;a href="http://mechanical-sympathy.blogspot.de/2011/09/single-writer-principle.html"&gt;&lt;span&gt;Single Writer Principle&lt;/span&gt;&lt;/a&gt;&lt;span&gt; so that the likes of biased locking can be your friend.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Keep call stacks reasonably small.  Still more work to do here.  If you are crazy enough to use Spring, then check out your call stacks to see what I mean!  The garbage collector has to walk them finding reachable objects.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Do not use finalizers.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Keep garbage generation to modest levels.  This applies to most JVMs but is likely not an issue for Zing.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Ensure no disk IO on the main flow.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Do a proper warm-up before beginning to measure.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Do all the appropriate OS tunings for low-latency systems that are way beyond this blog.  For example turn off C-States power management in the BIOS and watch out for RHEL 6 as it turns it back on without telling you!&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Macro-benchmarking is much more valuable than micro-benchmarking.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Amazing results are achieved by truly agile companies, staffed by talented individuals, who are empowered to make things happen. Make sh*t happen is more important than following a process.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</description><link>http://corecool.tumblr.com/post/22564178868</link><guid>http://corecool.tumblr.com/post/22564178868</guid><pubDate>Sun, 06 May 2012 22:26:40 -0400</pubDate><category>Scalabillity</category></item><item><title>Calling Constructors with Placement New</title><description>&lt;a href="http://www.drdobbs.com/cpp/232901023"&gt;Calling Constructors with Placement New&lt;/a&gt;: &lt;p&gt;The placement new in C++. It can be used in many embedded systems.&lt;/p&gt;</description><link>http://corecool.tumblr.com/post/21886190977</link><guid>http://corecool.tumblr.com/post/21886190977</guid><pubDate>Thu, 26 Apr 2012 21:20:58 -0400</pubDate><category>C++</category></item><item><title>Useful Unix Tools</title><description>&lt;a href="http://www.brendangregg.com/specials.html"&gt;Useful Unix Tools&lt;/a&gt;: &lt;blockquote&gt;
&lt;p&gt;The following is a special collection of freeware tools for system administration written in Perl. They cover advanced topics for the experienced admin, and are a valuable addition to a senior admin’s collection or those wishing to be a senior admin. Most are related to performance or fault prevention.&lt;/p&gt;
&lt;p&gt;Note: These are freeware programs and have nothing at all to do with the respective Operating System vendors.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://corecool.tumblr.com/post/21841633763</link><guid>http://corecool.tumblr.com/post/21841633763</guid><pubDate>Thu, 26 Apr 2012 05:52:37 -0400</pubDate><category>Unix</category></item><item><title>Understanding Client-Side Storage in Web Apps</title><description>&lt;a href="http://www.drdobbs.com/web-development/232900805?pgno=3"&gt;Understanding Client-Side Storage in Web Apps&lt;/a&gt;: &lt;p&gt;&lt;strong&gt;Compares the four major APIs for browser-side storage and explains how to balance performance, data size, and browser support.&lt;/strong&gt;&lt;/p&gt;</description><link>http://corecool.tumblr.com/post/21771579082</link><guid>http://corecool.tumblr.com/post/21771579082</guid><pubDate>Wed, 25 Apr 2012 02:22:40 -0400</pubDate><category>Client-side Storage</category></item><item><title>Elegant exact string match using BWT </title><description>&lt;a href="http://blog.avadis-ngs.com/2012/04/elegant-exact-string-match-using-bwt-2/"&gt;Elegant exact string match using BWT &lt;/a&gt;: &lt;p&gt;String matching algorithm named BWT.&lt;/p&gt;</description><link>http://corecool.tumblr.com/post/21716421018</link><guid>http://corecool.tumblr.com/post/21716421018</guid><pubDate>Tue, 24 Apr 2012 11:10:01 -0400</pubDate><category>Algorithm</category></item><item><title>Michael Feathers: Tell Above, and Ask Below - Hybridizing OO and Functional Design</title><description>&lt;a href="http://michaelfeathers.typepad.com/michael_feathers_blog/2012/03/tell-above-and-ask-below-hybridizing-oo-and-functional-design.html"&gt;Michael Feathers: Tell Above, and Ask Below - Hybridizing OO and Functional Design&lt;/a&gt;: &lt;p&gt;&lt;blockquote&gt;&lt;ol&gt;&lt;li&gt;‘Tell, Don’t Ask.’  The idea was that objects are really best when you tell them to do something for you rather than asking them for their data and doing it yourself. &lt;/li&gt;
&lt;li&gt;In OO, it is better to &lt;em&gt;tell&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Put the object layer on top and allowed the objects to use functional pieces below&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;&lt;/p&gt;</description><link>http://corecool.tumblr.com/post/21631341759</link><guid>http://corecool.tumblr.com/post/21631341759</guid><pubDate>Mon, 23 Apr 2012 00:35:30 -0400</pubDate><category>Software Design</category></item><item><title>Benchmarking Block-Swapping Algorithms | Dr Dobb's</title><description>&lt;a href="http://www.drdobbs.com/parallel/232900395?pgno=1"&gt;Benchmarking Block-Swapping Algorithms | Dr Dobb's&lt;/a&gt;: &lt;blockquote&gt;
&lt;p&gt;Algorithms for swapping blocks of data appear simple, but vary widely in their performance profiles. Choosing the right one can be crucial to good performance.&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Three sequential &lt;em&gt;O(n)&lt;/em&gt; in-place algorithms for swapping/exchanging blocks of unequal sizes were explored. The Gries-Mills algorithm is the performance leader with the Reversal algorithm coming in a close second, and the Juggling algorithm a distant third. The Reversal algorithm is the gem of the three, having high and consistent performance, the smallest and simplest implementation, and being the easiest to understand. The Gries-Mills and Reversal algorithms performed well due to their cache-friendly memory access patterns. The Juggling algorithm performed the fewest memory accesses, but came in over 5x slower due to its cache-unfriendly memory access pattern.&lt;/p&gt;

&lt;/blockquote&gt;</description><link>http://corecool.tumblr.com/post/21548291873</link><guid>http://corecool.tumblr.com/post/21548291873</guid><pubDate>Sat, 21 Apr 2012 23:51:15 -0400</pubDate><category>Algorithm</category></item><item><title>20 awesome node.js npm modules we use every day</title><description>&lt;a href="http://blog.beyondfog.com/websockets-and-more-20-awesome-node-js-npm-modules-we-use-every-day/#.T5NudoG2yKx"&gt;20 awesome node.js npm modules we use every day&lt;/a&gt;: &lt;p&gt;Node.js modules list&lt;/p&gt;</description><link>http://corecool.tumblr.com/post/21543517642</link><guid>http://corecool.tumblr.com/post/21543517642</guid><pubDate>Sat, 21 Apr 2012 22:36:39 -0400</pubDate><category>node.js</category></item><item><title>YouTube Strategy: Adding Jitter isn't a Bug</title><description>&lt;a href="http://highscalability.com/blog/2012/4/17/youtube-strategy-adding-jitter-isnt-a-bug.html"&gt;YouTube Strategy: Adding Jitter isn't a Bug&lt;/a&gt;: &lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;Any time you have a lot of nodes that all need to do an operation at a specific time you rely on jitter to keep resources from bottlenecking.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://corecool.tumblr.com/post/21480258613</link><guid>http://corecool.tumblr.com/post/21480258613</guid><pubDate>Sat, 21 Apr 2012 00:55:36 -0400</pubDate><category>Distributed System</category><category>Architecture</category><category>Scalability</category></item><item><title>No Silver Bullet</title><description>&lt;p&gt;&lt;ol&gt;&lt;li&gt;High level languages&lt;/li&gt;
&lt;li&gt;Object oriented programming&lt;/li&gt;
&lt;li&gt;Declarative languages&lt;/li&gt;
&lt;li&gt;Functional programming&lt;/li&gt;
&lt;li&gt;Data oriented design&lt;/li&gt;
&lt;li&gt;Metaprogramming&lt;/li&gt;
&lt;li&gt;Static typing&lt;/li&gt;
&lt;li&gt;Duck typing&lt;/li&gt;
&lt;li&gt;Garbage collection&lt;/li&gt;
&lt;li&gt;Allocating on the stack&lt;/li&gt;
&lt;li&gt;Tail calls&lt;/li&gt;
&lt;li&gt;Resource acquisition is initialization&lt;/li&gt;
&lt;li&gt;Symmetric multitasking&lt;/li&gt;
&lt;li&gt;Heterogeneous multitasking&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</description><link>http://corecool.tumblr.com/post/21474742300</link><guid>http://corecool.tumblr.com/post/21474742300</guid><pubDate>Fri, 20 Apr 2012 23:18:01 -0400</pubDate><category>Software</category></item><item><title>Parsing numbers with regular expressions</title><description>&lt;a href="http://stackoverflow.com/questions/4246077/simple-problem-with-regular-expression-only-digits-and-commas/4247184#4247184"&gt;Parsing numbers with regular expressions&lt;/a&gt;</description><link>http://corecool.tumblr.com/post/21473851012</link><guid>http://corecool.tumblr.com/post/21473851012</guid><pubDate>Fri, 20 Apr 2012 23:04:42 -0400</pubDate><category>Regex</category></item><item><title>Visual Studio Asynchronous Programming</title><description>&lt;a href="http://msdn.microsoft.com/en-us/vstudio/async.aspx"&gt;Visual Studio Asynchronous Programming&lt;/a&gt;: &lt;p&gt;The resource of Async Programming in VS.&lt;/p&gt;</description><link>http://corecool.tumblr.com/post/21467250399</link><guid>http://corecool.tumblr.com/post/21467250399</guid><pubDate>Fri, 20 Apr 2012 21:30:39 -0400</pubDate><category>Async Programming</category><category>Visual Studio</category></item><item><title>HBase: ACID in HBase</title><description>&lt;a href="http://hadoop-hbase.blogspot.de/2012/03/acid-in-hbase.html"&gt;HBase: ACID in HBase&lt;/a&gt;: &lt;blockquote&gt;
&lt;p&gt;HBase employs a kind of MVCC. And HBase has no mixed read/write transactions.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://corecool.tumblr.com/post/21195551233</link><guid>http://corecool.tumblr.com/post/21195551233</guid><pubDate>Mon, 16 Apr 2012 00:06:01 -0400</pubDate><category>HBase</category></item><item><title>Many kinds of memory-centric data management : DBMS 2 : DataBase Management System Services</title><description>&lt;a href="http://www.dbms2.com/2012/04/07/many-kinds-of-memory-centric-data-management/"&gt;Many kinds of memory-centric data management : DBMS 2 : DataBase Management System Services&lt;/a&gt;: &lt;p&gt;Excellent overview of the approached used by various in-memory databases by Kurt Monash.&lt;/p&gt;</description><link>http://corecool.tumblr.com/post/21191867732</link><guid>http://corecool.tumblr.com/post/21191867732</guid><pubDate>Sun, 15 Apr 2012 22:57:38 -0400</pubDate><category>Memory storage</category></item><item><title>The MySQL “swap insanity” problem and the effects of the NUMA architecture « Jeremy Cole</title><description>&lt;a href="http://blog.jcole.us/2010/09/28/mysql-swap-insanity-and-the-numa-architecture/"&gt;The MySQL “swap insanity” problem and the effects of the NUMA architecture « Jeremy Cole&lt;/a&gt;: &lt;blockquote&gt;
&lt;p&gt;The memory allocated by MySQL looks something like this: Allocating memory severely imbalanced, preferring Node 0&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://corecool.tumblr.com/post/21190841516</link><guid>http://corecool.tumblr.com/post/21190841516</guid><pubDate>Sun, 15 Apr 2012 22:41:09 -0400</pubDate><category>Linux</category><category>MySQL</category><category>NUMA</category></item></channel></rss>
