yyhh.orghttps://yyhh.org/2022-06-07T06:35:41+00:00Homepage of Yunyao and HuahaiWhy Clojure is not widely adopted like mainstream languages?2022-06-07T06:35:41+00:002022-06-07T06:35:41+00:00Huahaitag:yyhh.org,2022-06-07:/blog/2022/06/why-clojure-is-not-widely-adopted-like-mainstream-languages<p>Someone asked on Reddit: <a href="https://www.reddit.com/r/Clojure/comments/v6fzur/why_clojure_is_not_widely_adopted_like_mainstream/">Why Clojure is not widely adopted like mainstream languages?</a></p>
<p>Here's my answer:</p>
<p>You probably should have flipped the question, because the vast majority of programming languages are not mainstream.</p>
<p>The more insightful question is: "Why and how did a language X become mainstream?"</p>
<p>From the answers …</p><p>Someone asked on Reddit: <a href="https://www.reddit.com/r/Clojure/comments/v6fzur/why_clojure_is_not_widely_adopted_like_mainstream/">Why Clojure is not widely adopted like mainstream languages?</a></p>
<p>Here's my answer:</p>
<p>You probably should have flipped the question, because the vast majority of programming languages are not mainstream.</p>
<p>The more insightful question is: "Why and how did a language X become mainstream?"</p>
<p>From the answers to this flipped question, we may induce some patterns that other languages could try to imitate. </p>
<p>Let's give it a try, by looking at the most popular languages as of today:</p>
<ol>
<li><strong>Python</strong>: Some big corporations adopted it early on, e.g. Google; some well-connected people started to prompt it as the first language, then schools started following the suggestion; now it enjoys dominance in machine learning - the most hyped field.</li>
<li><strong>C</strong>: A readable assembly, so almost all operating systems are written in it; you must use it if you want to interface with hardware; all students in the last generation learnt it in school.</li>
<li><strong>Java</strong>: Heavily prompted by its corporate creator that enjoyed a high status among developers; billed as something solving most problems at that time; consequently widely adopted by other big corporations as well; so it was taught in schools everywhere.</li>
<li><strong>C++</strong>: billed as the next step of C, due to the wise choice of its name; heavily prompted by tooling companies such as Microsoft, for it was so complex, their tooling were required; all the "serious" computer science students are then proud of their skills in C++, because only they can master it, non-CS students would not be able to.</li>
<li><strong>C#</strong>: Microsoft's answer to Java. Microsoft betted the company on it.</li>
<li><strong>Visual Basic</strong>: non-programmer's only option for a very long time.</li>
<li><strong>Javascript</strong>: the Web's only frontend option for a very long time.</li>
</ol>
<p>So the tricks to popularity seems to be, in order of importance:</p>
<ol>
<li>Big company backing</li>
<li>Niche dominance</li>
<li>School adoption</li>
</ol>
<p>Clojure's only hope is 2. Maybe 1, if one of the companies using Clojure becomes wildly successful. Then 3 will follow.</p>
<p>What do you think?</p>T-Wand: Beat Lucene in Less Than 600 Lines of Code2021-11-05T14:49:00+00:002021-11-05T14:49:00+00:00Huahaitag:yyhh.org,2021-11-05:/blog/2021/11/t-wand-beat-lucene-in-less-than-600-lines-of-code<p><img alt="Query Throughput" src="/images/QueryPerSecond.png"></p>
<p>Here is the story. I am adding full-text search capability to <a href="https://github.com/juji-io/datalevin">Datalevin</a>, a Datalog database that we open sourced last year. For this task, I have decided to write a search engine from scratch instead of using an existing search library. <a href="https://github.com/juji-io/datalevin/blob/master/doc/search.md#rationale">Here</a> are some rationales for this decision. Today I …</p><p><img alt="Query Throughput" src="/images/QueryPerSecond.png"></p>
<p>Here is the story. I am adding full-text search capability to <a href="https://github.com/juji-io/datalevin">Datalevin</a>, a Datalog database that we open sourced last year. For this task, I have decided to write a search engine from scratch instead of using an existing search library. <a href="https://github.com/juji-io/datalevin/blob/master/doc/search.md#rationale">Here</a> are some rationales for this decision. Today I finished the main work of the search engine, and ran some <a href="https://github.com/juji-io/datalevin/tree/master/search-bench">benchmark</a> comparison with <a href="https://lucene.apache.org/">Apache Lucene</a>, the venerable Java search library, and found that the Datalevin search engine is 75% faster on average than Lucene, while 3 times faster at the median point. Since Lucene is at such a dominant position in full-text search, I think it might be of broad interest to write about it.</p>
<p>Yes, it is true. The search engine is <a href="https://github.com/juji-io/datalevin/blob/2711a2ef1c31822bf6c1b974be0ea13a47fe41ca/src/datalevin/search.clj">less than 600 lines of Clojure code</a>.</p>
<h2>Lucene is Hard to Beat</h2>
<p>Lucene has over 20 years of history, with perhaps hundreds of man-year of work
behind her development. Any search engine coming out with better numbers than
Lucene is suspicious of dishonesty, incompetence in benchmarking, or both. I
will not name names, but a Google search should show some samples of these. Obviously, I would not want to add Datalevin to such a hall of shame. Please do report any errors in my <a href="https://github.com/juji-io/datalevin/tree/master/search-bench">benchmarking</a>.</p>
<h2>Better Search Algorithm</h2>
<p>To beat Lucene, it is obviously not enough to optimize code, as Lucene is highly optimized to the last fine details. For example, Lucene has multiple versions of Priority Queue implementations, each customized to a different use case. It is insane.</p>
<p>So, to beat Lucene, having better algorithm is pretty much a requirement. Luckily, I did come up with a better search algorithm, which I call <em>T-Wand</em>.</p>
<p>By "better", I mean it in two senses.</p>
<h3>Better Relevance</h3>
<p>How many time have you felt frustrated that the search engine gave you results that you know are worse than what you should be getting?</p>
<blockquote>
<p>I know there are some documents containing all these words, why are they not here?</p>
</blockquote>
<p>"Here" means the first page, or being in the "top-K" results in research parlance. Full text search engines, like Lucene, are often optimized to return a limited number (K) of good results as quickly as possible. However, what is a "good" result? This is where the concept gets muddier. It is no longer a purely technical problem, but more of a user experience problem. In research parlance, this is called "relevance".</p>
<p>As someone who has a Ph.D. in Human-computer Interaction ;-), I feel like I am entitled to define a condition of "good" in relevance here. I hereby declare that:</p>
<blockquote>
<p>A good top-K algorithm should rank a document containing more user query terms higher than a document containing less number of user query terms.</p>
</blockquote>
<p>This makes perfect sense. Right?</p>
<p>Right. Unfortunately, most search engines, including Lucene, do not do that.</p>
<p>Most search engines use something called a vector space model, where both user queries and documents are reduced to vectors (i.e. a fixed number of numbers). That is to say, the search engines are not looking at the meanings of the queries or the documents. Instead, they turned them both into some numbers. The search problem, is reduced to a problem of finding the similarity between the numbers representing the query and the numbers representing the documents.</p>
<p>An often used similarity measure, is to treat these numbers as coordinates in some kind of space. Now both a query and a document become vectors (or points) in this space. And if you remember any of the high school math, you will know that one can calculate the angle between a query vector and a document vector. This angle is the similarity search engines use to rank the relevance of documents to the query. The smaller is the angle, the higher ranking is a document.</p>
<p>This is an elegant model. However, as you can see, this vector space model does
not explicitly require a higher ranking document to contain more query terms
than a lower ranking one. The results often come out violating the above
requirement, inducing user frustrations. This is a well-known problem. For
example, <a href="https://lucene.apache.org/core/3_5_0/scoring.html">Lucene 3.5.0 </a>
(when they were still humble enough to write this?) introduced its scoring features with this paragraph:</p>
<blockquote>
<p>Lucene scoring is the heart of why we all love Lucene. It is blazingly fast and it hides almost all of the complexity from the user. In a nutshell, it works. At least, that is, until it doesn't work, or doesn't work as one would expect it to work. Then we are left digging into Lucene internals or asking for help on java-user@lucene.apache.org to figure out why a document with five of our query terms scores lower than a different document with only one of the query terms.</p>
</blockquote>
<p><em>T-Wand</em> wants to change that.</p>
<h3>Better Search Speed</h3>
<p><em>T</em> of <em>T-Wand</em> stands for <em>Tiered</em>. As you might have guessed, our search algorithm divides the document collections into tiers. The first tier are those documents containing all <code>n</code> user query terms, the second tier are those containing <code>n-1</code> user query terms, so on and so forth.</p>
<p>With this division, we no longer need to consider the whole document collection as the potential result candidates. Instead, only those in the current tier are. With much less work to do, the search speed is going to be better.</p>
<h2><em>T-Wand</em> Algorithm</h2>
<p>First, let me introduce the <em>WAND</em> algorithm.</p>
<h3><em>WAND</em></h3>
<p>Did I say Lucene is fast? Lucene is very fast, because it uses one of the state of art search algorithms, <em>WAND</em> [1]. Here's how <em>WAND</em> works.</p>
<p>It cheats.</p>
<p>Well, any sufficiently advanced algorithm looks like cheating. <em>WAND</em> is no exception. Basically, it skips a large portion of document collection, and it skips them <em>safely</em>, meaning the results would be the same if one exhaustively does the full computation without skipping. It is able to <em>safely</em> skip documents by using two tricks.</p>
<p>The first trick is the most ingenious. I still do not know how my former colleagues at IBM Research came up with it. My hat's off to them. Let me steal a picture from a followup article [2] to illustrate this.</p>
<p><img alt="WAND" src="/images/WAND.png"></p>
<p>As can be seen, the 4 rows are the document ids of 4 query terms, and four iterators are walking the document ids from left to right. At each step of the iteration, <em>WAND</em> arranges the rows such that the current document ids of the rows are sorted from lower to higher.</p>
<p>Now, starting from the first row, we sum up a maximal "goodness" score of that row's documents, as soon as the "goodness" score pass a certain threshold, we stop at that row. Say, this row is the 3rd one. At this point, we can teleport the first two rows's iterators to the document ids where the 3rd one is at, skipping every documents in between. This skipping is safe, because, by definition, the document pointed by the 3rd iterator is the first one that pass the threshold. Those before it would not have passed, because the "goodness" scores we use for each row are the maximal of those rows. There could not possibly be anything larger in those skipped documents.</p>
<p>As we have alluded to, the second trick, is this idea of using a hypothetical maximal possible score to filter out potential candidates without having to fully examine them: "we already gave you all the slack possible, yet you still cannot pass the bar, so we can safely kick you out without having to look at you in details". This is a fairly general idea that is used in many algorithms. For example, I would consider A* algorithm is in the same spirit. This reminds me also of a Chinese strategic doctrine, "料敌从宽“, it means to estimate the strength of the opponent in the most generous term possible, and to plan accordingly.</p>
<p>In <em>WAND</em>, the threshold used to filter out documents is the current lowest score of those documents that have made into the top-K. This threshold becomes more difficulty to pass as the algorithm proceeds, filtering out greater proportion of documents as it goes.</p>
<h3>What's New in <em>T-WAND</em></h3>
<p>So it seems to be obvious to apply the same <em>WAND</em> algorithm in each tier. But that would not be efficient, because now you are going to have multiple passes over the document collection, doing a lot of wasted work.</p>
<p>Another idea came into play, which was actually the first idea I tried. This idea was inspired by an idea in another research field, approximate string matching [3]. In retrospect, this idea has the same element of "giving your enemy maximal possible slack" spirit.</p>
<p>Here, to establish the maximum and the threshold, a little bit math is involved. I will spare you any formalism, because the actual idea is very simple, some would say trivial.</p>
<p>Let us start with a special case. Say, we want to find documents that contain all <code>n</code> user query terms, what are those documents?</p>
<p>They must be those documents that contain the rarest term in the user query.
Right? Regardless of how rare a term is, a document must have it to meet our
requirement of containing all query terms. In fact, the document must contain
any one of the given query terms. In other words, it is necessary and sufficient
to use <em>any</em> <em>one</em> term's set of containing documents as the candidates, and we
can then proceed to check these candidates to see if they also contain other
query terms. Since picking any one term would be the same, we will choose the rarest term, for its containing document list is the shortest. All other documents can be safely skipped. Magic, yes?</p>
<p>Generalizing this special case, to find documents containing <code>n-1</code> query terms, we only need to pick as candidates those documents containing the rarest OR the second rarest term, i.e. the union of them. All the rest of the documents can be safely ignored. Isn't this nice?</p>
<p>We can continue this all the way down to needing only one query term in the document. At this point, every document containing any query term becomes a potential candidate. This reverts back to the difficult problem of searching all matching documents, which <em>WAND</em> solves by skipping documents that are not going to make into top-K.</p>
<p>But we can do much better. Because the above mathematical property also allows us to skip documents that are not going to have the required number of overlaps with the query.</p>
<p>Say we are at a tier that requires <code>t</code> overlaps between a document and a query. We are walking a document candidate down the term rows, trying to find out how many terms this candidate hits. If this candidate has already hit <code>h</code> terms so far, and is now on row <code>k</code>. If we give this candidate maximal slack, meaning that we assume he will hit all the remaining terms, his hypothetical maximal hits would be <code>h + (n - k - 1)</code>. If this number is less than <code>t</code>, he can be safely kicked out, because he will never make into the exclusive <code>t</code> club.</p>
<p>This new pruning condition is the main novelty of T-Wand in term of algorithm,
as it has not been reported in the literature for search algorithms, as far as I can tell. With this pruning condition and candidate pre-filtering, we can already achieve about 65% overall speed of Lucene. Adding the pruning condition of <em>WAND</em>, we have the current <em>T-Wand</em> performance, which beats Lucene with ease.</p>
<h2>Implementation Takeaways</h2>
<p>I said beating Lucene with ease, because we did not do any extreme optimizations that are abundant in Lucene. Our code is idiomatic Clojure, with some additional help of Java data structures at critical performance hotspots. The code weights less than 600 lines, including comments.</p>
<h3>Clojure</h3>
<p>So why use Clojure? The short answer is that it makes programming fun.</p>
<p>It is fun to explore ideas with the language. One little known fact that I found about using Clojure, is that it is an excellent language for implementing published algorithms in academic papers. Most algorithmic papers include pseudo code, written in an imperative programming style. They seem to be a far cry from any functional programming code one would write.</p>
<p>However, I found the opposite to be true. It is easier to translate published imperative pseudo code into functional programming real code, than trying to turn imperative pseudo code into imperative real code. Looking at any code repository accompanying a paper, the imperative programming code in the repository bears no resemblance to the nice pseudo code shown in the paper.</p>
<p>With a functional programming language, on the other hand, the resulting real code will have a one-to-one correspondence with the pseudo code. If you know Clojure, you can look at my code of <em>T-Wand</em>, see the similarity between my function <code>score-docs</code> and the pseudo code in [4]. I just gave each code block in the pseudo code a name and turns that into a function, <code>find-pivot</code>, <code>score-pivot</code>, <code>next-candidates</code>, etc. The function realizes the intention and logic of the pseudo code, but not following its style. The code is easy to follow and change, allowing exploration of many ideas.</p>
<p>The current form of <em>T-Wand</em> is the result of at least three major iterations of
ideas, first the candidate pruning by required overlaps idea, then candidate
pre-filtering idea, finally incorporated both into <em>T-Wand</em>. All these changes
and refactoring were done with great ease, with a sense of adventure and fun. I
can not imagine how painful this would be to iterate these ideas on a statically
typed language and in an imperative programming style. I probably would just give up.</p>
<h3>Index Storage</h3>
<p>In Datalevin search engine, we store the primary data structure for searching in LMDB in an aggregated form, as a sparse integer list. The reason to store and access term information in aggregates, instead of storing them in inverted lists and accessed piece-meal, is because LMDB is very efficient (more efficient than file systems) at reading/writing large binary blobs.</p>
<p>As long as the data structure to be stored has high (de)serialization
speed, it is more efficient to store/retrieve them in large aggregates than in
more granular forms. This does not apply to more complex data structures with
high construction cost, such as hash maps. We consider these as general advises on how to best use the so called single-level storage, such as LMDB. We earned these
lessons in our many iterations of trying to find the best performing indexing data structure.</p>
<h2>Conclusion</h2>
<p>I am happy that this exploration turns out well. I would be thrilled to see
<em>T-Wand</em> algorithm makes into other search engines, as it does improve user
experience, performs well, and it is simple to implement in existing code bases
that use <em>WAND</em>. There are many more ideas of improvement can be further explored, I would be happy to have a collaboration if someone wants to take it further.</p>
<h2>Updates for Hacker News People</h2>
<p>For people who are worried, please be assured that <em>T-Wand</em> also uses
<code>tf-idf</code> and the vector space model, so you are not missing anything fundamental.</p>
<p>For people who say "Lucene is not properly used", please write the proper Lucene code in one of the issues, in Java if you want, I can integrate them into the benchmark. If you know Clojure, just send a PR. I appreciate that. Better yet, if you know Lucene so well, you should send a PR to Lucene that integrates <em>T-Wand</em> into Lucene, that would make the biggest impact.</p>
<p>For people who say "Does yours have all the Lucene features - stemming,
incremental index, phrase search, range search, arbitrary sortable fields,
etc?", at the moment, the following features are implemented:</p>
<ul>
<li>
<p>Core search capability</p>
</li>
<li>
<p>English analyzer</p>
</li>
<li>
<p>Incremental and bulk indexing</p>
</li>
</ul>
<p>The following are to be implemented in the future:</p>
<ul>
<li>
<p>Fuzzy query matching</p>
</li>
<li>
<p>Stemming</p>
</li>
<li>
<p>Phrase search</p>
</li>
<li>
<p>Boolean operators</p>
</li>
</ul>
<p>The followings are not necessary because Datalevin is a real database and it has more powerful database features than whatever a search engine can offer:</p>
<ul>
<li>
<p>Range query is a foundation of Datalevin database</p>
</li>
<li>
<p>Fields are just watered-down columns in a database. Datalevin is a fully featured database. Whatever you want to do with fields, you can do with Datalog.</p>
</li>
</ul>
<p>I am opening up for feature suggestions. Please file issues or send PR. I appreciate them.</p>
<p>Finally, please do not misunderstand what is going on here: I am running a startup, and I am also old enough to not care about publications as much as much as people who are younger or in academia. That's why I chose to reveal this in a blog post instead of hiding it until after my paper is published. A blog post can reach more people then an academic paper can.</p>
<h2>References</h2>
<p>[1] Broder, Carmel, Herscovici, Soffer and Zien, Efficient Query Evaluation using a Two-Level Retrieval Process, CIKM'2003.</p>
<p>[2] Ding and Suel. Faster top-k document retrieval using block-max indexes. SIGIR'2011.</p>
<p>[3] Okazaki and Tsujii, Simple and Efficient Algorithm for Approximate Dictionary Matching. COLING '2010.</p>
<p>[4] Crane, et al. A comparison of document-at-a-time and score-at-a-time query evaluation. WSDM' 2017.</p>Sync time for FreeIPA hosts2021-04-08T07:41:14+00:002021-04-08T07:41:14+00:00Huahaitag:yyhh.org,2021-04-08:/blog/2021/04/sync-time-for-freeipa-hosts<p>Recently, I upgraded the FreeIPA server for my network to the latest version (4.8.10). Some strange things related to authentication started to happen with some services on my network. </p>
<p>For our Web site, netlify gotrue is used to enable users to login using SAML Single Sign-On. This started …</p><p>Recently, I upgraded the FreeIPA server for my network to the latest version (4.8.10). Some strange things related to authentication started to happen with some services on my network. </p>
<p>For our Web site, netlify gotrue is used to enable users to login using SAML Single Sign-On. This started to fail due to this error:</p>
<blockquote>
<p>SAML response has invalid time</p>
</blockquote>
<p>For our discourse based forum, users started to experience failure to login using Google Single Sign-On. Again, it is time related:</p>
<blockquote>
<p>Unable to verify authorization token due to server clock differences. Please try again.</p>
</blockquote>
<p>So I check the time on the servers, they all have a few seconds differences from each other.</p>
<p>All my nodes use chronyd to manage NTP service. When run </p>
<div class="highlight"><pre><span></span><code>chronyc<span class="w"> </span>sources<span class="w"> </span>-v
</code></pre></div>
<p>I found that all of the NTP client show something like this:</p>
<div class="highlight"><pre><span></span><code><span class="m">210</span><span class="w"> </span>Number<span class="w"> </span>of<span class="w"> </span><span class="nv">sources</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span>
<span class="w"> </span>.--<span class="w"> </span>Source<span class="w"> </span>mode<span class="w"> </span><span class="s1">'^'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>server,<span class="w"> </span><span class="s1">'='</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>peer,<span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">local</span><span class="w"> </span>clock.
<span class="w"> </span>/<span class="w"> </span>.-<span class="w"> </span>Source<span class="w"> </span>state<span class="w"> </span><span class="s1">'*'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>current<span class="w"> </span>synced,<span class="w"> </span><span class="s1">'+'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>combined<span class="w"> </span>,<span class="w"> </span><span class="s1">'-'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>not<span class="w"> </span>combined,
<span class="p">|</span><span class="w"> </span>/<span class="w"> </span><span class="s1">'?'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>unreachable,<span class="w"> </span><span class="s1">'x'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">time</span><span class="w"> </span>may<span class="w"> </span>be<span class="w"> </span><span class="k">in</span><span class="w"> </span>error,<span class="w"> </span><span class="s1">'~'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">time</span><span class="w"> </span>too<span class="w"> </span>variable.
<span class="o">||</span><span class="w"> </span>.-<span class="w"> </span>xxxx<span class="w"> </span><span class="o">[</span><span class="w"> </span>yyyy<span class="w"> </span><span class="o">]</span><span class="w"> </span>+/-<span class="w"> </span>zzzz
<span class="o">||</span><span class="w"> </span>Reachability<span class="w"> </span>register<span class="w"> </span><span class="o">(</span>octal<span class="o">)</span><span class="w"> </span>-.<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nv">xxxx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>adjusted<span class="w"> </span>offset,
<span class="o">||</span><span class="w"> </span>Log2<span class="o">(</span>Polling<span class="w"> </span>interval<span class="o">)</span><span class="w"> </span>--.<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nv">yyyy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>measured<span class="w"> </span>offset,
<span class="o">||</span><span class="w"> </span><span class="se">\ </span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nv">zzzz</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>estimated<span class="w"> </span>error.
<span class="o">||</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="se">\</span>
MS<span class="w"> </span>Name/IP<span class="w"> </span>address<span class="w"> </span>Stratum<span class="w"> </span>Poll<span class="w"> </span>Reach<span class="w"> </span>LastRx<span class="w"> </span>Last<span class="w"> </span><span class="nv">sample</span>
<span class="o">===============================================================================</span>
^?<span class="w"> </span>ipa.example.com<span class="w"> </span><span class="m">0</span><span class="w"> </span><span class="m">8</span><span class="w"> </span><span class="m">0</span><span class="w"> </span>-<span class="w"> </span>+0ns<span class="o">[</span><span class="w"> </span>+0ns<span class="o">]</span><span class="w"> </span>+/-<span class="w"> </span>0ns
</code></pre></div>
<p>It means that the NTP server is not reachable. No wonder the times are out of sync.</p>
<p>So I checked on my IPA server, it turns out that the new version of FreeIPA server default to disable the NTP server and does not allow external NTP clients to access. The NTP port <code>123</code> is not open:</p>
<div class="highlight"><pre><span></span><code>ss<span class="w"> </span>-lnp<span class="w"> </span><span class="p">|</span><span class="w"> </span>grep<span class="w"> </span><span class="s2">"123"</span>
</code></pre></div>
<p>This shows nothing.</p>
<p>To fix, edit <code>/etc/chrony/chrony.conf</code>, and add </p>
<div class="highlight"><pre><span></span><code>allow all
local stratum 10
</code></pre></div>
<p>Then <code>systemctl restart chronyd</code> to restart the server. </p>
<p>On the client nodes, do the same, now the time should be synced.</p>
<div class="highlight"><pre><span></span><code><span class="m">210</span><span class="w"> </span>Number<span class="w"> </span>of<span class="w"> </span><span class="nv">sources</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span>
<span class="w"> </span>.--<span class="w"> </span>Source<span class="w"> </span>mode<span class="w"> </span><span class="s1">'^'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>server,<span class="w"> </span><span class="s1">'='</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>peer,<span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">local</span><span class="w"> </span>clock.
<span class="w"> </span>/<span class="w"> </span>.-<span class="w"> </span>Source<span class="w"> </span>state<span class="w"> </span><span class="s1">'*'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>current<span class="w"> </span>synced,<span class="w"> </span><span class="s1">'+'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>combined<span class="w"> </span>,<span class="w"> </span><span class="s1">'-'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>not<span class="w"> </span>combined,
<span class="p">|</span><span class="w"> </span>/<span class="w"> </span><span class="s1">'?'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>unreachable,<span class="w"> </span><span class="s1">'x'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">time</span><span class="w"> </span>may<span class="w"> </span>be<span class="w"> </span><span class="k">in</span><span class="w"> </span>error,<span class="w"> </span><span class="s1">'~'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">time</span><span class="w"> </span>too<span class="w"> </span>variable.
<span class="o">||</span><span class="w"> </span>.-<span class="w"> </span>xxxx<span class="w"> </span><span class="o">[</span><span class="w"> </span>yyyy<span class="w"> </span><span class="o">]</span><span class="w"> </span>+/-<span class="w"> </span>zzzz
<span class="o">||</span><span class="w"> </span>Reachability<span class="w"> </span>register<span class="w"> </span><span class="o">(</span>octal<span class="o">)</span><span class="w"> </span>-.<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nv">xxxx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>adjusted<span class="w"> </span>offset,
<span class="o">||</span><span class="w"> </span>Log2<span class="o">(</span>Polling<span class="w"> </span>interval<span class="o">)</span><span class="w"> </span>--.<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nv">yyyy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>measured<span class="w"> </span>offset,
<span class="o">||</span><span class="w"> </span><span class="se">\ </span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nv">zzzz</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>estimated<span class="w"> </span>error.
<span class="o">||</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="se">\</span>
MS<span class="w"> </span>Name/IP<span class="w"> </span>address<span class="w"> </span>Stratum<span class="w"> </span>Poll<span class="w"> </span>Reach<span class="w"> </span>LastRx<span class="w"> </span>Last<span class="w"> </span><span class="nv">sample</span>
<span class="o">===============================================================================</span>
^*<span class="w"> </span>ipa.example.com<span class="w"> </span><span class="m">4</span><span class="w"> </span><span class="m">7</span><span class="w"> </span><span class="m">377</span><span class="w"> </span><span class="m">73</span><span class="w"> </span>+360us<span class="o">[</span><span class="w"> </span>+447us<span class="o">]</span><span class="w"> </span>+/-<span class="w"> </span>28ms
</code></pre></div>
<p>All those pesky authentication problems went away.</p>Dear Taiwanese friends, here is how to gain independence from China2021-03-31T18:23:22+00:002021-03-31T18:23:22+00:00Huahaitag:yyhh.org,2021-03-31:/blog/2021/03/dear-taiwanese-friends-here-is-how-to-gain-independence-from-china<h2>Is it possible for Taiwan to gain independence from China?</h2>
<p>The answer is, yes. Here's how.</p>
<p>Before we begin, let's set aside the silly notion that "Taiwan is already independent". Statehood, like marriage, is something more about the formality than substance. You are either an independent country, or you are …</p><h2>Is it possible for Taiwan to gain independence from China?</h2>
<p>The answer is, yes. Here's how.</p>
<p>Before we begin, let's set aside the silly notion that "Taiwan is already independent". Statehood, like marriage, is something more about the formality than substance. You are either an independent country, or you are not.</p>
<p>Yes, you have an army, your own currency, your own passport, your elections, your government, so on and so forth. But, so do most of the large scale armed insurgences.</p>
<p>If you are serious about Taiwan independence, you will have to come to term with the formality. That is to say, to obtain a formal recognization of your statehood from the international community. Particularly when your statehood is contested by a big country from which you try to depart, that country's consent is pretty much a requirement. Remember, British agreed to USA's independence in the end. You, too, will have to obtain China's consent.</p>
<p>How is that even possible, you may ask? Well, that's what I am about to tell you. Read on.</p>
<p>First, let's look at the big picture. Do you know how many neighboring countries China has today?</p>
<p>The short answer is "a lot". The long answer is the following: on land, there are 14 countries: Afghanistan, Bhutan, India, Kazakhstan, North Korea, Kyrgyzstan, Laos, Mongolia, Myanmar, Nepal, Pakistan, Russia, Tajikistan, and Vietnam; on the sea, there are 6 countries: Brunei, Indonesia, Japan, South Korea, Malaysia, and Philippines.</p>
<p>In total, twenty countries are in peaceful coexistence with China side by side! As you can also see, many of them are tiny countries that you may not even know about. Clearly, that "China bad" narrative you are made to believe does not hold much water.</p>
<p>With so many neighboring countries, is it really a big deal that Taiwan is added to that list?</p>
<p>Rationally, not really.</p>
<p>Seriously? You ask. Yes, seriously.</p>
<p>Let me put it this way: in that list of China's neighbors, there is a country that used to be a Chinese territory for more than <strong>one thousand years</strong>! It is unbelievable, right? But it is true.</p>
<p>If you do not know, that country is Vietnam.</p>
<p>China has no problem with Vietnam being a separate country, which shares a land border with China, you think China will have a problem with Taiwan being as a separate country, which is located hundreds of miles away in Pacific?</p>
<p>So why is Taiwan special? What is the deal with Chinese demanding everyone else to recognize Taiwan as a part of China? What's the difference?</p>
<p>The answer will be counter-intuitive, but it makes sense if you think about it. Basically, it is less about what China thinks, but more to do with how Taiwan acts.</p>
<p>The gist of it, is that Taiwan does not act like a neighboring country of China, instead, Taiwan acts like a renegade Chinese insurgency, that's why China has to deal with her as such.</p>
<h2>Taiwan acts like a Chinese insurgency</h2>
<p>Let's postpone the discussion of history for the moment, just focus on the current affairs. Let us explore Taiwan's behaviors, shall we?</p>
<h3>Taiwan government funds anti-Chinese government propaganda</h3>
<p>First, it is well documented that Taiwan government is one of the primary funding sources of anti-Chinese government propaganda around the world.</p>
<p>We will not go into the details of Taiwan's funding of Chinese dissidents, such as Wang Dan, who lived in Taiwan for many years. If you are reading this, you probably have also heard about the so called "1450 net army", which is funded by the Taiwan government to wage propaganda war against any Chinese interest on the Internet.</p>
<p>Let's just look at Taiwan influence in USA, for example. Here is <a href="https://prospect.org/world/taiwan-funding-think-tanks-omnipresent-rarely-disclosed/">a detailed report</a> on Taiwan funding of think tanks in Washington:</p>
<blockquote>
<p>The five think tanks — the Brookings Institution, the Center for American Progress, the Center for a New American Security, the Center for Strategic and International Studies, and the Hudson Institute — all disclose their funding from TECRO but bury it deep on their websites or annual reports.</p>
</blockquote>
<p><code>TECRO</code> is the acronym for the Taipei Economic and Cultural Representative Office, which is an office under the Ministry of Foreign Affairs of Republic of China (i.e. the Taiwan government).</p>
<p>As a US citizen, I have to say that I find this foreign interference in our policy making very troubling. For the main thesis of this article, it is worth pointing out that these think tanks often propose policies that antagonize China and promote military confrontation against her. For example, <a href="https://www.hudson.org/research/16053-defending-taiwan-short-of-diplomatic-recognition">this recent policy proposal</a> talks about "guerilla sea denial", "guerilla air denial", and even “deterrence by punishment", which is defined as "Instead of threatening China’s invading forces, these capabilities would seek to deter China by threatening countervalue targets with conventional weapons."</p>
<p>So let me get this straight, the Taiwan government uses the tax money you paid to give to people that promote fighting a hot war on your island, so that they can profit from selling arms to you. Is that really to your best interest?</p>
<p>As we can see, Taiwan government is basically act as an enemy of the Chinese government. Perhaps it is because, officially, there is still a state of war between them. There is not even a cease-fire declared between the two parties that have engaged in a civil war since 1946. No truce, no cease-fire. That's the reality.</p>
<h3>Taiwan government still claims ownership of the whole China</h3>
<p>Officially, Taiwan government is calling herself the Republic of China, and her constitution still claims the ownership of the whole of China. Sorry, I am mistaken, she actually claims more than what the Chinese government claims. For example, the Republic of China does not recognize Mongolia as a separate country, whereas the People's Republic of China does.</p>
<p>This is not funny or it's some kind of schizophrenia or psychosis. The Taiwan government's claim actually has substance.</p>
<h3>Taiwan holds Chinese treasury</h3>
<p>Before the ruling party of Republic of China, the KMT, evacuated to the island of Taiwan, she took the whole of Chinese treasury with her. That included all the gold reserve of China, and more importantly, all of the cultural treasures of the Chinese civilization that could be moved.</p>
<p>Now, the Chinese civilization boasts a 5000 years of history and culture. Some would say the official religion of the Chinese civilization is not Confucianism, Taoism, Buddhism or any of the actual religions, but a belief in her own heritage and culture. In fact, Taiwanese often boasts of their better inheritance of the Chinese culture, since they still use traditional Chinese script, not the simplified one used in the mainland China.</p>
<p>Now you have it, both sides of the Taiwan strait see each other as a renegade insurgency that tries to usurp the power to govern China.</p>
<p>Therefore, Chinese government has the full right to pressure any other countries that hope to have a normal relation with her to recognize her sovereignty over the whole of China, rather than that of the Taiwan government's, just like Taiwan government did so before they were booted from the United Nations in 1970s.</p>
<h2>Steps to earn Taiwan independence from China</h2>
<p>With all the above established, for a rational person, it should be easy to see how to gain independence from China. The steps required are not complicated and easy to implement. Most importantly, it has been done before, by many people. Some of them were even successful.</p>
<h3>Cease hostility against the Chinese government</h3>
<p>This is a no-brainer. If you want to be a neighboring country of China, act like one. Unless you want to fight a war with your neighbor, you don't actively fund the forces to sabotage her interests wherever you can, right?</p>
<p>You can start by stopping writing the checks to all the anti-China individuals or institutions. It is so easy to <em>not</em> write the checks. Am I right?</p>
<p>Vietnam earned her independence from China, by agreeing to some concessions, not being act like an enemy of the Chinese government. In the end of the day, it is her consent that you are seeking.</p>
<h3>Return Chinese cultural treasures</h3>
<p>As an additional show of good will, you should offer to return all the cultural treasures that the previous Chinese government brought to your island as they fled from the country. These are Chinese things. You don't want to have anything to do with the Chinese, remember?</p>
<p>You may say, how about the British, the Americans, etc. why don't you ask them to return the Chinese treasures that they looted. Well, they looted. They fought the Chinese government at that time and won, so they took some things they liked. Did you fight and win against the Chinese government? No, you did not. So what right do you have to keep the treasures?</p>
<h3>Abolish Chinese script</h3>
<p>First, is to forge an independent sense of identity. You are well on the way there. For example, you insist that people calling you Taiwanese, not Chinese. That's good, but it is far from enough.</p>
<p>You really need to stop using Chinese, if you are truly serious. Invent a script of your own, like how Vietnam and Korea did it. Otherwise, it is only a matter of time, before you are absorbed into the sinosphere culturally and your own identity dissipates.</p>
<p>Unlike other cultures, the Chinese culture prizes unity over everything else, so you are not safe! Have you not noticed many of your celebrities are making a living in mainland China? That's dangerous.</p>
<p>You want to insulate your people from Chinese culture. Using traditional Chinese is not enough of an insulation. If someone can read simplified Chinese, they can read traditional Chinese as well, and can type traditional Chinese on a computer. There is also a resurgence of use of traditional Chinese in the mainland. It is only a matter of time, before you are fully absorbed.</p>
<p>Again, it is just too dangerous to continue using Chinese. Invent a script and mandate its use. It has proven to work, like it did in Vietnam, Korean, or more controversially, Japan.</p>
<h3>Get ready to fight on your own</h3>
<p>Now comes the hardest step. Once you declare independence, there will be a war. That is inevitable. No question about it.</p>
<p>However, a war does not mean defeat. You can win.</p>
<p>I mean, not "win" win, but achieving independence in the end. All you need to have, is a will to fight, on you own.</p>
<p>No, don't even think about it. I know what you are thinking. You think USA and her allies will come to you aid when the war with China broke out. I don't want to argue that USA and her allies will not, but I want to argue from another point of view, that is the pride of a nation.</p>
<p>Regardless what USA and her allies will do, you must be ready to fight like you want your independence and you are a nation of your own. To put it more bluntly, you have to prove your nationhood with the blood of the young.</p>
<p>You need to fight hard and drag the war on, so that the cost of keeping the war going outweighs the perceived benefits from your adversary's point of view. That's your goal.</p>
<p>That's how Vietnam got her independence. She fought, won some battles, lost some too. But she kept fighting, until the Chinese emperor got tired of fighting with her. When the negotiation offer came, she took it. Obviously, she had to make some concessions. But she got her independence in the end.</p>
<h2>Conclusion</h2>
<p>There you have it, a simple recipe to achieve independence from China. It has proven to work, and it is not complicated.</p>
<ol>
<li>Stop hostility against China</li>
<li>Return Chinese treasures</li>
<li>Abolish Chinese Script</li>
<li>Prepare to fight for your nation's independence</li>
</ol>
<p>What are you waiting for, go for it. Put pressure on your representatives to implement these steps. You are a democracy, ain't you?</p>How much can a Clojure developer do alone?2021-03-23T17:45:35+00:002021-03-23T17:45:35+00:00Huahaitag:yyhh.org,2021-03-23:/blog/2021/03/how-much-can-a-clojure-developer-do-alone<p>Someone <a href="https://www.reddit.com/r/Clojure/comments/mbil51/how_much_can_a_clojure_developer_do_alone/">asked on Reddit this question</a>, for he's wondering if it is worth the time to learn Clojure well. He has dabbled in Clojure for half a year, but was not convinced of its benefits. He has not used REPL much, and was wondering if he was doing something wrong …</p><p>Someone <a href="https://www.reddit.com/r/Clojure/comments/mbil51/how_much_can_a_clojure_developer_do_alone/">asked on Reddit this question</a>, for he's wondering if it is worth the time to learn Clojure well. He has dabbled in Clojure for half a year, but was not convinced of its benefits. He has not used REPL much, and was wondering if he was doing something wrong. He additionally has some related questions about the Clojure and functional programming in general, here are my two cents of an answer.</p>
<h2>I am not using the REPL much, am I doing something wrong?</h2>
<p>Yes, if you are not using the REPL, you are not doing Clojure right. That's the answer. It may not be what one likes to hear, but it is true.</p>
<p>There are already a lot of blog posts and Youtube videos about what it means to be "using the REPL" in Clojure, or in Lisp in general. None of them articulated the points from a Human-computer Interaction point of view. As someone who earned a Ph.D. in that field, I think I am qualified to make this point. </p>
<p>First, "using the REPL" does NOT mean typing your code in REPL. Heck, no, it's the opposite. </p>
<p>"Using the REPL" actually means typing your code in your favorite editor. However, one sends the code to evaluate in a REPL, which may not even be visible at all. Once the code is evaluated, the results immediately show up in the editor, so you get the feedback right away. Obviously, this requires some upfront setup, but a proper Clojure REPL setup exists in all major editors. Just google it.</p>
<p>Note that one normally sends the code to evaluate with a single key stroke. Note also, a very important point that people often miss, is that this "sending code to evaluate" is uniquely convenient in Lisp because of the parentheses. </p>
<p>There's a notion of "form" in Lisp, that is the code enclosed between a pair of parentheses, which can be independently evaluated. So, when next time someone insists that their favorite non-Lisp language also has a REPL, ask them, does it have a notion of "form"? </p>
<p>The benefit of a form, is that one no longer needs to use a mouse or some awkward key combinations to painstakingly select a region of code first, before sending it out for evaluation. Instead, one can use a single key stroke that means "evaluate the form under the cursor", or "evaluate the form before the cursor", etc, to precisely define the scope and send the code at the same time. </p>
<p>As someone who has published papers in human motor controls, I can assure you this simplification makes a huge difference in ergonomics. It reduces the cost of using a REPL significantly, to the extent, I would venture to estimate that half of the potential productivity gains (if any) of the Lisp family of languages come from using the REPL this way.</p>
<p>Psychologically, using REPL this way improves the <a href="https://en.wikipedia.org/wiki/Flow_(psychology)">flow</a>, the complete immersion in one's activity without interruption. No wonder <a href="https://www.computerworld.com/article/2693998/clojure-developers-are-the-happiest-developers.html">Clojure programmers are found to the happiest</a>: a mental state of flow improves well-being and life satisfaction.</p>
<p>Please, do yourself a favor, go learn and practice the skills of REPL-driven programming in Clojure. There are many <a href="https://www.google.com/search?q=repl+driven+programming+video">videos</a> that show how it is done.</p>
<h2>Can I learn Clojure well all by myself?</h2>
<p>For this one, my opinion is "probably no".</p>
<p>As alluded to above, significant amount of "doing Clojure right" is about some tiny bits of seemly unimportant things, but they add up. That's why I hold this unpopular opinion among Clojurians that Clojure is not a particularly good language for self-learning, unless one is very good at self-starting, which is not the case for the vast majority of people.</p>
<p>Most people need some trainings to be able to get into something new. If they have not been taught REPL driven programming, I don't think they can discover it by themselves, despite maybe hearing others talking about it constantly. Heck, if left alone, there are people who would complain about having to count parentheses, instead of taking the initiative to find tools to help themselves, for which there are plenty of options, e.g. paredit, smartparens, parinfer, and so on.</p>
<p>On the other hand, I seldom had any problems turning my fresh college graduates new hires into competent Clojure programmers within less than a month. The differences are two fold:</p>
<p>Pride. Fresh college graduates have none. When they encountered obstacles, they just ask questions or try harder, instead of going to the easier route of blaming the technology. Clojure is a particularly easy target to blame: It's niche, a Lisp, a JVM language, dynamic typing, etc, the list can go on and on.</p>
<p>Training. I made sure that my fresh college graduates were trained, down to the development environment setup. They also start working on a good code base right away. So they pick up the right habits at the beginning and never have to experience the kind of detours a self learner has to go through. There are lots of habits and setups that experienced Clojurians take for granted, but one has to see them to even know about them.</p>
<p>So what's the solution? I don't know. The only thing I can think of, is hoping that more Clojure shops are successful so we can hire more people, or Clojure finds a niche that it occupies fully so that when the time comes for that niche to explode, Clojure grows accordingly. </p>
<p>For whoever is reading this though, the situation is much better, because you are already reaching out and are not trying to learn all by yourself. The Clojure community is one of the nicest programming language communities. People are very welcoming to newcomers and are very helpful. Please reach out and get help. Here are some sites to get you started:</p>
<ul>
<li><a href="http://clojurians.net/">Clojurian Slack</a></li>
<li><a href="https://clojureverse.org/">Clojureverse</a></li>
<li><a href="https://www.reddit.com/r/Clojure/">Clojure Reddit</a></li>
</ul>
<h2>How much can a Clojure developer do alone?</h2>
<p>Now back to the main question, how productive can a Clojure programmer become? There are also a few related questions, I will answer one by one. </p>
<h3>Does it really make such a difference to use Clojure?</h3>
<p>Yes, it really makes a huge difference to use Clojure. Think of it this way, Clojure is a language designed for software consultants by software consultants. Cognitect, the company behind Clojure, was a software consultancy, now acquired by a bank. Clojure is also ideal for a startup, where a couple of competent Clojure programmers can write a complex application that would took a huge team of developers in other languages years of work. For my startup, our clients always thought we had a 30+ person engineering team when we have had never more than half a dozen developers.</p>
<h3>How much faster does it made you develop software? And in which areas? Did it improve performance because of easier composability? Did it made the code easier to understand because of the "better" abstractions once you got firm with them?"</h3>
<p>All of the above. Composability, easier to understand, better abstraction, etc.</p>
<p>It is much faster to develop in Clojure. The language creator, Rich Hickey, made all the design choices to ensure that a software consultant can deliver good software in as short as possible time frame, so that this software consultant can make the most profit. For a software consultant, time is the main cost, so time to market is optimized in Clojure.</p>
<p>Technically, Clojure adds to Lisp the novel ingredients of immutable data, which significantly simplifies software development. There is no other language that places such an emphasis on programming directly with plain and naked data literals. Think of programming as <a href="https://yyhh.org/blog/2016/12/data-oriented-programming-dop/">working with a richer JSON format</a> without all that serializations and transformations. How nice would that be? Well, that's exactly what Clojure programming is like.</p>
<p>Another important point is that Clojure is a very concise language. <a href="https://www.researchgate.net/publication/316922118_An_Investigation_of_the_Relationships_between_Lines_of_Code_and_Defects">Empirical data</a> shows that one of the only things reliably correlated with software quality is the number of lines of code. The more lines of code, the more bugs there will be. Clojure is one of the only four languages where language choices is statistically significantly correlated with software quality in <a href="https://arxiv.org/pdf/1901.10220.pdf">this large scale study</a>. The other two "good" languages are found to be Haskell and Ruby, the one "bad" language is C++, while Clojure has the highest statistical significance number on the "good" side. </p>
<h3>Could you possibly develop a complex enterprise software in Clojure with just say 4-8 people, knowing Clojure really well?</h3>
<p>Of course. It is not just possible, but it is also optimized for it. Clojure was developed to write complex enterprise software where user requirements are arbitrary and constantly changing. Please watch any of the <a href="https://github.com/tallesl/Rich-Hickey-fanclub">many Rich Hickey's videos</a>, as he articulated the motivation well. Plenty of big enterprises are taking advantage of Clojure, e.g. Amazon, Walmart, and so on. </p>
<p>Personally, knowing Clojure let me dare to do more ambitious things. For example, I wouldn't have started <a href="https://juji.io">my company</a> if I had not known Clojure. Before we had employees, I alone wrote the core of our chatbot platform, including a compiled domain specific language and its runtime, plus the Web front end and backend. With a small team, we had written and re-written the business facing Web application several times, which includes a no-code designer UI and an online IDE. We also have an API for programmers. All these development are done in Clojure, except some machine learning pieces done in Python.</p>
<h2>Here's my concern: I felt like, once you got functions on which other functions also depend on and expect a certain signature, you would also get a tree-like complexity where you have to scratch your head for a while to figure out how to solve it. And if the code base gets large enough, I can imagine that understanding the code and all the context just gets equally complex.</h2>
<p>The real situation in Clojure is actually a lot better than your imagination, because the immutable data localizes all functionalities, so one never has to look at the whole dependency graph to understand the code or to solve a problem. This is not something that can be said for Java-like object oriented programming, where functionalities are spread out into many layers of abstractions and into many objects.</p>
<p>A properly structured Clojure code base uses a few namespaces of pure functions. I tend to avoid many tiny files with only a few functions in them. We are not writing Java, after all. Instead, group related functions into a large file, so that one seldom needs to look over multiple files to change something. </p>
<p>Again, I stress that in Clojure, because most functions are pure and dealing with immutable data, one does not need to keep all the complexity of the whole application in the head in order to solve problems. One mostly works locally. </p>
<p>In my opinion, Clojure programming is different only in the small. Programming in the large, like software architecture, is mostly similar to other languages. The only thing of note, is that one may place more focus on pure data when designing the APIs <a href="https://youtu.be/n-avEZHEHg8">see e.g. my diff oriented architecture talk</a>. </p>
<p>Finally, let me reveal a little publicized secret of programming. To navigate large code base, in addition to the usual "go to definition" hot keys in your IDEs or editors, a good programmer, in any language, relies heavily on text search, even in their own code bases. This is a skill that experienced coders tend not to talk publicly a lot about. So please know the searchers of your editor very very well, be it grep, silver, platinum, or whatever.</p>
<h2>What are the key skills a Clojure developer has to develop to gain from that language?</h2>
<p>Having humility and ambition at the same time. The humility to know there is a lot to learn and the ambition to dare to do things that most thought impossible.</p>"Writing C code in Java/Clojure: GraalVM specific programming"2021-02-08T05:41:23+00:002021-02-08T05:41:23+00:00Huahaitag:yyhh.org,2021-02-08:/blog/2021/02/writing-c-code-in-javaclojure-graalvm-specific-programming<p>One of the latest fashions in the Java world is <a href="https://www.graalvm.org/">GraalVM</a>. For someone who has been around, I still remember the "Write once, run anywhere" slogan of Java virtual machine. Apparently, the wheel has spun back, now people want to write native code in Java, which has to be compiled …</p><p>One of the latest fashions in the Java world is <a href="https://www.graalvm.org/">GraalVM</a>. For someone who has been around, I still remember the "Write once, run anywhere" slogan of Java virtual machine. Apparently, the wheel has spun back, now people want to write native code in Java, which has to be compiled to different machine codes in different platforms.</p>
<p>The driving forces for this change may include the often lamented slow startup time of Java programs. For the brave new world of serverless functions, a quick starting program makes a lot of economic sense. The small but vibrant <a href="https://clojure.org/">Clojure</a> community, which I consider myself a part of, is particularly excited about this new found capability of JVM, for we now have one more way to write quick starting command line programs using our beloved language. The other way is to use ClojureScript on one of the Javascript engines, but Javascript engines are slower than JVM and are not as nice. For example, <a href="https://github.com/babashka/babashka">Babashka</a> is one such example that has taken the community by storm.</p>
<p>As the author of <a href="https://github.com/juji-io/datalevin">Datalevin</a>, a relatively new open source Datalog database, I have decided to answer the users' call for a native version of Datalevin using GraalVM native image technology. After some trials and errors, I have gotten a native version of Datalevin to pass all the tests. Now I can share some experience.</p>
<h2>Failed attempts to compile Datalevn to native image</h2>
<p>The difficulty of directly compiling Datalevin to GraalVM native image lies in our use of <a href="https://github.com/jnr/jnr-ffi">JNR</a> library to wrap <a href="https://en.wikipedia.org/wiki/Lightning_Memory-Mapped_Database">LMDB</a>, the underlying key-value store that is written in C. As far as I know, no one has succeeded in getting JNR to work with native image. This is not for the lack of trying, see for example <a href="https://github.com/borkdude/datalevin-native">this effort</a> and <a href="https://github.com/oracle/graal/issues/675">this issue</a>. I myself have tried really hard. Although I think I have gone further than many, the need to rerun some class initialization at runtime prevented me from succeeding. Apparently, some GraalVM team members also think it is not easy to do at this point.</p>
<p>I am left with two options: one is to use a different LMDB wrapper that does not use JNR. For example, a <a href="https://github.com/deephacks/lmdbjni">JNI based LMDB wrapper</a> is available and GraalVM native image does support JNI. However, that code has not been updated for a long time and its maintainer seems to have joined <a href="https://github.com/lmdbjava/lmdbjava">LMDBJava</a>, the LMDB wrapper that uses JNR. The other option is to write a LMDB wrapper of my own that can run in native image. So I <a href="https://github.com/juji-io/datalevin/tree/master/native">did just that</a>.</p>
<h2>Writing C code in Java/Clojure</h2>
<p>As a native technology, GraalVM obviously has the facility to interface with C code. Not just that, it must also have the facility to write native code on its own. Fortunately, such facility is also packaged as a SDK that is publicly available. To use this SDK, one has to be familiar with not just Java, but also C programming, because effectively, it is writing low level C code in Java syntax.</p>
<p>The only problem is that there isn't an official documentation for this kind of programming, just a <a href="https://www.graalvm.org/sdk/javadoc/index.html?org/graalvm/nativeimage/c/package-summary.html">Java doc</a> and a <a href="https://github.com/oracle/graal/blob/master/substratevm/src/com.oracle.svm.tutorial/src/com/oracle/svm/tutorial/CInterfaceTutorial.java">coding example</a>. After some research, I also found a few other examples: an <a href="https://github.com/praj-foss/opengl-graal-examples">OpenGL demo</a>, a <a href="https://github.com/michael-simons/neo4j-java-driver-native-lib">neo4j native driver</a> and an <a href="https://github.com/praj-foss/uname-graalvm-demo">uname utility</a>. I hope that this blog post adds to this growing library of GraalVM specific programming examples.</p>
<h3>Import C data and functions</h3>
<p>Our goal is to write a LMDB wrapper with GraalVM SDK without using JNI.</p>
<p>The first step is to make Java aware of the LMDB C data structures and functions declared in the header file <code>lmdb.h</code>, so that our Java code can use them. This step is fairly easy and pleasant, compared with JNI. All one needs to do is to write a Java class to list all those C structs, enums and functions as native interfaces and annotate these with appropriate GraalVM specific annotations.</p>
<p>For example, for a C struct definition:</p>
<div class="highlight"><pre><span></span><code><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">MDB_val</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">mv_size</span><span class="p">;</span><span class="w"> </span><span class="cm">/**< size of the data item */</span>
<span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">mv_data</span><span class="p">;</span><span class="w"> </span><span class="cm">/**< address of the data item */</span>
<span class="p">}</span><span class="w"> </span><span class="n">MDB_val</span><span class="p">;</span>
</code></pre></div>
<p>The corresponding Java declaration is the following:</p>
<div class="highlight"><pre><span></span><code><span class="w"> </span><span class="nd">@CStruct</span><span class="p">(</span><span class="s">"MDB_val"</span><span class="p">)</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">interface</span> <span class="nc">MDB_val</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">PointerBase</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nd">@CField</span><span class="p">(</span><span class="s">"mv_size"</span><span class="p">)</span>
<span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="nf">get_mv_size</span><span class="p">();</span>
<span class="w"> </span><span class="nd">@CField</span><span class="p">(</span><span class="s">"mv_size"</span><span class="p">)</span>
<span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">set_mv_size</span><span class="p">(</span><span class="kt">long</span><span class="w"> </span><span class="n">value</span><span class="p">);</span>
<span class="w"> </span><span class="nd">@CField</span><span class="p">(</span><span class="s">"mv_data"</span><span class="p">)</span>
<span class="w"> </span><span class="n">VoidPointer</span><span class="w"> </span><span class="nf">get_mv_data</span><span class="p">();</span>
<span class="w"> </span><span class="nd">@CField</span><span class="p">(</span><span class="s">"mv_data"</span><span class="p">)</span>
<span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">set_mv_data</span><span class="p">(</span><span class="n">VoidPointer</span><span class="w"> </span><span class="n">value</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
</code></pre></div>
<p>The <code>CStruct</code> annotation tells Java which C struct to import. I gave the Java interface the same name as C so it is easier for me to keep track. One could also name it otherwise, e.g. "MDBVal" if one wants to follow CamelCases. It does not matter.</p>
<p><code>PointerBase</code> interface indicates a native word type, and is the root of all C pointers being imported into Java. Most things in GraalVM SDK work with these native word types.</p>
<p><code>CField</code> annotation imports a C struct field as a Java method. Setters and getters need to be declared separately. Again, I give these methods similar names as C field names, but you may prefer to follow Java name convention instead, e.g. "getMvSize".</p>
<p><code>VoidPointer</code> is a faithful translation of <code>void *</code>.</p>
<p>For an opaque C struct declaration that does not list its fields, one must add an <code>isIncomplete</code> option to the annotation, otherwise compilation will fail with a "sizeOf" related error. For example, for a C struct like this:</p>
<div class="highlight"><pre><span></span><code><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">MDB_env</span><span class="w"> </span><span class="n">MDB_env</span><span class="p">;</span>
</code></pre></div>
<p>The corresponding Java declaration is this:</p>
<div class="highlight"><pre><span></span><code><span class="w"> </span><span class="nd">@CStruct</span><span class="p">(</span><span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"MDB_env"</span><span class="p">,</span><span class="w"> </span><span class="n">isIncomplete</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">)</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">interface</span> <span class="nc">MDB_env</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">PointerBase</span><span class="w"> </span><span class="p">{}</span>
</code></pre></div>
<p>C functions are directly translated into Java static native methods, e.g.:</p>
<div class="highlight"><pre><span></span><code><span class="kt">int</span><span class="w"> </span><span class="nf">mdb_env_get_maxkeysize</span><span class="p">(</span><span class="n">MDB_env</span><span class="w"> </span><span class="o">*</span><span class="n">env</span><span class="p">);</span>
</code></pre></div>
<p>The corresponding Java declaration is the following:</p>
<div class="highlight"><pre><span></span><code><span class="w"> </span><span class="nd">@CFunction</span><span class="p">(</span><span class="s">"mdb_env_get_maxkeysize"</span><span class="p">)</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">native</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">mdb_env_get_maxkeysize</span><span class="p">(</span><span class="n">MDB_env</span><span class="w"> </span><span class="n">env</span><span class="p">);</span>
</code></pre></div>
<p>Notice that the pointer to <code>MDB_env</code> struct is replaced by <code>MDB_env</code> Java interface declared above, as it extends <code>PointerBase</code>.</p>
<p>For parameters with double pointer type, one can declare them as <code>WordPointer</code> in Java, as they point to another pointer (i.e. word). For example, this C function:</p>
<div class="highlight"><pre><span></span><code><span class="kt">int</span><span class="w"> </span><span class="nf">mdb_env_create</span><span class="p">(</span><span class="n">MDB_env</span><span class="w"> </span><span class="o">**</span><span class="n">env</span><span class="p">);</span>
</code></pre></div>
<p>is translated into this Java code:</p>
<div class="highlight"><pre><span></span><code><span class="w"> </span><span class="nd">@CFunction</span><span class="p">(</span><span class="s">"mdb_env_create"</span><span class="p">)</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">native</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">mdb_env_create</span><span class="p">(</span><span class="n">WordPointer</span><span class="w"> </span><span class="n">envPtr</span><span class="p">);</span>
</code></pre></div>
<p>Finally, for these annotations to work, the containing class must be annotated with appropriate C context, which is often defined as a static inner class of the class, like so:</p>
<div class="highlight"><pre><span></span><code><span class="nd">@CContext</span><span class="p">(</span><span class="n">Lib</span><span class="p">.</span><span class="na">Directives</span><span class="p">.</span><span class="na">class</span><span class="p">)</span>
<span class="kd">public</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Lib</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Directives</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">CContext</span><span class="p">.</span><span class="na">Directives</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nd">@Override</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">List</span><span class="o"><</span><span class="n">String</span><span class="o">></span><span class="w"> </span><span class="nf">getHeaderFiles</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">Collections</span><span class="p">.</span><span class="na">singletonList</span><span class="p">(</span><span class="s">"<lmdb.h>"</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="nd">@Override</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">List</span><span class="o"><</span><span class="n">String</span><span class="o">></span><span class="w"> </span><span class="nf">getLibraries</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">Arrays</span><span class="p">.</span><span class="na">asList</span><span class="p">(</span><span class="s">"lmdb"</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">...</span>
<span class="p">}</span>
</code></pre></div>
<p>The <code>CContext.Directives</code> class imports the necessary C header file and finds the corresponding C library. In this particular example, we are importing the system wide LMDB header file and library installed by <code>apt install liblmdb-dev</code> on Debian/Ubuntu. An example of importing local header file and library can be found in Datalevin source code <a href="https://github.com/juji-io/datalevin/blob/master/native/src/java/datalevin/ni/Lib.java#L55">here</a>.</p>
<p>The code of all C to Java translations is <a href="https://github.com/juji-io/datalevin/blob/master/native/src/java/datalevin/ni/Lib.java">here</a></p>
<h3>Clojure specific considerations</h3>
<p>Clojure <code>deftype</code> supports Java annotations, so that is what I used to implement the higher level constructs of the LMDB wrapper. For example:</p>
<div class="highlight"><pre><span></span><code><span class="p">(</span><span class="kd">deftype </span><span class="o">^</span><span class="p">{</span><span class="nv">Retention</span><span class="w"> </span><span class="nv">RetentionPolicy/RUNTIME</span>
<span class="w"> </span><span class="nv">CContext</span><span class="w"> </span><span class="p">{</span><span class="ss">:value</span><span class="w"> </span><span class="nv">Lib$Directives</span><span class="p">}}</span>
<span class="w"> </span><span class="nv">LMDB</span><span class="w"> </span><span class="p">[</span><span class="o">^</span><span class="nv">Env</span><span class="w"> </span><span class="nv">env</span>
<span class="w"> </span><span class="o">^</span><span class="nv">String</span><span class="w"> </span><span class="nv">dir</span>
<span class="w"> </span><span class="o">^</span><span class="nv">RtxPool</span><span class="w"> </span><span class="nv">pool</span>
<span class="w"> </span><span class="o">^</span><span class="nv">ConcurrentHashMap</span><span class="w"> </span><span class="nv">dbis</span>
<span class="w"> </span><span class="o">^</span><span class="ss">:volatile-mutable</span><span class="w"> </span><span class="nv">closed?</span><span class="p">]</span>
<span class="w"> </span><span class="nv">...</span><span class="p">)</span>
</code></pre></div>
<p>One limitation that one needs to be aware of when writing native image related Clojure code, is that most things in the GraalVM SDK inherit from <code>org.graalvm.word.WordBase</code>, not from <code>java.lang.Object</code>, which breaks the hidden assumption of a lot of Clojure constructs. For example, one cannot do this:</p>
<div class="highlight"><pre><span></span><code><span class="p">(</span><span class="k">let </span><span class="p">[</span><span class="nv">env</span><span class="w"> </span><span class="o">^</span><span class="nv">Lib$MDB_env</span><span class="w"> </span><span class="p">(</span><span class="nf">Env/create</span><span class="p">)]</span>
<span class="w"> </span><span class="nv">...</span><span class="p">)</span>
</code></pre></div>
<p>Because <code>Lib$MDB_env</code> extends <code>PointerBase</code>, but Clojure <code>let</code> seems to assume everything getting bound is an <code>Object</code>. An "expecting Object but got Word" or vice visa error will be thrown during compilation for these cases. So writing a thin layer of wrapper for these GraalVM word types seems to be inevitable, unless Clojure can be enhanced to be more native image programming friendly.</p>
<p>Another point of caution is about arrays. GraalVM uses reflection to create array objects, but if these array objects are not declared at build time, the code won't run. For instance, for Clojure <code>into-array</code> function, we should not omit the optional first argument for element data type, otherwise, one has to manually specify the array type in the <a href="https://www.graalvm.org/reference-manual/native-image/Reflection/"><code>reflection.json</code> file during compilation</a>, or the Graal runtime will complain about "Class such and such is instantiated reflectively but was never registered". For Clojure dynamically generated classes with names such as these, "datalevin.test.query$fn__12734$fn__12739$fn__12740[]", it is impossible to add them manually in <code>reflection.json</code>. So the only solution is to specify the element data type in code, e.g. <code>(into-array Object data)</code>, instead of <code>(into-array data)</code>.</p>
<p>The full Clojure project for native Datalevin is <a href="https://github.com/juji-io/datalevin/tree/master/native">here</a>.</p>
<h3>Memory management and pointer wrangling</h3>
<p>The main challenge of building a LMDB wrapper is to find a way to put transaction data into and get query data out of LMDB. As shown above, LMDB use a <code>MDB_val</code> struct to represents input/output data. All it contains is a data size and a pointer to the data. LMDBJava uses JNR and <code>Unsafe</code> or reflections to manipulate a <code>java.nio.ByteBuffer</code> to achieve this. Since we cannot use these in this project, we have to come up with a GraalVM specific solution.</p>
<p>It turned out the code to do this is quite easy to write. Instead of allocating the ByteBuffer in Java and presenting it to C, we manage the memory in C and present it as a ByteBuffer in Java, without all that <code>Unsafe</code> and reflection shenanigans.</p>
<div class="highlight"><pre><span></span><code><span class="cm">/**</span>
<span class="cm"> * Wrap LMDB MDB_val to look like a ByteBuffer at the Java side</span>
<span class="cm"> */</span>
<span class="nd">@CContext</span><span class="p">(</span><span class="n">Lib</span><span class="p">.</span><span class="na">Directives</span><span class="p">.</span><span class="na">class</span><span class="p">)</span>
<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">BufVal</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">ByteBuffer</span><span class="w"> </span><span class="n">inBuf</span><span class="p">;</span>
<span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">VoidPointer</span><span class="w"> </span><span class="n">data</span><span class="p">;</span>
<span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">Lib</span><span class="p">.</span><span class="na">MDB_val</span><span class="w"> </span><span class="n">ptr</span><span class="p">;</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">BufVal</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">size</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">UnmanagedMemory</span><span class="p">.</span><span class="na">calloc</span><span class="p">(</span><span class="n">size</span><span class="p">);</span>
<span class="w"> </span><span class="n">ptr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">UnmanagedMemory</span><span class="p">.</span><span class="na">calloc</span><span class="p">(</span><span class="n">SizeOf</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="n">Lib</span><span class="p">.</span><span class="na">MDB_val</span><span class="p">.</span><span class="na">class</span><span class="p">));</span>
<span class="w"> </span><span class="n">ptr</span><span class="p">.</span><span class="na">set_mv_size</span><span class="p">(</span><span class="n">size</span><span class="p">);</span>
<span class="w"> </span><span class="n">ptr</span><span class="p">.</span><span class="na">set_mv_data</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
<span class="w"> </span><span class="n">inBuf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">CTypeConversion</span><span class="p">.</span><span class="na">asByteBuffer</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="w"> </span><span class="n">size</span><span class="p">);</span>
<span class="w"> </span><span class="n">inBuf</span><span class="p">.</span><span class="na">order</span><span class="p">(</span><span class="n">ByteOrder</span><span class="p">.</span><span class="na">BIG_ENDIAN</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="cm">/**</span>
<span class="cm"> * Set the limit of internal ByteBuffer to the current position, and update</span>
<span class="cm"> * the MDB_val size to be the same, so no unnecessary bytes are written</span>
<span class="cm"> */</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">flip</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">inBuf</span><span class="p">.</span><span class="na">flip</span><span class="p">();</span>
<span class="w"> </span><span class="n">ptr</span><span class="p">.</span><span class="na">set_mv_size</span><span class="p">(</span><span class="n">inBuf</span><span class="p">.</span><span class="na">limit</span><span class="p">());</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="cm">/**</span>
<span class="cm"> * Set the limit of internal ByteBuffer to capacity, and update</span>
<span class="cm"> * the MDB_val size to be the same, so it is ready to accept writes</span>
<span class="cm"> */</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">clear</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">inBuf</span><span class="p">.</span><span class="na">clear</span><span class="p">();</span>
<span class="w"> </span><span class="n">ptr</span><span class="p">.</span><span class="na">set_mv_size</span><span class="p">(</span><span class="n">inBuf</span><span class="p">.</span><span class="na">limit</span><span class="p">());</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="cm">/**</span>
<span class="cm"> * Free memory</span>
<span class="cm"> */</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">close</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">UnmanagedMemory</span><span class="p">.</span><span class="na">free</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
<span class="w"> </span><span class="n">UnmanagedMemory</span><span class="p">.</span><span class="na">free</span><span class="p">(</span><span class="n">ptr</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="cm">/**</span>
<span class="cm"> * Return a ByteBuffer for getting data out of MDB_val</span>
<span class="cm"> */</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">ByteBuffer</span><span class="w"> </span><span class="nf">outBuf</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">ByteBuffer</span><span class="w"> </span><span class="n">buf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">CTypeConversion</span><span class="p">.</span><span class="na">asByteBuffer</span><span class="p">(</span><span class="n">ptr</span><span class="p">.</span><span class="na">get_mv_data</span><span class="p">(),</span>
<span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">ptr</span><span class="p">.</span><span class="na">get_mv_size</span><span class="p">());</span>
<span class="w"> </span><span class="n">buf</span><span class="p">.</span><span class="na">order</span><span class="p">(</span><span class="n">ByteOrder</span><span class="p">.</span><span class="na">BIG_ENDIAN</span><span class="p">);</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">buf</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="cm">/**</span>
<span class="cm"> * Reset MDB_val pointer back to internal ByteBuffer, and return it</span>
<span class="cm"> * for putting data into MDB_val</span>
<span class="cm"> */</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">ByteBuffer</span><span class="w"> </span><span class="nf">inBuf</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">ptr</span><span class="p">.</span><span class="na">set_mv_data</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">inBuf</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="cm">/**</span>
<span class="cm"> * Return the MDB_val pointer to be used in LMDB calls</span>
<span class="cm"> */</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">Lib</span><span class="p">.</span><span class="na">MDB_val</span><span class="w"> </span><span class="nf">getVal</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="n">Lib</span><span class="p">.</span><span class="na">MDB_val</span><span class="p">)</span><span class="n">ptr</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="cm">/**</span>
<span class="cm"> * factory method to create an instance</span>
<span class="cm"> */</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="n">BufVal</span><span class="w"> </span><span class="nf">create</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">size</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">BufVal</span><span class="p">(</span><span class="n">size</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</code></pre></div>
<p>We allocate the memory for the data and the <code>MDB_val</code> struct with the <code>UnmanagedMemory.calloc</code> static method from the SDK. This allocates memory from the heap just like in C. We will then need to free the memory ourselves.</p>
<p>If the memory is needed only for a short period of time, the other options are <code>PinnedObject</code> or <code>StackValue</code> classes of the SDK. The former allows creating Java objects and then pinning them down, so that the garbage collector does not move them or delete them, in order to get a stable pointer to work with at the C side. The latter allocates objects from the stack so it is short-lived. These cases do not fit our need for long term pointers to database data structures, so we use <code>UnmanagedMemory</code>.</p>
<p>The SDK utility <code>CTypeConversion.asByteBuffer</code> static method is what makes our effort possible. We can simply expose a <code>MDB_val</code> as a <code>ByteBuffer</code> to Java in the constructor for incoming data, and in <code>outBuf()</code> for outgoing data. The rest of the code is just bookkeeping for the ByteBuffer.</p>
<h2>Conclusion</h2>
<p>I am happy that this effort is turning out well. The GraalVM SDK is quite pleasant to use, once one figures it out. I wish that this API can be made available in regular JVM as well, so we can truly write it once, and use it everywhere, regardless the underlying languages and platforms.</p>
<h2>Important Update (2023-01-06)</h2>
<p>For GraalVM versions newer than 21.3.0, those C context annotations in the
Clojure code shown above should be removed, because <code>CContext</code> is now marked as
<code>HOST_ONLY</code>, and is available only during build time. Basically, only those Java
classes that directly wrap the C code should now add these annotations.</p>Fix FreeIPA httpd Let's Encrypt Certificate Update2021-01-01T22:58:21+00:002021-01-01T22:58:21+00:00Huahaitag:yyhh.org,2021-01-01:/blog/2021/01/fix-freeipa-httpd-lets-encrypt-certificate-update<p>For a public facing Web interface of FreeIPA server, it is desirable to use a 3rd party SSL certificate issued by a commonly accepted certificate authority, rather than using the server's own. <a href="https://letsencrypt.org/">Let's Encrypt</a> provides free SSL certificate for this purpose.</p>
<p>To use Letsencrypt certificate with FreeIPA, <a href="https://github.com/freeipa/freeipa-letsencrypt">this script</a> does …</p><p>For a public facing Web interface of FreeIPA server, it is desirable to use a 3rd party SSL certificate issued by a commonly accepted certificate authority, rather than using the server's own. <a href="https://letsencrypt.org/">Let's Encrypt</a> provides free SSL certificate for this purpose.</p>
<p>To use Letsencrypt certificate with FreeIPA, <a href="https://github.com/freeipa/freeipa-letsencrypt">this script</a> does a good job, and I have been using this for several years. </p>
<h2>Problem</h2>
<p>When the letsencrypt certificate was renewed last month, a problem occurred. The Apache httpd server used by FreeIPA could not start. The error in <code>/var/log/httpd/error_log</code> says:</p>
<blockquote>
<p>SSL Library Error: -8179 Certificate is signed by an unknown issuer</p>
</blockquote>
<p>The next line says:</p>
<blockquote>
<p>Unable to verify certificate 'Server-Cert'. Add "NSSEnforceValidCerts off" to nss.conf so the server can start until the problem can be resolved.</p>
</blockquote>
<p>So I did just that. Now the httpd server could start, and the Web UI did show up. However, one could not login, and the UI showed an "unknown error" message.</p>
<p>The error log says:</p>
<blockquote>
<p>ipa: INFO: 401 Unauthorized: HTTPSConnectionPool(host='ipa.example.com', port=443): Max retries exceeded with url: /ipa/session/cookie (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:866)'),))</p>
</blockquote>
<p>and </p>
<blockquote>
<p>SSL Library Error: -12195 Peer does not recognize and trust the CA that issued your certificate</p>
</blockquote>
<p>That's a bit frustrating. </p>
<p>What's worse, in my attempt to reran the "renew-le.sh" script to see what's going on, I ran into the rate limit of letsencrypt service, which only allows 5 renewals per week. There's no way to reset that and I had to wait for a week.</p>
<h2>Fix</h2>
<p>Today, a week has past, and I finally fixed the problem, after almost half a day.</p>
<p>It turned out that Let's Encrypt has been updating their Root and Intermediate certificates. See details <a href="https://letsencrypt.org/certificates/">here</a>.</p>
<p>The old root certificate, <code>DSTRootCAX3.pem</code> is being phased out. In the past, I have been getting certificate from <code>X3</code> under it. However, the new certificate that I got is from <code>R3</code> under the new root <code>isrgrootx1.pem</code>. </p>
<p>What's worse is that this new certificate was still issued with old root. What's missing, is an intermediate certificate that crossed signed with this old root, <code>lets-encrypt-r3-cross-signed.pem</code>. Without this, the certificate cannot be verified, hence the error.</p>
<p>So the solution, is to download https://letsencrypt.org/certs/lets-encrypt-r3-cross-signed.pem, then install it:</p>
<div class="highlight"><pre><span></span><code>wget<span class="w"> </span>https://letsencrypt.org/certs/lets-encrypt-r3-cross-signed.pem
ipa-cacert-manage<span class="w"> </span>install<span class="w"> </span>lets-encrypt-r3-cross-signed.pem<span class="w"> </span>-n<span class="w"> </span>letsencryptr3-cross<span class="w"> </span>-t<span class="w"> </span>C,,
</code></pre></div>
<p>After this, if you attempt to run <code>ipa-certupdate</code>, it will fail:</p>
<blockquote>
<p>ipapython.admintool: DEBUG: The ipa-certupdate command failed, exception: NetworkError: cannot connect to 'https://ipa.example.com/ipa/json': [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:877)</p>
<p>ipapython.admintool: ERROR: cannot connect to 'https://ipa.example.com/ipa/json': [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:877)</p>
<p>ipapython.admintool: ERROR: The ipa-certupdate command failed.</p>
</blockquote>
<p>It's like catch 22, because your httpd SSL certificate cannot be verified, you cannot update your ipa certificates, because it requires connecting to your httpd server over SSL, but it is already failed due to lack of proper certificate. What a stupid design!</p>
<p>Anyhow, I finally figured out a way around this, which is to manually edit <code>/etc/ipa/ca.cert</code>, and append all the certificates needed for the full chain: DSTRootCAX3.pem -> lets-encrypt-r3-cross-signed.pem -> cert.pem that was issued by letsencrypt, one after another. </p>
<p>Restart server. Now <code>ipa-certupdate</code> is successful! All is well. </p>
<h2>Some useful commands</h2>
<p>In the process of figuring this out, I found a few commands that could be useful in the future to diagnose similar problems. </p>
<p>To figure out what certificates FreeIPA knows about:</p>
<div class="highlight"><pre><span></span><code>ldapsearch -Y GSSAPI -Q -b cn=certificates,cn=ipa,cn=etc,dc=example,dc=com
</code></pre></div>
<p>To see what certificate httpd knows about:</p>
<div class="highlight"><pre><span></span><code>certutil -L -d /etc/httpd/alias/
</code></pre></div>
<p>To install a certificate to httpd with name "Server-Cert":</p>
<div class="highlight"><pre><span></span><code>certutil -A -d /etc/httpd/alias/ -n Server-Cert -t u,u,u -a -i file.pem
</code></pre></div>
<p>To test SSL connection:</p>
<div class="highlight"><pre><span></span><code><span class="nv">openssl</span><span class="w"> </span><span class="nv">s_client</span><span class="w"> </span><span class="o">-</span><span class="nv">showcerts</span><span class="w"> </span><span class="o">-</span><span class="nv">verify</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="o">-</span><span class="k">connect</span><span class="w"> </span><span class="nv">ipa</span>.<span class="nv">example</span>.<span class="nv">com</span>:<span class="mi">443</span>
</code></pre></div>ZGC garbage collector and Clojure applications2020-12-29T22:20:27+00:002020-12-29T22:20:27+00:00Huahaitag:yyhh.org,2020-12-29:/blog/2020/12/zgc-garbage-collector-and-clojure-applications<p>The main product of <a href="https://juji.io">my startup</a> is written in Clojure, a language that puts enormous pressure on the memory garbage collector due to the pervasive use of immutable data structures. The new Z garbage collector on JVM has been a blessing for us, as it has largely solved our memory …</p><p>The main product of <a href="https://juji.io">my startup</a> is written in Clojure, a language that puts enormous pressure on the memory garbage collector due to the pervasive use of immutable data structures. The new Z garbage collector on JVM has been a blessing for us, as it has largely solved our memory problems. However, there are a few points that one needs to pay attention.</p>
<h2>Large pages</h2>
<p>We followed the suggestion on the <a href="https://wiki.openjdk.java.net/display/zgc/Main#Main-EnablingLargePagesOnLinux">ZGC page</a> to enable large pages. </p>
<p>Here is the easiest way to enable large page on Debian Linux: add "hugepages=9216" to <code>GRUB_CMDLINE_LINUX_DEFAUT</code> line in the <code>/etc/default/grub</code> file, issue <code>update-grub</code> as root, then reboot. This creates 9216 huge pages that are 2MB each (default), totaling 18GB. In the JVM startup options, add <code>-XX:+UseLargePages</code> to enable large pages in JVM.</p>
<p>The ZGC page says:</p>
<blockquote>
<p>Configuring ZGC to use large pages will generally yield better performance (in terms of throughput, latency and start up time) and comes with no real disadvantage. </p>
</blockquote>
<p>Unfortunately, that is not always true.</p>
<p>As mentioned, our Clojure application puts a lot of pressure on GC. After the application has been up for a few days and after heavy loads, it will become extremely slow, resulting in customer complaints. We had to restart the application when that happened.</p>
<p>Disabling large pages (reverse the above steps) removed the problem. </p>
<p>It appears that the culprit is memory fragmentation. As described <a href="https://www.oracle.com/java/technologies/javase/largememory-pages.html">here</a>: </p>
<blockquote>
<p>for a system that has been up for a long time, excessive fragmentation can make it impossible to reserve enough large page memory. </p>
</blockquote>
<p>That is to say, be careful with large pages. Avoid it if memory pressure is high. </p>
<h2>Number of Concurrent GC Threads</h2>
<p>Since a Clojure application allocates tons of temporary objects then discards them, the garbage collector has more work to do. JVM's default setting of <code>-XX:ConcGCThreads</code> tends to be lower than necessary for a Clojure application under load. For example, by default, ZGC collector will only use one concurrent CG thread on a four core machine, which is definitely not enough. Setting the number to be two seems to be the minimum. I set it to three on our 8 core production servers. It seems to work well. </p>How to Setup SAML2 Authentication on Sentry with Keycloak2020-10-19T18:28:25+00:002020-10-19T18:28:25+00:00Huahaitag:yyhh.org,2020-10-19:/blog/2020/10/how-to-setup-saml2-authentication-on-sentry-with-keycloak<p>With newer versions of on-premise Sentry (I am using Sentry 20.10.1), the <a href="https://yyhh.org/blog/2017/12/ldap-authentication-for-on-premise-sentry-server-using-freeipa/">LDAP authentication</a> does not seem to work any more. The code still compiles but the LDAP login UI does not show up. Fortunately, newer versions of Sentry provide built-in support for SAML2 authentication, so we can …</p><p>With newer versions of on-premise Sentry (I am using Sentry 20.10.1), the <a href="https://yyhh.org/blog/2017/12/ldap-authentication-for-on-premise-sentry-server-using-freeipa/">LDAP authentication</a> does not seem to work any more. The code still compiles but the LDAP login UI does not show up. Fortunately, newer versions of Sentry provide built-in support for SAML2 authentication, so we can use that instead. We can do this because our LDAP service is connected with an identity provider, in our case, a Keycloak server. </p>
<p>It took a bit of fiddlings in the UI of these two applications to set things up correctly. Here's how.</p>
<h1>Keycloak Setup</h1>
<p>The first step is to register Sentry with IdP, i.e. the Keycloak server. I am using Keycloak 3.4.3.Final community. </p>
<ol>
<li>Create a client</li>
</ol>
<p>Click "Clients" > "Create". </p>
<p>For the required "Client ID" field, just type something like <code>https://sentry.example.com/saml/metadata/example/</code>, assuming the sentry server is at <code>sentry.example.com</code>, and the organization slug in sentry is <code>example</code>.</p>
<p>Choose <code>saml</code> for "Client Protocol".</p>
<p>Click "Save".</p>
<ol>
<li>
<p>Configure the client</p>
</li>
<li>
<p>"Sign Assertions" => <code>OFF</code></p>
</li>
<li>"Encrypt Assertions" => <code>OFF</code></li>
<li>"Client Signature Required" => <code>OFF</code></li>
<li>"Force POST Binding" => <code>ON</code></li>
<li>"Force Name ID Format" => <code>OFF</code></li>
<li>"Name ID Format" => <code>email</code></li>
<li>"Valid Redirect URIs" => <code>*</code></li>
<li>"Assertion Consumer Service POST Binding URL" => <code>https://sentry.example.com/saml/acs/example/</code> </li>
<li>"Logout Service POST Binding URL" => <code>https://sentry.example.com/saml/sls/example/</code></li>
</ol>
<p>Leave the rest as they are.</p>
<ol>
<li>Configure Mappers</li>
</ol>
<p>Click "Delete" on the default "role list", and confirm, as we will use a builtin mapper.</p>
<p>Click "Add Builtin", check "X500 email", and click "Add selected". </p>
<p>Click "X500 Email", and change "SAML Attribute Name" to <code>user_email</code>, as that's what Sentry expects. Click Save.</p>
<p>We are done with Keycloak setup, now let's setup Sentry side.</p>
<h1>Sentry Setup</h1>
<p>The <a href="https://docs.sentry.io/product/accounts/sso/saml2/">instruction</a> on registering IdP with Sentry is pretty good. </p>
<p>The first method of "Using Metadata URL" works with Keycloak. </p>
<p>For "Meta URL", use <code>https://idp.example.com/auth/realms/example.com/protocol/saml/descriptor</code>, assuming the keycloak server is on <code>idp.example.com</code>, and the realm name in there is <code>example.com</code>.</p>
<p>For Attribute Mappings, use <code>user_email</code> for both "IdP User ID" and "User Email" required fields. </p>
<p>If everything setup correctly, after you are directed to your keycloak server to login, you should be directed back to Sentry with two green notifications on top, success!</p>LDAP Authentication Module for Nginx on Debian2020-10-04T23:33:54+00:002020-10-04T23:33:54+00:00Huahaitag:yyhh.org,2020-10-04:/blog/2020/10/ldap-authentication-module-for-nginx-on-debian<p>To control access to various internal Web sites of a company, a simple method is to enable LDAP authentication on the Web server, so that the company directory can be brought to bear and there is no need to create individual accounts for employees on different systems.</p>
<p>Nginx is one …</p><p>To control access to various internal Web sites of a company, a simple method is to enable LDAP authentication on the Web server, so that the company directory can be brought to bear and there is no need to create individual accounts for employees on different systems.</p>
<p>Nginx is one of the most popular free Web servers, it has a lot of built-in modules. Unfortunately, LDAP is not one of them, so we have to compile from the source. </p>
<p>Here are the steps to build a nginx Debian package from source with LDAP module enabled, on Debian 10 buster. While at it, we will also add a nginx virtual host traffic status module. </p>
<p>First install necessary tools:</p>
<div class="highlight"><pre><span></span><code>sudo<span class="w"> </span>apt<span class="w"> </span>install<span class="w"> </span>dpkg-dev<span class="w"> </span>devscripts
</code></pre></div>
<p>Now get the source and dependency of nginx</p>
<div class="highlight"><pre><span></span><code>sudo<span class="w"> </span>apt<span class="w"> </span><span class="nb">source</span><span class="w"> </span>nginx
sudo<span class="w"> </span>apt<span class="w"> </span>build-dep<span class="w"> </span>nginx
</code></pre></div>
<p>It is important to get the LDAP development library, as well as a few necessary libraries.</p>
<div class="highlight"><pre><span></span><code>sudo<span class="w"> </span>apt<span class="w"> </span>install<span class="w"> </span>libldap2-dev<span class="w"> </span>libssl-dev<span class="w"> </span>libpcre3-dev
</code></pre></div>
<p>Clone <code>nginx-auth-ldap</code> and <code>nginx-module-vts</code> source code that we plan to compile into the nginx binary.</p>
<div class="highlight"><pre><span></span><code>git<span class="w"> </span>clone<span class="w"> </span>https://github.com/kvspb/nginx-auth-ldap.git
git<span class="w"> </span>clone<span class="w"> </span>https://github.com/vozlt/nginx-module-vts.git
</code></pre></div>
<p>The part we need to change in the nginx source tree is the Debian rules, which govern how a Debian package is build. Goes into the <code>debian</code> directory of the nginx source folder, and edit the <code>rules</code> file:</p>
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>nginx-1.14.2/debian
vi<span class="w"> </span>rules
</code></pre></div>
<p>Add two lines to the end of <code>common_configure_flags</code></p>
<div class="highlight"><pre><span></span><code> ... \
--add-module=<path to>/nginx-auth-ldap \
--add-module=<path to>/nginx-module-vts
</code></pre></div>
<p>Now goes back and build.</p>
<div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>..
debuild<span class="w"> </span>-b<span class="w"> </span>-uc<span class="w"> </span>-us
</code></pre></div>
<p>This may take a while. If the build is successful, the parent directory will now contains a bunch of .deb files and these can be installed with <code>dpkg -i</code>. First install nginx-common_1.14.2-<em>.deb, then libnginx-mod-</em>.deb, finally, nginx-light, full, or extras. </p>How to Add a Preview Link to Self-hosted Netlify CMS2020-04-09T21:47:15+00:002020-04-09T21:47:15+00:00Huahaitag:yyhh.org,2020-04-09:/blog/2020/04/how-to-add-a-preview-link-to-self-hosted-netlify-cms<p>If you are using a self-hosted Netlify CMS as the online editor for your SSG powered Website and you are using the editorial workflow (you have <code>publish_mode: editorial_workflow</code> in your config.yml), a pain point is that you do not see a preview of the live page when the page …</p><p>If you are using a self-hosted Netlify CMS as the online editor for your SSG powered Website and you are using the editorial workflow (you have <code>publish_mode: editorial_workflow</code> in your config.yml), a pain point is that you do not see a preview of the live page when the page is in draft. Unlike the master branch that you can see the live page after it is built, the draft is committed to a different git branch so you do not have a link to the built page.</p>
<p>Sure, you always have a preview on the right panel in Netlify CMS, but this preview does not look like the real page. Even if you use <code>CMS.registerPreviewStyle</code> to register a stylesheet that matches your live page style, you still miss all the other parts, such the header, footer and sidebar, so you don't know how the whole page looks like until the page is published.</p>
<p><img alt="Preview link in Netlify CMS" src="/images/uploads/screen-shot-2020-04-09-at-4.10.24-pm.png" title="Preview link in Netlify CMS"></p>
<p>Netlify CMS has a feature to show a preview link for drafts, but one needs to do some setup to make it shows up. Right now, this feature only supports github as the git backend. Here I will show how I work with github, Jenkins and nginx to supply a preview link to Netlify CMS. </p>
<p>Before we begin, here's what we already have. We use a github organization, say example-com to host the repository for the site, so <code>example-com/site</code> would be the repo. The site source contains a Jenkinsfile, so when the repo is committed to, Jenkins automatically builds the site using its github integration. </p>
<p>We also set up nginx to directly point to the built site directory as the root. We are using eleventy as the SSG, so the built site is in <code>_site</code> directory. This works well for automatic deployment of the site. Whenever the master branch of the source repository is committed to, after a few seconds, the web server's <code><jenkins-agent-home>/workspace/<jenkins-job-name>_master/_site</code> directory will contain the updated site content for https://example.com</p>
<p>To add a preview link, we basically need to do the same for the preview branch, <code>PR-5</code>, a pull-request to github sent by Netlify. There are a few things need to happen.</p>
<h2>DNS</h2>
<p>We need to setup a wildcard DNS record, so that HTTP requests to places such as <code>PR-5.example.com</code>, <code>PR-11.example.com</code> goes to the IP address of the Web server. Basically, you need to add an <code>A</code> record for <code>*.example.com</code>.</p>
<h2>Nginx</h2>
<p>On the Web server, we need to setup nginx to look for these PR host names, and dynamically set the site root to point to the correct Jenkins workspace directory. For example, <code>PR-5.example.com</code> should have <code><jenkins-agent-home>/workspace/<jenkins-job-name>_PR-5/_site</code> as the root. To do that, first edit <code>/etc/nginx/nginx.conf</code>, add in the <code>http</code> context the following:</p>
<div class="highlight"><pre><span></span><code> map $http_host $rootpath {
~^(?<pr>pr\-.+)\.example\.com$ $pr;
}
</code></pre></div>
<p>This will capture the <code>PR-5</code> part of the hostname, and put it in <code>$rootpath</code> variable.</p>
<p>Then create a nginx site conf for the PR sites, say, <code>/etc/nginx/site-enabled/pr.conf</code>,</p>
<div class="highlight"><pre><span></span><code><span class="n">server</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1"># SSL configuration</span>
<span class="w"> </span><span class="c1">#</span>
<span class="w"> </span><span class="n">listen</span><span class="w"> </span><span class="mi">443</span><span class="w"> </span><span class="n">ssl</span><span class="p">;</span>
<span class="w"> </span><span class="n">listen</span><span class="w"> </span><span class="p">[::]:</span><span class="mi">443</span><span class="w"> </span><span class="n">ssl</span><span class="p">;</span>
<span class="w"> </span><span class="n">ssl</span><span class="w"> </span><span class="n">on</span><span class="p">;</span>
<span class="w"> </span><span class="n">ssl_certificate</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">letsencrypt</span><span class="o">/</span><span class="n">live</span><span class="o">/</span><span class="n">example</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">fullchain</span><span class="o">.</span><span class="n">pem</span><span class="p">;</span>
<span class="w"> </span><span class="n">ssl_certificate_key</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">letsencrypt</span><span class="o">/</span><span class="n">live</span><span class="o">/</span><span class="n">example</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">privkey</span><span class="o">.</span><span class="n">pem</span><span class="p">;</span>
<span class="w"> </span><span class="n">ssl_session_timeout</span><span class="w"> </span><span class="mi">5</span><span class="n">m</span><span class="p">;</span>
<span class="w"> </span><span class="n">ssl_ciphers</span><span class="w"> </span><span class="n">HIGH</span><span class="p">:</span><span class="o">!</span><span class="n">aNULL</span><span class="p">:</span><span class="o">!</span><span class="n">MD5</span><span class="p">;</span>
<span class="w"> </span><span class="n">server_name</span><span class="w"> </span><span class="o">~^</span><span class="n">pr</span>\<span class="o">-.+</span>\<span class="o">.</span><span class="n">example</span>\<span class="o">.</span><span class="n">com</span><span class="o">$</span><span class="p">;</span>
<span class="w"> </span><span class="n">set_by_lua</span><span class="w"> </span><span class="o">$</span><span class="n">pr</span><span class="w"> </span><span class="s2">"return string.upper(ngx.var.rootpath)"</span><span class="p">;</span>
<span class="w"> </span><span class="n">root</span><span class="w"> </span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">jenkins</span><span class="o">-</span><span class="n">slave</span><span class="o">/</span><span class="n">workspace</span><span class="o">/</span><span class="n">example</span><span class="o">-</span><span class="n">com_site_</span><span class="o">$</span><span class="n">pr</span><span class="o">/</span><span class="n">_site</span><span class="p">;</span>
<span class="w"> </span><span class="n">location</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="n">index</span><span class="o">.</span><span class="n">html</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</code></pre></div>
<p>Because DNS is case insensitive, it will not preserve the uppercase of PR-5.example.com, we will have to use lua to uppercase it to match the case sensitive directory path. </p>
<p>Notice also that we have a wildcard SSL certificate from Lets' Encrypt for <code>*.example.com</code>.</p>
<h2>Jenkinsfile</h2>
<p>On Jenkins, just setup a job that use a Jenkinsfile. My Jenkinsfile in the site source looks like this:</p>
<div class="highlight"><pre><span></span><code><span class="cp">#!/usr/bin/env groovy</span>
<span class="n">pipeline</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span><span class="n">agent</span><span class="w"> </span><span class="o">{</span><span class="w"> </span><span class="n">label</span><span class="w"> </span><span class="s1">'web'</span><span class="w"> </span><span class="o">}</span>
<span class="w"> </span><span class="n">environment</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span><span class="n">GITHUB_ACCESS_TOKEN</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">credentials</span><span class="o">(</span><span class="s1">'GITHUB_ACCESS_TOKEN'</span><span class="o">)</span>
<span class="w"> </span><span class="o">}</span>
<span class="w"> </span><span class="n">stages</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span><span class="n">stage</span><span class="o">(</span><span class="s1">'Build'</span><span class="o">)</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span><span class="n">steps</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span><span class="n">sh</span><span class="w"> </span><span class="s2">"env"</span>
<span class="w"> </span><span class="n">script</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="o">(</span><span class="n">env</span><span class="o">.</span><span class="na">BRANCH_NAME</span><span class="o">.</span><span class="na">startsWith</span><span class="o">(</span><span class="s2">"PR-"</span><span class="o">))</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span><span class="n">env</span><span class="o">.</span><span class="na">BUILD_INFO</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"<${env.RUN_DISPLAY_URL}|${env.JOB_NAME} [${env.BUILD_NUMBER}]> submitted by ${env.CHANGE_AUTHOR} with PR <https://github.com/example-com/site/pull/${CHANGE_ID}|#${env.CHANGE_ID}>: ${env.CHANGE_TITLE}"</span>
<span class="w"> </span><span class="o">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span><span class="n">env</span><span class="o">.</span><span class="na">GIT_COMMIT_MSG</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sh</span><span class="w"> </span><span class="o">(</span>
<span class="w"> </span><span class="nl">script:</span><span class="w"> </span><span class="s2">"git log --format=%B -n 1 ${env.GIT_COMMIT} | head -n 1"</span><span class="o">,</span>
<span class="w"> </span><span class="nl">returnStdout:</span><span class="w"> </span><span class="kc">true</span><span class="o">).</span><span class="na">trim</span><span class="o">()</span>
<span class="w"> </span><span class="n">env</span><span class="o">.</span><span class="na">GIT_AUTHOR_NAME</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sh</span><span class="w"> </span><span class="o">(</span>
<span class="w"> </span><span class="nl">script:</span><span class="w"> </span><span class="s2">"git show -s --pretty=%an ${env.GIT_COMMIT}"</span><span class="o">,</span>
<span class="w"> </span><span class="nl">returnStdout:</span><span class="w"> </span><span class="kc">true</span><span class="o">).</span><span class="na">trim</span><span class="o">()</span>
<span class="w"> </span><span class="n">env</span><span class="o">.</span><span class="na">BUILD_INFO</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"<${env.RUN_DISPLAY_URL}|${env.JOB_NAME} [${env.BUILD_NUMBER}]> submitted by ${env.GIT_AUTHOR_NAME} with commit <https://github.com/example-com/site/commit/${env.GIT_COMMIT}|${env.GIT_COMMIT.take(7)}>: ${env.GIT_COMMIT_MSG}"</span>
<span class="w"> </span><span class="o">}</span>
<span class="w"> </span><span class="o">}</span>
<span class="w"> </span><span class="n">sh</span><span class="w"> </span><span class="s1">'''</span>
<span class="s1"> npm install</span>
<span class="s1"> npx @11ty/eleventy</span>
<span class="s1"> '''</span>
<span class="w"> </span><span class="o">}</span>
<span class="w"> </span><span class="o">}</span>
<span class="w"> </span><span class="o">}</span>
<span class="w"> </span><span class="n">post</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span><span class="n">success</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span><span class="n">script</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="o">(</span><span class="n">env</span><span class="o">.</span><span class="na">BRANCH_NAME</span><span class="o">.</span><span class="na">startsWith</span><span class="o">(</span><span class="s2">"PR-"</span><span class="o">))</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span><span class="n">sh</span><span class="w"> </span><span class="s1">'''</span>
<span class="s1"> GIT_PR_COMMIT=$(git show-ref -s "refs/remotes/origin/${BRANCH_NAME}")</span>
<span class="s1"> curl -X POST -H "Content-Type:application/json" \</span>
<span class="s1"> -H "Authorization: token ${GITHUB_ACCESS_TOKEN}" \</span>
<span class="s1"> -d '{"state": "success", "context": "netlify-cms/preview/deploy", "description": "Deploy preview ready", "target_url": "https://'"${BRANCH_NAME}"'.example.com/"}' \</span>
<span class="s1"> "https://api.github.com/repos/example-com/site/statuses/${GIT_PR_COMMIT}"</span>
<span class="s1"> '''</span>
<span class="w"> </span><span class="o">}</span>
<span class="w"> </span><span class="o">}</span>
<span class="w"> </span><span class="n">slackSend</span><span class="w"> </span><span class="o">(</span><span class="nl">color:</span><span class="w"> </span><span class="s1">'#00FF00'</span><span class="o">,</span><span class="w"> </span><span class="nl">message:</span><span class="w"> </span><span class="s2">"SUCCESSFUL: Job ${env.BUILD_INFO}"</span><span class="o">)</span>
<span class="w"> </span><span class="o">}</span>
<span class="w"> </span><span class="n">aborted</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span><span class="n">slackSend</span><span class="w"> </span><span class="o">(</span><span class="nl">color:</span><span class="w"> </span><span class="s1">'#FF00FF'</span><span class="o">,</span><span class="w"> </span><span class="nl">message:</span><span class="w"> </span><span class="s2">"ABORTED: Job ${env.BUILD_INFO}"</span><span class="o">)</span>
<span class="w"> </span><span class="o">}</span>
<span class="w"> </span><span class="n">notBuilt</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span><span class="n">slackSend</span><span class="w"> </span><span class="o">(</span><span class="nl">color:</span><span class="w"> </span><span class="s1">'#AAAAAA'</span><span class="o">,</span><span class="w"> </span><span class="nl">message:</span><span class="w"> </span><span class="s2">"NOT_BUILT: Job ${env.BUILD_INFO}"</span><span class="o">)</span>
<span class="w"> </span><span class="o">}</span>
<span class="w"> </span><span class="n">unstable</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span><span class="n">slackSend</span><span class="w"> </span><span class="o">(</span><span class="nl">color:</span><span class="w"> </span><span class="s1">'#FFFF00'</span><span class="o">,</span><span class="w"> </span><span class="nl">message:</span><span class="w"> </span><span class="s2">"UNSTABLE: Job ${env.BUILD_INFO}"</span><span class="o">)</span>
<span class="w"> </span><span class="o">}</span>
<span class="w"> </span><span class="o">}</span>
<span class="o">}</span>
</code></pre></div>
<p>On github, I have created a personal access token, and added the token in Jenkins credentials as <code>GITHUB_ACCESS_TOKEN</code>. </p>
<p>You can see that we are sending build status to slack, but that's not important. The important part is in the additional step in the post success script, where we use curl to send a POST request to github statuses API to report a successful preview deployment (as a pull request). All the information needed for the preview link is in the JSON payload</p>
<div class="highlight"><pre><span></span><code>{<span class="w"> </span>
<span class="w"> </span>"state":<span class="w"> </span>"success",<span class="w"> </span>
<span class="w"> </span>"context":<span class="w"> </span>"netlify-cms/preview/deploy",<span class="w"> </span>
<span class="w"> </span>"description":<span class="w"> </span>"Deploy<span class="w"> </span>preview<span class="w"> </span>ready",<span class="w"> </span>
<span class="w"> </span>"target_url":<span class="w"> </span>"https://'"<span class="cp">${</span><span class="n">BRANCH_NAME</span><span class="cp">}</span>"'.example.com/"
}
</code></pre></div>
<p>The <code>state</code> is required. The <code>context</code> is what I made up, but it is important to have the keyword "deploy" in there, as that's what Netlify CMS is looking for. The <code>description</code> can be whatever. The <code>target_url</code> is the preview link we are after! </p>
<h2>Netlify CMS config.yml</h2>
<p>If you want the preview link to point to the draft article itself, you will need to add a <code>preview_path</code> in the collection in config.yml. For example, <code>preview_path: blog/{{slug}}</code>. </p>
<p>Wow, all these, just for a link. Oh well, without this link, your writers and editors will probably be mad at you, so it definitely worth it.</p>How to enable SAML SSO with self-hosted gotrue and git-gateway2020-04-03T06:18:46+00:002020-04-03T06:18:46+00:00Huahaitag:yyhh.org,2020-04-03:/blog/2020/04/how-to-enable-saml-sso-with-self-hosted-gotrue-and-git-gateway<p>Static Site Generator (SSG) is in vogue for building Web sites. Compared with traditional content management system (CMS), SSG is more performant, flexible and easier to maintain for people comfortable with coding . However, for the non-technical crowd, a WYSIWYG online editor is still the way to go. <a href="https://www.netlifycms.org/">Netlify CMS</a> fills …</p><p>Static Site Generator (SSG) is in vogue for building Web sites. Compared with traditional content management system (CMS), SSG is more performant, flexible and easier to maintain for people comfortable with coding . However, for the non-technical crowd, a WYSIWYG online editor is still the way to go. <a href="https://www.netlifycms.org/">Netlify CMS</a> fills this need nicely by offering a user interface for SSG. This article details how to enable single sign-on (SSO) for Netlify CMS, so it can be used in a business environment, where marketers, copy writers or other non-coding editors can edit and publish content. </p>
<p>Netlify's cloud platform offers SSO, and they also makes their software available in open source. Obviously, these open source software are not particularly well documented, so most people should be using their cloud offering. However, for some companies that are paranoid about privacy and business control, it is possible to host their own, for example, in order to utilize an existing corporate security infrastructure. </p>
<p>In this guide, we are going to utilize three Netlify's open source components to achieve SSO for a SSG powered Web site: <a href="https://github.com/netlify/gotrue">gotrue</a> is an identity service provider; <a href="https://github.com/netlify/git-gateway">git-gateway</a> enables people to commit content in git without knowing about git; and <a href="https://github.com/netlify/netlify-identity-widget">Netlify identity widget</a> provides the Web form for login. </p>
<p>We will connect gotrue with an existing Identity Provider (IdP) over <a href="https://en.wikipedia.org/wiki/SAML_2.0">SAML 2.0</a> protocols. In this case, an installation of <a href="https://www.keycloak.org/">Keycloak</a> will be our IdP.</p>
<h4>Keycloak Setup</h4>
<p>First, we need to create a new client for the service provider (SP) in Keycloak. In this case, SP is gotrue, which is an identity API server written in go. In the administrative console of Keycloak, create a client with the ID <code>https://example.com/.netlify/identity/saml</code>, which points to the API endpoint of gotrue. Replace <code>example.com</code> with your domain name.</p>
<p>In the settings, make sure to <em>uncheck</em> <code>Force POST Binding</code>. Otherwise, gotrue will throw an error:</p>
<blockquote>
<p>{"code":400,"msg":"Unsupported provider: No valid SSO service found in IDP metadata"}</p>
</blockquote>
<p>Turns out that gotrue only supports HTTP-Redirect binding and does not support POST binding as of this writing. I find gotrue's design choice strange, as POST has much less uncertainty to deal with in a complex environment where a bunch of Web proxying and redirecting are going on. Most SAML SPs I dealt with use POST. Anyway, it is what it is. </p>
<p>Correspondingly, set <code>Assertion Consumer Service Redirect Binding URL</code> instead of the POST one. The value should be <code>https://example.com/.netlify/identity/saml/acs</code>. </p>
<p>On the other hand, Keycloak also has its own quirk. In its metadata API endpoint, namely <code>{root}/auth/realms/{realm}/protocol/saml/descriptor</code>, it returns an XML document that is not conforming to the SAML specification. A non-forgiving SP implementation will have a problem consuming the document, which is the case with gotrue. It will dump this error message:</p>
<blockquote>
<p>{"code":400,"msg":"Unsupported provider: Fetching metadata failed: expected element type \u003cEntityDescriptor\u003e but have \u003cEntitiesDescriptor\u003e"}</p>
</blockquote>
<p>As you can see, Keycloak's XML has an unnecessary extra layer of tag <code>EntitiesDescriptor</code> around <code>EntityDescriptor</code>, which trips gotrue. Strangely, RedHat decided not to fix this. See <a href="https://issues.redhat.com/browse/KEYCLOAK-4399">this issue</a> for a fun conversation.</p>
<p>So you will have to fix it yourself. What I did was to manually copy out the correct metadata, save it in a XML file and put it on some public facing Web server temporally for gotrue to fetch. The correct metadata can be obtained in the Keycloak UI, go to "Installation" tab, then select "SAML Metadata IDPSSODescriptor".</p>
<h4>Gotrue and git-gateway Setup</h4>
<p>There is an excellent guide on how to self-host gotrue and git-gateway at <a href="https://github.com/hfte/netlify-cms-with-selfhosted-gotrue-and-git-gateway">https://github.com/hfte/netlify-cms-with-selfhosted-gotrue-and-git-gateway</a></p>
<p>Follow that guide first, and make sure it works. It does email based login, useful for inviting external bloggers or editors to work on the site. For SAML based SSO that is suitable for employees, read on.</p>
<p>There is a bug in the current version of gotrue source code. You will have to patch it first. On line 130 in <code>api/provider/saml.go</code>, we will need to add a <code>NameIdFormat</code> field. Otherwise, gotrue will send <code>""</code> as the NameIdFormat, which cause Keycloak to error out with </p>
<blockquote>
<p>"We are sorry... Unsupported NameIdFormat".</p>
</blockquote>
<p>The fix should look like this:</p>
<div class="highlight"><pre><span></span><code><span class="w"> </span><span class="nx">sp</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="o">&</span><span class="nx">saml2</span><span class="p">.</span><span class="nx">SAMLServiceProvider</span><span class="p">{</span>
<span class="w"> </span><span class="nx">IdentityProviderSSOURL</span><span class="p">:</span><span class="w"> </span><span class="nx">ssoService</span><span class="p">.</span><span class="nx">Location</span><span class="p">,</span>
<span class="w"> </span><span class="nx">IdentityProviderIssuer</span><span class="p">:</span><span class="w"> </span><span class="nx">meta</span><span class="p">.</span><span class="nx">EntityID</span><span class="p">,</span>
<span class="w"> </span><span class="nx">AssertionConsumerServiceURL</span><span class="p">:</span><span class="w"> </span><span class="nx">baseURI</span><span class="p">.</span><span class="nx">String</span><span class="p">()</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">"/saml/acs"</span><span class="p">,</span>
<span class="w"> </span><span class="nx">ServiceProviderIssuer</span><span class="p">:</span><span class="w"> </span><span class="nx">baseURI</span><span class="p">.</span><span class="nx">String</span><span class="p">()</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">"/saml"</span><span class="p">,</span>
<span class="w"> </span><span class="nx">SignAuthnRequests</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
<span class="w"> </span><span class="nx">AudienceURI</span><span class="p">:</span><span class="w"> </span><span class="nx">baseURI</span><span class="p">.</span><span class="nx">String</span><span class="p">()</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">"/saml"</span><span class="p">,</span>
<span class="w"> </span><span class="nx">IDPCertificateStore</span><span class="p">:</span><span class="w"> </span><span class="o">&</span><span class="nx">certStore</span><span class="p">,</span>
<span class="w"> </span><span class="nx">SPKeyStore</span><span class="p">:</span><span class="w"> </span><span class="nx">keyStore</span><span class="p">,</span>
<span class="w"> </span><span class="nx">NameIdFormat</span><span class="p">:</span><span class="w"> </span><span class="s">"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"</span><span class="p">,</span>
<span class="w"> </span><span class="nx">AllowMissingAttributes</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
<span class="w"> </span><span class="p">}</span>
</code></pre></div>
<p>Here we set name id format to be email address, which apparently is the only format that gotrue works with. If you set the format as 'unspecified', users will be able to login, but they cannot edit anything, all the Netlify CMS UI controls will be greyed out. Obviously gotrue is checking that it gets an email address from the IdP.</p>
<p>After the patch, compile the code.</p>
<div class="highlight"><pre><span></span><code>make deps
make build
</code></pre></div>
<p>Now the main configuration of gotrue is in a <code>.env</code> file in the root of the gotrue source code.</p>
<div class="highlight"><pre><span></span><code><span class="nv">GOTRUE_JWT_SECRET</span><span class="o">=</span><span class="s2">"your-secret-key-shared-between-git-gateway-and-gotrue"</span>
<span class="nv">GOTRUE_JWT_EXP</span><span class="o">=</span><span class="m">3600</span>
<span class="nv">GOTRUE_JWT_AUD</span><span class="o">=</span>localhost
<span class="nv">GOTRUE_DB_DRIVER</span><span class="o">=</span>mysql
<span class="nv">GOTRUE_JWT_DEFAULT_GROUP_NAME</span><span class="o">=</span>admin
<span class="nv">DATABASE_URL</span><span class="o">=</span><span class="s2">"gotrue:mysqlpassword@tcp(mysqlipaddress:3306)/gotrue?parseTime=true&multiStatements=true"</span>
<span class="nv">GOTRUE_API_HOST</span><span class="o">=</span>localhost
<span class="nv">PORT</span><span class="o">=</span><span class="m">8081</span>
<span class="nv">GOTRUE_SITE_URL</span><span class="o">=</span><span class="s2">"https://example.com/"</span>
<span class="nv">GOTRUE_LOG_LEVEL</span><span class="o">=</span>DEBUG
<span class="nv">GOTRUE_OPERATOR_TOKEN</span><span class="o">=</span>your-super-secret-operator-token
<span class="nv">GOTRUE_DISABLE_SIGNUP</span><span class="o">=</span><span class="nb">false</span>
<span class="nv">GOTRUE_MAILER_AUTOCONFIRM</span><span class="o">=</span><span class="nb">true</span>
<span class="nv">GOTRUE_EXTERNAL_SAML_ENABLED</span><span class="o">=</span><span class="nb">true</span>
<span class="nv">GOTRUE_EXTERNAL_SAML_METADATA_URL</span><span class="o">=</span><span class="s2">"https://idp.example.com/auth/realms/example.com/protocol/saml/descriptor"</span>
<span class="nv">GOTRUE_EXTERNAL_SAML_API_BASE</span><span class="o">=</span><span class="s2">"https://example.com/.netlify/identity/"</span>
<span class="nv">GOTRUE_EXTERNAL_SAML_NAME</span><span class="o">=</span><span class="s2">"Example SSO"</span>
<span class="nv">GOTRUE_EXTERNAL_SAML_SIGNING_CERT</span><span class="o">=</span><span class="s1">''</span>
<span class="nv">GOTRUE_EXTERNAL_SAML_SIGNING_KEY</span><span class="o">=</span><span class="s1">''</span>
<span class="nv">GOTRUE_EXTERNAL_LABELS</span><span class="o">=</span><span class="s2">"{SAML: Example SSO}"</span>
</code></pre></div>
<p>The <code>GOTRUE_EXTERNAL_SAML_METADATA_URL</code> value should point to the corrected XML mentioned above.</p>
<p>Note, I set the default JWT group name to be "admin", because my IdP is backed by a LDAP server that handles user group membership and permisions already, there's no need to duplicate things here. Your case may be different.</p>
<p>Now the rest of gotrue and git-gateway setup is the same as the guide linked above.</p>
<h4>Setup Netlify CMS</h4>
<p>To add Netlify CMS to your site, follow <a href="https://www.netlifycms.org/docs/add-to-your-site/">the instruction</a></p>
<p>To get a nice login form with a SSO button for Netlify CMS, use netlify-identity-widget. This is done by adding some code in <code>/admin/index.html</code> of your SSG site. Mine looks like this, and it is a bit simpler than the guide linked above.</p>
<div class="highlight"><pre><span></span><code><span class="cp"><!doctype html></span>
<span class="p"><</span><span class="nt">html</span><span class="p">></span>
<span class="p"><</span><span class="nt">head</span><span class="p">></span>
<span class="p"><</span><span class="nt">meta</span> <span class="na">charset</span><span class="o">=</span><span class="s">"utf-8"</span> <span class="p">/></span>
<span class="p"><</span><span class="nt">meta</span> <span class="na">name</span><span class="o">=</span><span class="s">"viewport"</span> <span class="na">content</span><span class="o">=</span><span class="s">"width=device-width, initial-scale=1.0"</span> <span class="p">/></span>
<span class="p"><</span><span class="nt">title</span><span class="p">></span>Content Manager<span class="p"></</span><span class="nt">title</span><span class="p">></span>
<span class="p"><</span><span class="nt">script</span> <span class="na">type</span><span class="o">=</span><span class="s">"text/javascript"</span> <span class="na">src</span><span class="o">=</span><span class="s">"https://identity.netlify.com/v1/netlify-identity-widget.js"</span><span class="p">></</span><span class="nt">script</span><span class="p">></span>
<span class="p"></</span><span class="nt">head</span><span class="p">></span>
<span class="p"><</span><span class="nt">body</span><span class="p">></span>
<span class="p"><</span><span class="nt">script</span><span class="p">></span>
<span class="w"> </span><span class="nx">netlifyIdentity</span><span class="p">.</span><span class="nx">init</span><span class="p">({</span>
<span class="w"> </span><span class="nx">APIUrl</span><span class="o">:</span><span class="w"> </span><span class="s2">"https://example.com/.netlify/identity"</span>
<span class="w"> </span><span class="p">});</span>
<span class="w"> </span><span class="p"></</span><span class="nt">script</span><span class="p">></span>
<span class="p"><</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">"https://unpkg.com/netlify-cms@^2.0.0/dist/netlify-cms.js"</span><span class="p">></</span><span class="nt">script</span><span class="p">></span>
<span class="p"><</span><span class="nt">div</span> <span class="na">data-netlify-identity-button</span><span class="p">></span>Log in<span class="p"></</span><span class="nt">div</span><span class="p">></span>
<span class="p"></</span><span class="nt">body</span><span class="p">></span>
<span class="p"></</span><span class="nt">html</span><span class="p">></span>
</code></pre></div>
<p>You may also want to add this line <code><script type="text/javascript" src="https://identity.netlify.com/v1/netlify-identity-widget.js"></script></code> into the <code>index.html</code> of your main site. As the email confirmation link is pointed there. </p>
<p>Again, the rest of the setup should follow <a href="https://github.com/hfte/netlify-cms-with-selfhosted-gotrue-and-git-gateway">https://github.com/hfte/netlify-cms-with-selfhosted-gotrue-and-git-gateway</a>.</p>
<p>Now your company personnel can use their company SSO credential to login to your SSG site to edit and publish content. No need to create another set of user name and password just for the Web editing work. </p>Migrate this blog from Drupal to a static site generator2020-03-10T19:34:39+00:002020-03-10T19:34:39+00:00Huahaitag:yyhh.org,2020-03-10:/blog/2020/03/migrate-this-blog-from-drupal-to-a-static-site-generator<p>This blog has undergone a few migrations over its 15 years life span. </p>
<p>It started out as a Blogger account in 2005. The purpose was to record some system administration details when I was an assistant professor at university, setting up my laboratry for students. </p>
<p>Then Yunyao joined in after …</p><p>This blog has undergone a few migrations over its 15 years life span. </p>
<p>It started out as a Blogger account in 2005. The purpose was to record some system administration details when I was an assistant professor at university, setting up my laboratry for students. </p>
<p>Then Yunyao joined in after I moved the blog to a self hosted Drupal 5 installation in 2007. It has been with the same hosting company ever since, and I upgraded Drupal all the way to version 8.</p>
<p>But this old hosting account started to show limitations a couple of years ago. The technical specification simply could no longer keep up with the demands of modern PHP applications, which universally require the use of composer as a dependency manager. </p>
<p>Composer always ran out of memory in this very modest environment (512M memory limit). It took some effort to keep Drupal up to date without the modern tools. The final straw is an error that prevented us from creating new posts. It's likely a database error, but I could not investigate properly without tools such as drush. </p>
<p>So it is finally the time to move on. A static site generator (SSG) seems to be a good fit. Since the host only needs to serve static files, the limitation with my host account is not a concern any more. </p>
<h3>Jekyll, Hugo and Pelican</h3>
<p>There are perhaps hundreds of options for SSG. After some reading, I tried Jekyll, Hugo and Pelican. In the end, Pelican is the one that I got it to work, so here we are.</p>
<p>The first problem I needed to solve is to get the content out of Drupal and feed them into the SSG system. </p>
<p>Both Jekyll and Hugo have importers for Drupal 6 and 7 that directly import from the Drupal database. However none of them work with Drupal 8, which has some significant database schema changes. </p>
<p>I had some trouble compiling Ruby mysql library needed for Jekyll importer, so I gave up early on Jekyll. </p>
<p>On to Hugo, I quickly realized that I did not have the time to figure out the intricacy of the Drupal 8 database schema to adapt its Drupal 7 importer to 8. By the way, I also dislike golang the language, for I think it is reactionary (but that's for another post), so I gave it up. </p>
<p>On the other hand, Pelican has an RSS feed importer, which I easily modified the python code to extract the pieces needed for the frontmatter of Pelican. Since each Drupal installation is different, the resulting HTML could be very different. Having an easy to hack importer helps a lot. </p>
<p>The lesson seems to be that a feed importer is better than a database importer for a blog platform, since all the useful information are in the feed. There should not be a need to bother with databases, which tend to evolve a lot from one version to another. Feed format is universal. </p>
<h3>Pelican and NetlifyCMS</h3>
<p>After some minor cleanup of the markdown files generated from the feed importer, I quickly switched the live site to Pelican. I then pushed the whole thing to a github repository and thought I was done. Then Yunyao said she wanted a Web based editor like before, instead of having to write blogs like writing programming code. </p>
<p>That means we need a headless CMS to pair with Pelican. Again, there are so many options, and I just picked the first one that come into my head, NetlifyCMS. It includes simply two files that you drop into the content directory under <code>/admin</code>. It provides a react.js app with a nice editor for writing the posts in WYSIWYG fashion. </p>
<p><img alt="netlify screenshot" src="/images/uploads/screen-shot-2020-03-10-at-1.54.57-pm.png" title="Screenshot of Netlify CMS"></p>
<p>The form widgets for the frontmatter fields are a big help. Otherwise, I will have to copy an old post as the template to write new ones. The configuration of these widgets in a <code>config.yml</code> file is quite nice and easy.</p>
<div class="highlight"><pre><span></span><code><span class="n">backend</span><span class="p">:</span>
<span class="w"> </span><span class="n">name</span><span class="p">:</span><span class="w"> </span><span class="n">git</span><span class="o">-</span><span class="n">gateway</span>
<span class="n">local_backend</span><span class="p">:</span><span class="w"> </span><span class="bp">true</span>
<span class="n">media_folder</span><span class="p">:</span><span class="w"> </span><span class="s2">"content/images/uploads"</span><span class="w"> </span><span class="c1"># Folder where user uploaded files should go</span>
<span class="n">public_folder</span><span class="p">:</span><span class="w"> </span><span class="s2">"/images/uploads"</span>
<span class="n">collections</span><span class="p">:</span><span class="w"> </span><span class="c1"># A list of collections the CMS should be able to edit</span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"blog"</span><span class="w"> </span><span class="c1"># Used in routes, ie.: /admin/collections/:slug/edit</span>
<span class="w"> </span><span class="n">identifier_field</span><span class="p">:</span><span class="w"> </span><span class="s2">"Title"</span>
<span class="w"> </span><span class="n">label</span><span class="p">:</span><span class="w"> </span><span class="s2">"Article"</span><span class="w"> </span><span class="c1"># Used in the UI, ie.: "New Post"</span>
<span class="w"> </span><span class="n">folder</span><span class="p">:</span><span class="w"> </span><span class="s2">"content"</span><span class="w"> </span><span class="c1"># The path to the folder where the documents are stored</span>
<span class="w"> </span><span class="n">extension</span><span class="p">:</span><span class="w"> </span><span class="n">md</span>
<span class="w"> </span><span class="n">format</span><span class="p">:</span><span class="w"> </span><span class="n">frontmatter</span>
<span class="w"> </span><span class="n">create</span><span class="p">:</span><span class="w"> </span><span class="bp">true</span><span class="w"> </span><span class="c1"># Allow users to create new documents in this collection</span>
<span class="w"> </span><span class="n">slug</span><span class="p">:</span><span class="w"> </span><span class="s2">"{{slug}}"</span><span class="w"> </span><span class="c1"># Filename template, e.g., title.md</span>
<span class="w"> </span><span class="n">fields</span><span class="p">:</span><span class="w"> </span><span class="c1"># The fields each document in this collection have</span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="p">{</span><span class="n">label</span><span class="p">:</span><span class="w"> </span><span class="s2">"Title"</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"Title"</span><span class="p">,</span><span class="w"> </span><span class="n">widget</span><span class="p">:</span><span class="w"> </span><span class="s2">"string"</span><span class="p">}</span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="p">{</span><span class="n">label</span><span class="p">:</span><span class="w"> </span><span class="s2">"Date"</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"Date"</span><span class="p">,</span><span class="w"> </span><span class="n">widget</span><span class="p">:</span><span class="w"> </span><span class="s2">"datetime"</span><span class="p">}</span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="p">{</span><span class="n">label</span><span class="p">:</span><span class="w"> </span><span class="s2">"Author"</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"Author"</span><span class="p">,</span><span class="w"> </span><span class="n">widget</span><span class="p">:</span><span class="w"> </span><span class="s2">"select"</span><span class="p">,</span><span class="w"> </span><span class="n">default</span><span class="p">:</span><span class="w"> </span><span class="s2">"Yunyao"</span><span class="p">,</span><span class="w"> </span><span class="n">options</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"Yunyao"</span><span class="p">,</span><span class="w"> </span><span class="s2">"Huahai"</span><span class="p">]}</span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="p">{</span><span class="n">label</span><span class="p">:</span><span class="w"> </span><span class="s2">"Category"</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"Category"</span><span class="p">,</span><span class="w"> </span><span class="n">widget</span><span class="p">:</span><span class="w"> </span><span class="s2">"select"</span><span class="p">,</span><span class="w"> </span><span class="n">default</span><span class="p">:</span><span class="w"> </span><span class="s2">"experience"</span><span class="p">,</span><span class="w"> </span><span class="n">options</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"experience"</span><span class="p">,</span><span class="w"> </span><span class="s2">"notebook"</span><span class="p">,</span><span class="w"> </span><span class="s2">"opinion"</span><span class="p">],</span><span class="w"> </span><span class="n">hint</span><span class="p">:</span><span class="w"> </span><span class="s2">"Select category"</span><span class="p">}</span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="p">{</span><span class="n">label</span><span class="p">:</span><span class="w"> </span><span class="s2">"Tags"</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"Tags"</span><span class="p">,</span><span class="w"> </span><span class="n">widget</span><span class="p">:</span><span class="w"> </span><span class="s2">"string"</span><span class="p">,</span><span class="w"> </span><span class="n">hint</span><span class="p">:</span><span class="w"> </span><span class="s2">"Enter comma-separated words"</span><span class="p">}</span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="p">{</span><span class="n">label</span><span class="p">:</span><span class="w"> </span><span class="s2">"Series"</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"Series"</span><span class="p">,</span><span class="w"> </span><span class="n">widget</span><span class="p">:</span><span class="w"> </span><span class="s2">"string"</span><span class="p">,</span><span class="w"> </span><span class="n">required</span><span class="p">:</span><span class="w"> </span><span class="bp">false</span><span class="p">,</span><span class="w"> </span><span class="n">hint</span><span class="p">:</span><span class="w"> </span><span class="s2">"Give multiple related articles a series name"</span><span class="p">}</span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="p">{</span><span class="n">label</span><span class="p">:</span><span class="w"> </span><span class="s2">"Language"</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"Lang"</span><span class="p">,</span><span class="w"> </span><span class="n">widget</span><span class="p">:</span><span class="w"> </span><span class="s2">"select"</span><span class="p">,</span><span class="w"> </span><span class="n">default</span><span class="p">:</span><span class="w"> </span><span class="s2">"en"</span><span class="p">,</span><span class="w"> </span><span class="n">options</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"en"</span><span class="p">,</span><span class="w"> </span><span class="s2">"zh"</span><span class="p">],</span><span class="w"> </span><span class="n">hint</span><span class="p">:</span><span class="w"> </span><span class="s2">"Select en for English, zh for 中文"</span><span class="p">}</span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="p">{</span><span class="n">label</span><span class="p">:</span><span class="w"> </span><span class="s2">"Status"</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"Status"</span><span class="p">,</span><span class="w"> </span><span class="n">widget</span><span class="p">:</span><span class="w"> </span><span class="s2">"select"</span><span class="p">,</span><span class="w"> </span><span class="n">default</span><span class="p">:</span><span class="w"> </span><span class="s2">"published"</span><span class="p">,</span><span class="w"> </span><span class="n">options</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"draft"</span><span class="p">,</span><span class="w"> </span><span class="s2">"published"</span><span class="p">],</span><span class="w"> </span><span class="n">hint</span><span class="p">:</span><span class="w"> </span><span class="s2">"Draft does not show on site"</span><span class="p">}</span>
<span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="p">{</span><span class="n">label</span><span class="p">:</span><span class="w"> </span><span class="s2">"Body"</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"body"</span><span class="p">,</span><span class="w"> </span><span class="n">widget</span><span class="p">:</span><span class="w"> </span><span class="s2">"markdown"</span><span class="p">}</span>
</code></pre></div>
<p>I am also taking advantage of its beta feature: local development. So I can write a bash script to <code>write-blog</code>:</p>
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/bash</span>
<span class="nb">cd</span><span class="w"> </span>--<span class="w"> </span><span class="s2">"</span><span class="k">$(</span>dirname<span class="w"> </span><span class="s2">"</span><span class="nv">$0</span><span class="s2">"</span><span class="k">)</span><span class="s2">"</span>
<span class="nb">set</span><span class="w"> </span>-m<span class="w"> </span>
git<span class="w"> </span>pull<span class="w"> </span>
npx<span class="w"> </span>netlify-cms-proxy-server<span class="w"> </span><span class="p">&</span>
<span class="nb">echo</span><span class="w"> </span><span class="nv">$!</span><span class="w"> </span>><span class="w"> </span>npx.pid
invoke<span class="w"> </span>livereload<span class="w"> </span><span class="p">&</span>
<span class="nb">echo</span><span class="w"> </span><span class="nv">$!</span><span class="w"> </span>><span class="w"> </span>invoke.pid
<span class="nb">echo</span><span class="w"> </span><span class="s2">"------------------------------------------------------------"</span>
<span class="nb">echo</span><span class="w"> </span><span class="s2">"Go to https://localhost:8000/admin to edit blog"</span>
<span class="nb">echo</span><span class="w"> </span><span class="s2">"Go to https://localhost:8000 to view blog"</span>
<span class="nb">echo</span><span class="w"> </span><span class="s2">"Don't forget to run 'publish-blog' to publish the blog to yyhh.org"</span>
<span class="nb">echo</span><span class="w"> </span><span class="s2">"------------------------------------------------------------"</span>
<span class="nb">fg</span>
</code></pre></div>
<p>and to <code>publish-blog</code></p>
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/bash</span>
<span class="nb">cd</span><span class="w"> </span>--<span class="w"> </span><span class="s2">"</span><span class="k">$(</span>dirname<span class="w"> </span><span class="s2">"</span><span class="nv">$0</span><span class="s2">"</span><span class="k">)</span><span class="s2">"</span>
<span class="nb">kill</span><span class="w"> </span>-9<span class="w"> </span><span class="sb">`</span>cat<span class="w"> </span>npx.pid<span class="sb">`</span>
<span class="nb">kill</span><span class="w"> </span>-9<span class="w"> </span><span class="sb">`</span>cat<span class="w"> </span>invoke.pid<span class="sb">`</span>
git<span class="w"> </span>add<span class="w"> </span>-A
git<span class="w"> </span>commit<span class="w"> </span>-am<span class="w"> </span><span class="s2">"publish blog"</span>
git<span class="w"> </span>push
invoke<span class="w"> </span>publish
<span class="nb">echo</span><span class="w"> </span><span class="s2">"Blog published at https://yyhh.org"</span>
</code></pre></div>
<h3>Good and Bad</h3>
<p>This setup works nicely. Obviously, the site loads much faster, as it just serves static files.</p>
<p>Pelican also gets me some new features that I did not have before. The i18n subsite feature allows us to separate English and Chinese content completely, so people do not have to read things they cannot understand. The translation configuration with gettext and po files works pretty well. </p>
<p>Pelican is pretty old in term of "the latest and the greatest" technology fad, so there is not a lot of activities going on. There are not many themes that are actively updated. It is however sufficient for a personal blog.</p>
<p>The main concern is the slowness of the build. It would take about 50 seconds to build this site on my laptop (albeit a very old one). As more content is added, it would get worse. So I will definitely switch again in the future. </p>
<p>On the other hand, with the help of NetlifyCMS, the authoring is not affected too much by the slow build, because the CMS already gives us immediate feedback on the page we are editing. The build is only kicked off when we hit the publish button. So for now, I am OK with this setup. </p>Books Read in 20202020-01-02T05:29:00-08:002020-01-02T05:29:00-08:00Yunyaotag:yyhh.org,2020-01-02:/blog/2020/01/books-read-in-2020<p>I challenge myself to read or listen to 52 books in 2020. I'm listing them here with a short descriptions about them to keep track of what I've read and key ideas learned.</p>
<p>1. <a href="https://amzn.to/2QARQhS">The Minimalist Home: A Room-by-Room Guide to a Decluttered, Refocused Life</a> As a minimalist at heart …</p><p>I challenge myself to read or listen to 52 books in 2020. I'm listing them here with a short descriptions about them to keep track of what I've read and key ideas learned.</p>
<p>1. <a href="https://amzn.to/2QARQhS">The Minimalist Home: A Room-by-Room Guide to a Decluttered, Refocused Life</a> As a minimalist at heart, this is a great book for me to read (or rather to listen to). It provides inspiring stories as well as practical tips. By minimizing our life (it means different things to different people), we can focus on the things that are actually important to us.</p>
<p>2. <a href="https://amzn.to/39ZVb30">Drive: The Surprising Truth About What Motivates Us</a> This book talks about Motivation 3.0 and discusses the three critical elements of Motivation 3.0: Autonomy, Mastery, and Purpose. As a computer scientist in a world-class research lab, I completely agree with the importance of intrinsic motivation for highly creative work for myself and those I work with. It is really important for organizations and individuals to understand how to provide such an environment at work and at home. The author also provides good reference materials <a href="https://www.danpink.com/resources/">online</a> worthwhile to check out. </p>
<ol>
<li><a href="https://www.amazon.com/Gifts-Imperfection-Think-Supposed-Embrace/dp/159285849X/ref=sr_1_1?crid=31T7OSB97QTJ4&dchild=1&keywords=the+gift+of+imperfection&qid=1603980797&sprefix=the+gift+of+imp%2Caps%2C210&sr=8-1">The Gifts of Imperfection</a> This took talks about how to lead a wholehearted and lives a meaningful life based on who you are, not you are supposed to be. </li>
</ol>Migrate DokuWiki to another server2018-10-20T04:46:00-07:002018-10-20T04:46:00-07:00Huahaitag:yyhh.org,2018-10-20:/blog/2018/10/migrate-dokuwiki-to-another-server<p><a href="https://www.dokuwiki.org/dokuwiki">DokuWiki</a> is one of the most easy-to-use open source Wiki software. It is a very good internal documentation tool for small or medium sized organizations.</p>
<p>Comparing with using Google Docs for the same purpose, one advantage of using a Wiki is that it is more searchable and navigable. In addition …</p><p><a href="https://www.dokuwiki.org/dokuwiki">DokuWiki</a> is one of the most easy-to-use open source Wiki software. It is a very good internal documentation tool for small or medium sized organizations.</p>
<p>Comparing with using Google Docs for the same purpose, one advantage of using a Wiki is that it is more searchable and navigable. In addition, Wiki software is often very extensible. In the case of DokuWiki, there are hundreds of plugins that can help with many aspects of doing documentation work. In my company, we not only use DokuWiki to keep technical documentations up to date , but also used it for administrative chores, such as filling out forms, keeping track of vacations, and so on.</p>
<p>On the technical side, DokuWiki is a PHP application that does not reply on a database backend. All the materials are in plain text files. So one of the claimed advantages is that it is easy to migrate a DokuWiki installation from one host to another, because you could simply zip up the file directory, move to another host and unzip. As it happened, as part of my company's migration from AWS to Google Cloud, I had a chance to test this claim for real. </p>
<p>It turned out it was not as straightforward as <a href="https://www.dokuwiki.org/faq:servermove">DokuWiki claims</a>. Although in the end, it was really a very simple migration, after I figured out the proper steps.</p>
<p>At first, I did what the document suggested: simply moved the files over to another host, but the site failed to load. Pouring over the error messages in the logs, I realized that some of the installed plugins could not compile, but somehow they did not break the old site. After removing these broken plugins on the old site, I decided not to simply zipping up the file directory again. Instead, I did the following:</p>
<p>1. Use a plugin called "Backup Tool" to zip up only essential configs and settings.</p>
<p>2. Download the latest stable version of DokuWiki software bundle, unzip on the new host.</p>
<p>3. Unzip the backup bundle created in step 1 <strong>over</strong> the fresh directory of DokuWiki created in step 2</p>
<p>4. Load the site, success!</p>
<p>5. However, the site reports some missing directories, such as media_attic and media_meta. Simply copying them from the old host to the new host fixes the problems.</p>
<p>6. Mission accomplished!</p>
<p>I think the main problem with the "copy files over" approach is that many caches on the old site tend to mess things up. A fresh new start is a surer way to migrate.</p>Backup Discourse with External PostgreSQL Server2018-01-21T05:58:00-08:002018-01-21T05:58:00-08:00Huahaitag:yyhh.org,2018-01-21:/blog/2018/01/backup-discourse-with-external-postgresql-server<p><a href="https://www.discourse.org/">Discourse</a> is a modern forum software that is quite popular in the technology circle. One can install a Discourse server easily with the recommended method of using docker. All the services needed by the Discourse server, e.g. Postgresql and Redis, will be running inside a docker container, which is …</p><p><a href="https://www.discourse.org/">Discourse</a> is a modern forum software that is quite popular in the technology circle. One can install a Discourse server easily with the recommended method of using docker. All the services needed by the Discourse server, e.g. Postgresql and Redis, will be running inside a docker container, which is fine for a small installation. However, if one has already an external Postgresql server running, e.g. on AWS RDS, and would like to use that instead, Discourse may have trouble doing backups, and you may receive an email from Discourse:</p>
<blockquote>
<p>[2018-01-21 03:39:44] pg_dump: server version: 9.6.5; pg_dump version: 9.5.10</p>
<p>[2018-01-21 03:39:44] pg_dump: aborting because of server version mismatch</p>
<p>[2018-01-21 03:39:44] EXCEPTION: pg_dump failed</p>
</blockquote>
<p>The main problem is that the Postgresql client in Discourse docker image is old, currently at version 9.5, whereas most of the world has moved on to version 9.6, and some even to version 10. </p>
<p>The Discourse people are not very helpful on their forum regarding this issue. So here's a solution:</p>
<p>We need to update the Postgresql version in the Discourse docker container to whatever version your external Postgresql server is. Fortunately, it is fairly simple. First, get into the running container:</p>
<div class="highlight"><pre><span></span><code>sudo<span class="w"> </span>./launcher<span class="w"> </span>enter<span class="w"> </span>app
</code></pre></div>
<p>Then update postgresql to the version you want, e.g.</p>
<div class="highlight"><pre><span></span><code>apt-get<span class="w"> </span>install<span class="w"> </span>postgresql-9.6
</code></pre></div>
<p>Now link pg_dump to the right version:</p>
<div class="highlight"><pre><span></span><code>ln<span class="w"> </span>-s<span class="w"> </span>/usr/lib/postgresql/9.6/bin/pg_dump<span class="w"> </span>/usr/bin/pg_dump
</code></pre></div>
<p>After this, you should be able to perform backup successfully in the UI. </p>LDAP Authentication for On-premise Sentry Server using freeIPA2017-12-11T23:27:00-08:002017-12-11T23:27:00-08:00Huahaitag:yyhh.org,2017-12-11:/blog/2017/12/ldap-authentication-for-on-premise-sentry-server-using-freeipa<p>Sentry is a fairly popular service for tracking exceptions and errors in production softwares. They also provides a <a href="https://github.com/getsentry/onpremise">docker recipe</a> for people who want to self host their own sentry server. This post shows how to enable LDAP authentication for such a self hosted sentry server, using freeIPA as the …</p><p>Sentry is a fairly popular service for tracking exceptions and errors in production softwares. They also provides a <a href="https://github.com/getsentry/onpremise">docker recipe</a> for people who want to self host their own sentry server. This post shows how to enable LDAP authentication for such a self hosted sentry server, using freeIPA as the LDAP provider.</p>
<p>In addition to follow their instructions to install sentry, the following changes need to be made to add the capability to authenticate to sentry using freeIPA as the account source:</p>
<p>1. Change the Dockerfile to install some dependencies:</p>
<div class="highlight"><pre><span></span><code>FROM sentry:8.22-onbuild
RUN apt-get update && apt-get install -y libsasl2-dev python-dev libldap2-dev libssl-dev
RUN pip install sentry-ldap-auth
</code></pre></div>
<p>2. Add the following code at the end of <span style="color:#e74c3c;">sentry.conf.py</span></p>
<div class="highlight"><pre><span></span><code><span class="c1">#############</span>
<span class="c1"># LDAP auth #</span>
<span class="c1">#############</span>
<span class="kn">import</span> <span class="nn">ldap</span>
<span class="kn">from</span> <span class="nn">django_auth_ldap.config</span> <span class="kn">import</span> <span class="n">LDAPSearch</span><span class="p">,</span> <span class="n">GroupOfUniqueNamesType</span>
<span class="n">AUTH_LDAP_SERVER_URI</span> <span class="o">=</span> <span class="s1">'ldap://ipa.example.com'</span>
<span class="n">AUTH_LDAP_BIND_DN</span> <span class="o">=</span> <span class="s1">'uid=jenkins,cn=sysaccounts,cn=etc,dc=example,dc=com'</span>
<span class="n">AUTH_LDAP_BIND_PASSWORD</span> <span class="o">=</span> <span class="s1">'secret'</span>
<span class="n">AUTH_LDAP_USER_SEARCH</span> <span class="o">=</span> <span class="n">LDAPSearch</span><span class="p">(</span>
<span class="s1">'cn=users,cn=accounts,dc=example,dc=com'</span><span class="p">,</span>
<span class="n">ldap</span><span class="o">.</span><span class="n">SCOPE_SUBTREE</span><span class="p">,</span>
<span class="s1">'(uid=</span><span class="si">%(user)s</span><span class="s1">)'</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">AUTH_LDAP_GROUP_SEARCH</span> <span class="o">=</span> <span class="n">LDAPSearch</span><span class="p">(</span>
<span class="s1">''</span><span class="p">,</span>
<span class="n">ldap</span><span class="o">.</span><span class="n">SCOPE_SUBTREE</span><span class="p">,</span>
<span class="s1">'(objectClass=groupOfUniqueNames)'</span>
<span class="p">)</span>
<span class="n">AUTH_LDAP_GROUP_TYPE</span> <span class="o">=</span> <span class="n">GroupOfUniqueNamesType</span><span class="p">()</span>
<span class="n">AUTH_LDAP_REQUIRE_GROUP</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">AUTH_LDAP_DENY_GROUP</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">AUTH_LDAP_USER_ATTR_MAP</span> <span class="o">=</span> <span class="p">{</span>
<span class="s1">'name'</span><span class="p">:</span> <span class="s1">'cn'</span><span class="p">,</span>
<span class="s1">'email'</span><span class="p">:</span> <span class="s1">'mail'</span>
<span class="p">}</span>
<span class="n">AUTH_LDAP_FIND_GROUP_PERMS</span> <span class="o">=</span> <span class="kc">False</span>
<span class="n">AUTH_LDAP_CACHE_GROUPS</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">AUTH_LDAP_GROUP_CACHE_TIMEOUT</span> <span class="o">=</span> <span class="mi">3600</span>
<span class="n">AUTH_LDAP_DEFAULT_SENTRY_ORGANIZATION</span> <span class="o">=</span> <span class="sa">u</span><span class="s1">'Sentry'</span>
<span class="n">AUTH_LDAP_SENTRY_ORGANIZATION_ROLE_TYPE</span> <span class="o">=</span> <span class="s1">'member'</span>
<span class="n">AUTH_LDAP_SENTRY_ORGANIZATION_GLOBAL_ACCESS</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">AUTH_LDAP_SENTRY_SUBSCRIBE_BY_DEFAULT</span> <span class="o">=</span> <span class="kc">False</span>
<span class="n">SENTRY_MANAGED_USER_FIELDS</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'email'</span><span class="p">,</span> <span class="s1">'first_name'</span><span class="p">,</span> <span class="s1">'last_name'</span><span class="p">,</span> <span class="s1">'password'</span><span class="p">,</span> <span class="p">)</span>
<span class="n">AUTHENTICATION_BACKENDS</span> <span class="o">=</span> <span class="n">AUTHENTICATION_BACKENDS</span> <span class="o">+</span> <span class="p">(</span>
<span class="s1">'sentry_ldap_auth.backend.SentryLdapBackend'</span><span class="p">,</span>
<span class="p">)</span>
<span class="c1"># optional, for debugging</span>
<span class="kn">import</span> <span class="nn">logging</span>
<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="s1">'django_auth_ldap'</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">addHandler</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">StreamHandler</span><span class="p">())</span>
<span class="n">logger</span><span class="o">.</span><span class="n">addHandler</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">FileHandler</span><span class="p">(</span><span class="s1">'/tmp/ldap2.log'</span><span class="p">))</span>
<span class="n">logger</span><span class="o">.</span><span class="n">setLevel</span><span class="p">(</span><span class="s1">'DEBUG'</span><span class="p">)</span>
<span class="n">LOGGING</span><span class="p">[</span><span class="s1">'overridable'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'sentry'</span><span class="p">,</span> <span class="s1">'django_auth_ldap'</span><span class="p">]</span>
<span class="n">LOGGING</span><span class="p">[</span><span class="s1">'loggers'</span><span class="p">][</span><span class="s1">'django_auth_ldap'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
<span class="s1">'handlers'</span><span class="p">:</span> <span class="p">[</span><span class="s1">'console'</span><span class="p">],</span>
<span class="s1">'level'</span><span class="p">:</span> <span class="s1">'DEBUG'</span>
<span class="p">}</span>
</code></pre></div>
<p>Some notes:</p>
<ul>
<li>We are re-using a freeIPA system account that was created for read-only access (<a href="https://yyhh.org/blog/2017/12/configure-jenkins-use-freeipa-ldap-security-realm">originally for Jenkins</a>).</li>
<li>freeIPA use a flat structure for users: '<span style="color:#e74c3c;">cn=users,cn=accounts,dc=example,dc=com</span>'</li>
<li><span style="color:#e74c3c;">AUTH_LDAP_DEFAULT_SENTRY_ORGANIZATION</span> must be an exact (case sensitive) match with the organization full name, otherwise the logged in user will not have access to anything. The default organization name is "Sentry", but it can be changed in the UI.</li>
<li>Those logging statements are useful for testing and debugging </li>
</ul>
<p>Updates [10/19/2020]:</p>
<p>This works up to sentry 9, for new versions of sentry, see <a href="https://yyhh.org/blog/2020/10/how-to-setup-saml2-authentication-on-sentry-with-keycloak/">this</a></p>Configure Jenkins to use FreeIPA LDAP Security Realm2017-12-08T00:02:00-08:002017-12-08T00:02:00-08:00Huahaitag:yyhh.org,2017-12-08:/blog/2017/12/configure-jenkins-to-use-freeipa-ldap-security-realm<p>The point of setting up freeIPA for an intranet is to enable single-sign-on (SSO) for all the internal services that requires authentication and authorization. <a href="https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol">LDAP</a>, originated from my <em>alma mater</em> University of Michigan, is one of the most widely accepted solutions to the problem. freeIPA can serve as a LDAP …</p><p>The point of setting up freeIPA for an intranet is to enable single-sign-on (SSO) for all the internal services that requires authentication and authorization. <a href="https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol">LDAP</a>, originated from my <em>alma mater</em> University of Michigan, is one of the most widely accepted solutions to the problem. freeIPA can serve as a LDAP authentication and authorization provider to integrate with most of today's reputable server software. Jenkins is no exception.</p>
<p>There are plenty of guide of integrating OpenLDAP or other LDAP providers with Jenkins. However, there are not many guides on the particulars of integrating freeIPA with Jenkins. Here's how I got it to work.</p>
<h2>Prepare freeIPA server</h2>
<p>First, we need to create an LDAP account for Jenkins to access the LDAP data. Create a file, e.g <span style="font-family:Courier New,Courier,monospace;">jenkins.ldif</span></p>
<div class="highlight"><pre><span></span><code><span class="n">dn</span><span class="o">:</span><span class="w"> </span><span class="n">uid</span><span class="o">=</span><span class="n">jenkins</span><span class="o">,</span><span class="n">cn</span><span class="o">=</span><span class="n">sysaccounts</span><span class="o">,</span><span class="n">cn</span><span class="o">=</span><span class="n">etc</span><span class="o">,</span><span class="n">dc</span><span class="o">=</span><span class="n">example</span><span class="o">,</span><span class="n">dc</span><span class="o">=</span><span class="n">com</span>
<span class="n">changetype</span><span class="o">:</span><span class="w"> </span><span class="n">add</span>
<span class="n">objectclass</span><span class="o">:</span><span class="w"> </span><span class="n">account</span>
<span class="n">objectclass</span><span class="o">:</span><span class="w"> </span><span class="n">simplesecurityobject</span>
<span class="n">uid</span><span class="o">:</span><span class="w"> </span><span class="n">jenkins</span>
<span class="n">userPassword</span><span class="o">:</span><span class="w"> </span><span class="n">secret</span>
<span class="n">passwordExpirationTime</span><span class="o">:</span><span class="w"> </span><span class="mi">20380119031407</span><span class="n">Z</span>
<span class="n">nsIdleTimeout</span><span class="o">:</span><span class="w"> </span><span class="mi">0</span>
</code></pre></div>
<p>Now use it:</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>ldapmodify<span class="w"> </span>-h<span class="w"> </span>ipa.example.com<span class="w"> </span>-p<span class="w"> </span><span class="m">389</span><span class="w"> </span>-x<span class="w"> </span>-D<span class="w"> </span><span class="s2">"cn=Directory Manager"</span><span class="w"> </span>-W<span class="w"> </span>-f<span class="w"> </span>jenkins.ldif
</code></pre></div>
<h2>Configure Jenkins</h2>
<p>Go to <em>Manage Jenkins</em> -> <em>Configure Global Security</em> -> <em>Security Realm</em>, and choose <em>LDAP</em>, and set the following:</p>
<div class="highlight"><pre><span></span><code><span class="n">Server</span><span class="o">:</span><span class="w"> </span><span class="n">ldap</span><span class="o">://</span><span class="n">ipa</span><span class="o">.</span><span class="na">example</span><span class="o">.</span><span class="na">com</span>
<span class="n">root</span><span class="w"> </span><span class="n">DN</span><span class="o">:</span><span class="w"> </span><span class="n">dc</span><span class="o">=</span><span class="n">example</span><span class="o">,</span><span class="n">dc</span><span class="o">=</span><span class="n">com</span>
<span class="n">User</span><span class="w"> </span><span class="n">search</span><span class="w"> </span><span class="n">base</span><span class="o">:</span><span class="w"> </span><span class="n">cn</span><span class="o">=</span><span class="n">users</span><span class="o">,</span><span class="n">cn</span><span class="o">=</span><span class="n">accounts</span>
<span class="n">User</span><span class="w"> </span><span class="n">search</span><span class="w"> </span><span class="n">filter</span><span class="o">:</span><span class="w"> </span><span class="n">uid</span><span class="o">={</span><span class="mi">0</span><span class="o">}</span>
<span class="n">Group</span><span class="w"> </span><span class="n">search</span><span class="w"> </span><span class="n">base</span><span class="o">:</span>
<span class="n">Group</span><span class="w"> </span><span class="n">search</span><span class="w"> </span><span class="n">filter</span><span class="o">:</span>
<span class="n">Group</span><span class="w"> </span><span class="n">membership</span><span class="o">:</span><span class="w"> </span><span class="n">Search</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">LDAP</span><span class="w"> </span><span class="n">groups</span><span class="w"> </span><span class="n">containing</span><span class="w"> </span><span class="n">user</span>
<span class="w"> </span><span class="n">Group</span><span class="w"> </span><span class="n">membership</span><span class="w"> </span><span class="n">filter</span><span class="o">:</span><span class="w"> </span><span class="o">(|</span><span class="w"> </span><span class="o">(</span><span class="n">member</span><span class="o">={</span><span class="mi">0</span><span class="o">})</span><span class="w"> </span><span class="o">(</span><span class="n">uniqueMember</span><span class="o">={</span><span class="mi">0</span><span class="o">})</span><span class="w"> </span><span class="o">(</span><span class="n">memberUid</span><span class="o">={</span><span class="mi">1</span><span class="o">}))</span>
<span class="n">Manager</span><span class="w"> </span><span class="n">DN</span><span class="o">:</span><span class="w"> </span><span class="n">uid</span><span class="o">=</span><span class="n">jenkins</span><span class="o">,</span><span class="n">cn</span><span class="o">=</span><span class="n">sysaccounts</span><span class="o">,</span><span class="n">cn</span><span class="o">=</span><span class="n">etc</span><span class="o">,</span><span class="n">dc</span><span class="o">=</span><span class="n">example</span><span class="o">,</span><span class="n">dc</span><span class="o">=</span><span class="n">com</span>
<span class="n">Manager</span><span class="w"> </span><span class="n">Password</span><span class="o">:</span><span class="w"> </span><span class="n">secret</span>
</code></pre></div>
<p>Then click on <em>Test LDAP settings </em>and try login with an account, if results are all green, authentication is configured. Otherwise, try tweak the settings. </p>
<p>Now on to authorization, pick any one of the strategies. For testing, pick <em>Anyone can do anything</em>, so we will not be locked out. Once tested, I chose <em>Matrix-based security</em>, which give fine controls. </p>
<p>Once saved, one has to login to Jenkins with the SSO account of freeIPA, but that's the point, isn't it. </p>
<h2>Caution</h2>
<p>Once freeIPA is setup, it takes over the SSH sever and <span style="font-family:Courier New,Courier,monospace;">known_hosts </span>file will not be updated in the account's <span style="font-family:Courier New,Courier,monospace;">.ssh</span> directory. Instead, <span style="font-family:Courier New,Courier,monospace;">/var/lib/sss/pubconf/known_hosts</span> is updated when ssh into another machine. This creates a bit of problem for setting up SSH based Jenkins slave when using <span style="font-family:Arial,Helvetica,sans-serif;"><em>Known host file Verification Strategy</em></span>. A simple solution is to just copy the relevant host entry over. </p>FreeIPA in AWS EC22017-12-07T23:34:00-08:002017-12-07T23:34:00-08:00Huahaitag:yyhh.org,2017-12-07:/blog/2017/12/freeipa-in-aws-ec2<p>FreeIPA is the open source version of RedHat's identity management solution, which nicely integrates several open sources services that are important for managing an intranet: 389 LDAP Directory Server, MIT Kerboros, NTP, DNS, SSSD and others. </p>
<p>Most of my servers are virtual machines in AWS EC2. To manage such a …</p><p>FreeIPA is the open source version of RedHat's identity management solution, which nicely integrates several open sources services that are important for managing an intranet: 389 LDAP Directory Server, MIT Kerboros, NTP, DNS, SSSD and others. </p>
<p>Most of my servers are virtual machines in AWS EC2. To manage such a cloud based intranet using freeIPA, some additional configuration is necessary. Here's how I got it to work.</p>
<h2>DNS</h2>
<p>The main problem of enabling freeIPA in EC2, is that every machine in EC2 has at least two kinds of of IP addresses. One is internal to the VPC only, e.g. the default VPC use IP addresses starting from <span style="font-family:Courier New,Courier,monospace;">172.31.*.*</span>; Another kinds of IP addresses are public IP addresses, which are different from the internal ones. A default install of freeIPA server and clients in EC2 will not work due to this dual IP addresses.</p>
<p>To install freeIPA, we first need to configure individual <span style="color:null;">hosts' </span><span style="color:#e74c3c;">/etc/hosts</span>, <span style="color:#e74c3c;">/etc/hostname</span> files, so they point to the full qualified DNS name of the hosts. After that, we are ready to add these names to DNS servers.</p>
<h3>Route53</h3>
<p>We will bypass freeIPA's own DNS services, and use AWS Route53 DNS service. We need to setup three hosted zones for our network. One zone for the external IPs, one for internal IPs, and finally one for reverse lookup.</p>
<p>For internal and external hosted zones, in addition to the <span style="color:#e74c3c;">A</span> records that map DNS names to IPs, we also need to add <span style="color:#e74c3c;">TXT</span> and <span style="color:#e74c3c;">SRV</span> records that allow freeIPA to discover services. Eg. for the external zone: </p>
<table><tbody><tr class="odd"><td style="text-align: right;"><p>_kerberos.example.com.</p></td><td><p>TXT</p></td><td><p>"EXAMPLE.COM"</p></td><td><p>-</p></td><td><p>-</p></td><td><p>300</p></td></tr></tbody></table>
<table><tbody><tr class="odd"><td style="text-align: right;"><p>_kerberos-master._tcp.example.com.</p></td><td><p>SRV</p></td><td><p>0 100 88 ipa.example.com.</p></td><td><p>-</p></td><td><p>-</p></td><td><p>300</p></td></tr></tbody></table>
<table><tbody><tr class="odd"><td style="text-align: right;"><p>_kerberos._tcp.example.com.</p></td><td><p>SRV</p></td><td><p>0 100 88 ipa.example.com.</p></td><td><p>-</p></td><td><p>-</p></td><td><p>300</p></td></tr></tbody></table>
<table><tbody><tr class="odd"><td style="text-align: right;"><p>_kpasswd._tcp.example.com.</p></td><td><p>SRV</p></td><td><p>0 100 464 ipa.example.com.</p></td><td><p>-</p></td><td><p>-</p></td><td><p>300</p></td></tr></tbody></table>
<table><tbody><tr class="odd"><td style="text-align: right;"><p>_ldap._tcp.example.com.</p></td><td><p>SRV</p></td><td><p>0 100 389 ipa.example.com.</p></td><td><p>-</p></td><td><p>-</p></td><td><p>300</p></td></tr></tbody></table>
<table><tbody><tr class="odd"><td style="text-align: right;"><p>_kerberos-master._udp.example.com.</p></td><td><p>SRV</p></td><td><p>0 100 88 ipa.example.com.</p></td><td><p>-</p></td><td><p>-</p></td><td><p>300</p></td></tr></tbody></table>
<table><tbody><tr class="odd"><td style="text-align: right;"><p>_kerberos._udp.example.com.</p></td><td><p>SRV</p></td><td><p>0 100 88 ipa.example.com.</p></td><td><p>-</p></td><td><p>-</p></td><td><p>300</p></td></tr></tbody></table>
<table><tbody><tr class="odd"><td style="text-align: right;"><p>_kpasswd._udp.example.com.</p></td><td><p>SRV</p></td><td><p>0 100 464 ipa.example.com.</p></td><td><p>-</p></td><td><p>-</p></td><td><p>300</p></td></tr></tbody></table>
<table><tbody><tr class="odd"><td style="text-align: right;"><p>_ntp._udp.example.com.</p></td><td><p>SRV</p></td><td><p>0 100 123 ipa.example.com.</p></td><td><p>-</p></td><td><p>-</p></td><td><p>300</p></td></tr></tbody></table>
<table><tbody><tr class="odd"><td style="text-align: right;"><p>ipa.example.com.</p></td><td><p>A</p></td><td><p>99.99.99.99</p></td><td><p>-</p></td><td><p>-</p></td><td><p>300</p></td></tr></tbody></table>
<p>Here we will install the freeIPA server on a machine with external IP <span style="font-family:Courier New,Courier,monospace;">99.99.99.99</span>, and the DNS name for the server is<span style="font-family:Courier New,Courier,monospace;"> ipa.example.com</span>.</p>
<p>Similar records need to be added the internal zone as well, just use the internal IP addresses.</p>
<p>Finally, the private reverse look up zone, named <span style="color:#e74c3c;"><span style="font-family:Courier New,Courier,monospace;">31.172.in-addr.arpa.</span>,</span> has records like these:</p>
<table><tbody><tr class="odd"><td style="text-align: right;"><p>88.123.31.172.in-addr.arpa.</p></td><td><p><span style="color:#e74c3c;">PTR</span></p></td><td><p>ipa.example.com</p></td><td><p>-</p></td><td><p>-</p></td><td><p>300</p></td></tr></tbody></table>
<p>Where <span style="font-family:Courier New,Courier,monospace;">172.31.123.88</span> is the internal IP address of the freeIPA server. </p>
<p>We need to do these for all servers managed by freeIPA. It's a bit of work if there are not many machines. For large deployment, one may want to investigate automatized solution with AWS APIs.</p>
<h3>Test DNS</h3>
<p>On a machine outside the VPC</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>dig<span class="w"> </span>+short<span class="w"> </span>ipa.example.com
</code></pre></div>
<p>Should return the external IP of the machine.</p>
<p>Doing the same on an internal machine should return the internal IP of the machine.</p>
<p>Finally, test reverse lookup on an internal machine</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>dig<span class="w"> </span>+short<span class="w"> </span>-x<span class="w"> </span><span class="m">172</span>.31.123.88
</code></pre></div>
<p>Should return the DNS name of the machine.</p>
<h2>FreeIPA Server Install</h2>
<p>I normally use Debian servers, but there's currently no stable freeIPA server available in Debian Stretch, so I installed a Fedora, which supports freeIPA natively.</p>
<p>Use a small EC2 instance that will be dedicated to running a freeIPA server.</p>
<div class="highlight"><pre><span></span><code><span class="c1"># yum install freeipa-server</span>
<span class="c1"># ipa-server-install</span>
</code></pre></div>
<p>And say "no" to DNS. The installation should be successful if all instructions are followed.</p>
<h2>FreeIPA Client</h2>
<p>Since most of my machines are Debian, I had to install Debian freeIPA clients on them. Ubuntu Xenial universe repo has a version of freeIPA client that is compatible with Debian Strech. So I installed them.</p>
<div class="highlight"><pre><span></span><code><span class="c1"># apt install freeipa-client</span>
<span class="c1"># /etc/init.d/ntp stop</span>
<span class="c1"># ipa-client-install</span>
</code></pre></div>
<p>Notice that we must stop NTP daemon first if it's already running. Otherwise, the client installation will fail, because the freeIPA client expects to run its own NTP service that synchronizes with the freeIPA server. </p>
<p>After a successful installation, the client is still not ready to use, because the Ubuntu installer configured <span style="color:#e74c3c;">/etc/sssd/sssd.conf</span> is currently broken: nss, pam, and ssh needs to be added. Otherwise, the client cannot be connected to. A working example of <span style="color:#e74c3c;">/etc/sssd/sssd.conf</span> looks like this:</p>
<div class="highlight"><pre><span></span><code><span class="k">[domain/example.com]</span>
<span class="na">cache_credentials</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">True</span>
<span class="na">krb5_store_password_if_offline</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">True</span>
<span class="na">ipa_domain</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">example.com</span>
<span class="na">id_provider</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">ipa</span>
<span class="na">auth_provider</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">ipa</span>
<span class="na">access_provider</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">ipa</span>
<span class="na">ipa_hostname</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">aclient.example.com</span>
<span class="na">chpass_provider</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">ipa</span>
<span class="na">ipa_server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">_srv_, ipa.example.com</span>
<span class="na">ldap_tls_cacert</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/etc/ipa/ca.crt</span>
<span class="k">[sssd]</span>
<span class="na">services</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">nss, sudo, pam, ssh</span>
<span class="na">domains</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">example.com</span>
<span class="k">[nss]</span>
<span class="na">homedir_substring</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/home</span>
<span class="k">[pam]</span>
<span class="k">[sudo]</span>
<span class="k">[autofs]</span>
<span class="k">[ssh]</span>
<span class="k">[pac]</span>
<span class="k">[ifp]</span>
<span class="k">[secrets]</span>
</code></pre></div>
<p>Restart sssd or simply reboot. Everything should work as expected.</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>kinit<span class="w"> </span>admin
$<span class="w"> </span>ssh<span class="w"> </span>admin@ipa.example.com
</code></pre></div>
<p>Should login to the freeIPA server as admin user. </p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>ssh<span class="w"> </span>admin@aclient.example.com
</code></pre></div>
<p>Should login to the client machine as admin user.</p>
<p>Congratulation, now you have single sign on (SSO) for your intranet in AWS EC2!</p>
<p>[update: 10/23/208]</p>
<h2>Cross Cloud Intranet</h2>
<p>With minor modification, this same setup can be used to manage you Intranet with hosts spanning multiple cloud platforms!</p>
<p>For example, you can have some hosts reside on Google Cloud Platform (GCP) while the IPA server lives in AWS. To do that, the <span style="background-color:#e74c3c;">public</span> IP addresses of these ex-AWS hosts need to be entered in <span style="color:#e74c3c;">both</span> external and internal DNS realms in Route53. GCP nicely supports this setup because you can reserve as many static public IP addresses as you want in GCP.</p>
<p>For example, you can have a host on GCP with a public address 35.22.31.33, for which you assign a domain name "gcp1.example.com" in Route53. Then you run <span style="color:#e74c3c;">hostname gcp1.example.com</span> on this GCP host. After that, you should be able to install freeIPA client on it to enroll into your Intranet.</p>
<p>After install freeIPA client, another important modification, is to add the following directive in <span style="color:#e74c3c;">/etc/krb5.conf</span><span style="color:null;"> of all your ex-AWS hosts:</span></p>
<div class="highlight"><pre><span></span><code><span class="k">[libdefaults]</span>
<span class="w"> </span><span class="na">ignore_acceptor_hostname</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">true</span>
</code></pre></div>
<p>This directive tells Kerberos service of an accepting host to not verify its own hostname, because an ex-AWS host's attempt to discover its own hostname will yield a name that is different from the one you assigned in Route53. With this change, you should be able to access your ex-AWS hosts as if they are part of your Intranet. Your SSO should work on these ex-AWS hosts as well.</p>Ecobee3 installation with K wire2017-12-01T06:13:00-08:002017-12-01T06:13:00-08:00Huahaitag:yyhh.org,2017-12-01:/blog/2017/12/ecobee3-installation-with-k-wire<p>As part of our house modernization process, we bought an Ecobee3 Wifi enabled smart thermostat. We hope that this small device will help reduce the size of our utility bill. The product looks very simple, but it comes with three additional sensors that can be placed in different rooms, and …</p><p>As part of our house modernization process, we bought an Ecobee3 Wifi enabled smart thermostat. We hope that this small device will help reduce the size of our utility bill. The product looks very simple, but it comes with three additional sensors that can be placed in different rooms, and these can even detect room occupancy!</p>
<p><img alt="final" src="https://farm5.staticflickr.com/4517/38758945381_22df31e473.jpg"></p>
<p>One problem I encountered was how to install this device when the old device used a <strong>K</strong> wire, which was not documented any where on Ecobee's site. See the circled <strong>K</strong> below:</p>
<p><img alt="step 1" src="https://farm5.staticflickr.com/4559/38758945231_bccf06a000.jpg"></p>
<p>My Internet search eventually brought me to a <a href="https://www.youtube.com/watch?v=NTDRQNpGi1c">Youtube video</a>, where someone had a similar problem with installing a Nest thermostat. Basically, the solution was to connect the <strong>K</strong> wire to the <strong>Y1</strong> wire.</p>
<p>I said to myself, maybe this works for Ecobee3 too. So I did just that:</p>
<p><img alt="step 2" src="https://farm5.staticflickr.com/4570/38758945181_344c5b40c7.jpg"></p>
<p>When powered up, Ecobee detected that <strong>Y1</strong> wire is connected, and indicated that G must also be connected.</p>
<p><img alt="step 3" src="https://farm5.staticflickr.com/4523/38758945301_242d5d8cc9.jpg"></p>
<p>This could easily be done on the menu.</p>
<p><img alt="step 4" src="https://farm5.staticflickr.com/4583/38758945271_292f9b0a7b.jpg"></p>
<p>Now everything works. What a nifty little device!</p>Upgrade Drupal from 6 to 82017-11-21T23:46:00-08:002017-11-21T23:46:00-08:00Huahaitag:yyhh.org,2017-11-21:/blog/2017/11/upgrade-drupal-from-6-to-8<p>Since <a href="https://www.drupal.org/forum/general/news-and-announcements/2015-11-09/drupal-6-end-of-life-announcement">Drupal 6 is no longer supported</a>, I upgraded this site to the lasted version of Drupal 8.4.2 by following <a href="https://www.drupal.org/docs/8/upgrade/upgrading-from-drupal-6-or-7-to-drupal-8">the guide</a>. As you can see, the upgrade mostly worked. However, there are a few points of caution as well as some unresolved problems.</p>
<p>As <a href="https://yyhh.org/blog/2011/07/upgrade-drupal-almost-zero-down-time">before</a>, I setup …</p><p>Since <a href="https://www.drupal.org/forum/general/news-and-announcements/2015-11-09/drupal-6-end-of-life-announcement">Drupal 6 is no longer supported</a>, I upgraded this site to the lasted version of Drupal 8.4.2 by following <a href="https://www.drupal.org/docs/8/upgrade/upgrading-from-drupal-6-or-7-to-drupal-8">the guide</a>. As you can see, the upgrade mostly worked. However, there are a few points of caution as well as some unresolved problems.</p>
<p>As <a href="https://yyhh.org/blog/2011/07/upgrade-drupal-almost-zero-down-time">before</a>, I setup a test site in a sub-directory (h/drupal) of the main site (/h) and assigned a domain name to the test site. The test site use a new empty database. The idea is to keep the old site running, and migrate the data from the old to the new. </p>
<p>This blog is on a hosted service that allows direct SSH access, so it made things a lot easier.<strong> </strong><a href="https://www.drush.org/en/master/">Drush</a> helped a lot. To get drush to work, I had to modify the drush bootstrap script to use php7.1-cli, because the hosting server had many versions of PHP installed, and the default one is not even a command line interpreter. I then created a bash alias in ~/.bash_profile for the drush script, so that I could run drush anywhere. </p>
<div class="highlight"><pre><span></span><code><span class="nb">alias</span><span class="w"> </span><span class="nv">drush</span><span class="o">=</span><span class="s1">'/h/drupal/vendor/bin/drush --root=/h/drupal'</span>
</code></pre></div>
<p>With drush, migration was easy, with only a few commands.</p>
<p>First initialized the database.</p>
<div class="highlight"><pre><span></span><code>drush<span class="w"> </span>si<span class="w"> </span>standard<span class="w"> </span>--db-url<span class="o">=</span>mysql://username:pasword@new.mysql.server/newdb<span class="w"> </span>--root<span class="o">=</span>/h/drupal<span class="w"> </span>--db-prefix<span class="o">=</span>drupal_<span class="w"> </span>--locale<span class="o">=</span>en
</code></pre></div>
<p>Now we found out all the modules enabled on the old site, and enabled them on the new site. </p>
<div class="highlight"><pre><span></span><code>drush<span class="w"> </span>en<span class="w"> </span>migrate_upgrade<span class="w"> </span>migrate_tools<span class="w"> </span>migrate_plus<span class="w"> </span>rules<span class="w"> </span>config_update<span class="w"> </span>libraries<span class="w"> </span>tracker<span class="w"> </span>views_bulk_operations<span class="w"> </span>taxonomy_menu<span class="w"> </span>tagadelic<span class="w"> </span>mollom<span class="w"> </span>better_formats<span class="w"> </span>statistics<span class="w"> </span>pathauto<span class="w"> </span>mathjax<span class="w"> </span>profile
</code></pre></div>
<p>Not all the old modules exist in Drupal 8 any more. Some of them are folded into core, and some simply disappeared. With above, we also enabled three modules needed for doing the migration.</p>
<p>First created the migrate configurations.</p>
<div class="highlight"><pre><span></span><code>drush<span class="w"> </span>migrate-upgrade<span class="w"> </span>--legacy-db-url<span class="o">=</span>mysql://username:password@old.mysql.server/olddb<span class="w"> </span>--legacy-root<span class="o">=</span>https://yyhh.org<span class="w"> </span>--configure-only
</code></pre></div>
<p>At this point, one could run individual migration one by one, or one could run them all, which I did:</p>
<div class="highlight"><pre><span></span><code>drush<span class="w"> </span>mi<span class="w"> </span>--all
</code></pre></div>
<p>Most of the migrations worked. Two migrations failed with errors: </p>
<blockquote>
<p>upgrade_d6_filter_format</p>
<p>"Missing filter plugin: filter_null. [error]"</p>
</blockquote>
<p>This error turned out not to be a problem. All one needed to do is to save the formats again at the UI: "/admin/config/content/formats". Otherwise, the content of the posts will not show due to missing filter "filter_null". Saving the formats in the UI got ride of the errors.</p>
<blockquote>
<p>upgrade_d6_taxonomy_term_translation</p>
<p>"Drupal\Core\Database\IntegrityConstraintViolationException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'langcode' cannot be null:..."</p>
</blockquote>
<p>Basically, all the taxonomy terms failed to translate due to missing language code. Since all my terms are in English, this was not a problem either.</p>
<p>Now the new site was up and running. The look of the site was of course horrible. I had to install a new theme and created a sub-theme. Then did all the work of creating views, blocks, and links with the UI. Now we have a functioning site. Cool!</p>
<p>A few cautions though:</p>
<ul>
<li>Do not enable "taxonomy_breadcrumb", otherwise the page will error out. I think it's because the migrated taxonomy terms miss some fields. I did not investigate further since I would not use it any more.</li>
<li>Do not enable "comment_notify", the migration may error out. I did not investigate since there's no need to migrate this.</li>
<li>No need to enable "blog". The functionality of blog module could be easily reproduced by creating one's own views. The "blog" module does not work well with migrated posts any way.</li>
</ul>
<p>An unsolved problem is that the "popular content" links are all out of whack due to the loss of all old statistics. This is a <a href="https://www.drupal.org/node/2500521">known issue</a> that has not been resolved as of today. The fix, however, will be available in Drupal 8.5. So if the node counts are important to you, hold the migration until 8.5 is released on March 7, 2018.</p>
<p>Overall, the upgrade is a smooth experience, in the sense that source code modification was not necessary, nor was changing the database data. I am glad the Drupal is getting better and better.</p>Tips for Traveling with a Baby in Japan - Diaper Bag for Air Travel2017-01-11T01:09:00-08:002017-01-11T01:09:00-08:00Yunyaotag:yyhh.org,2017-01-11:/blog/2017/01/tips-for-traveling-with-a-baby-in-japan-diaper-bag-for-air-travel<p>The list of items contained in our diaper bag for air travel, annotated with how essential each item was based on our experience as follows:</p>
<p>*** Must have</p>
<p>** Nice to have</p>
<p>* Not needed</p>
<p>For travel gear that may not fit in your diaper bag, please visit <a href="https://yyhh.org/blog/2017/01/tips-traveling-baby-japan-travel-gears">this page</a>.</p>
<ul>
<li>Portable changing pad …</li></ul><p>The list of items contained in our diaper bag for air travel, annotated with how essential each item was based on our experience as follows:</p>
<p>*** Must have</p>
<p>** Nice to have</p>
<p>* Not needed</p>
<p>For travel gear that may not fit in your diaper bag, please visit <a href="https://yyhh.org/blog/2017/01/tips-traveling-baby-japan-travel-gears">this page</a>.</p>
<ul>
<li>Portable changing pad (***)<span style="font-family: Arial;"></span></li>
</ul>
<p>This is definitely essential for both in the airports as well as on the airplane. We like our <span style="font-family: Arial;">JJ Cole Collections Changing Clutch.</span></p>
<p><span style="font-family: Arial;"><img alt="bag" src="data:image/png;base64,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"></span></p>
<ul>
<li><span style="font-family: Arial;">Diaper</span> (***)</li>
</ul>
<p>Double the amount you will usually need for the duration of the travel just to be on the safe side (e.g. in case of flight delay). We stuck in the Los Angels airport for an extra 4 hours on our way back and used up all the diapers that we thought we would not need.</p>
<ul>
<li>Baby wipe (**)</li>
</ul>Tips for Traveling with a Baby in Japan - Travel Gears2017-01-09T06:50:00-08:002017-01-09T06:50:00-08:00Yunyaotag:yyhh.org,2017-01-09:/blog/2017/01/tips-for-traveling-with-a-baby-in-japan-travel-gears<p>We traveled with Boyan, our 13-month son last month to Japan (for those who are wondering, yep, he is the main reason why this blog has been so quiet in the past couple of years. :-)) and spent a unforgettable 10 days there. Before I went there, I searched over the …</p><p>We traveled with Boyan, our 13-month son last month to Japan (for those who are wondering, yep, he is the main reason why this blog has been so quiet in the past couple of years. :-)) and spent a unforgettable 10 days there. Before I went there, I searched over the web for tips, but they seemed to scattered around. I therefore decided to share our experience and hope it will be useful for others.</p>
<p>To make the information most useful, I will just list items we brought with us for the trip and comment on how essential each item was based on our experience denoted in the following way:</p>
<p>*** Must have</p>
<p>** Nice to have</p>
<p>* Not needed</p>
<p>**1. Travel Gears </p>
<ul>
<li>
<p>Mountain Buggy Nano (***)</p>
<p>It's definitely a life saver to travel with a small child. The major cities in Japan are very stroller friendly, even though it seems that locals prefer baby carriers over strollers. We did bring a baby carrier with us but ended up using the stroller most of the time. </p>
<p>Pro:</p>
<ul>
<li>It is lightweight and can be folded into carry-on size. </li>
<li>It's back can be adjusted into different positions, including a lie flat position for sleeping </li>
<li>It has up to 44lb weight and children up to 4 years</li>
</ul>
<p>Con: </p>
<ul>
<li>The sun shade is on the small side. But this issue has already been fixed for newer model of Nano. </li>
</ul>
</li>
</ul>
<p><img alt="Photo of Mountain Buggy Nono" src="data:image/png;base64,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"></p>
<ul>
<li>
<p>Mountain Buggy Nano All Weather Cover (***)</p>
<p>Unless you plan to stay indoor all the time, the all weather covers are must-have to ensure your child stay comfortable all the time. We used the rain cover for both rainy and windy conditions. We also used the sun shade to create a dark environment to allow Boyan to take a good nap during the day. </p>
<p>Pro: </p>
<ul>
<li>Both covers fit into a small bag that can be attached to the stroller. </li>
</ul>
</li>
</ul>
<p><img alt="Mountain Buggy Nano Covers" src="data:image/png;base64,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"></p>
<ul>
<li>
<p>Hip Seat Baby Carrier (*)</p>
<p>We have multiple baby carriers, including Egobaby. But our favorite is Bebamour baby carrier, mostly used as hipseat. During our Japan trip, we used it from time to time, but only for short trips. However, we did notice that baby carriers are very popular for locals. </p>
</li>
</ul>
<p><img alt="Hip Seat Baby Carrier" src="data:image/png;base64,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"> </p>
<ul>
<li>Hearing Protection (**)</li>
</ul>
<p>I love my Bose Noisy Canceling headset for air travels. Even though Boyan was only 13-month, we got the large size Baby Banz earBanZ Hearing Protection and it worked great for him. He seemed to very comfortable in it and wared it all through the flights. He looks super cute in it as well. :-) </p>
<p><img alt="Ear Piece" src="data:image/png;base64,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"></p>
<ul>
<li>Getting a window seat on the airplane (***)</li>
</ul>
<p>Not really a gear, but it is super important. It helps to keep the kid entertained from time to time, especially at boarding and landing time. More importantly, it allows the kid to sleep with the least amount of interruption. </p>
<ul>
<li>
<p>Neck wallet and passport holder (***)</p>
<p>A must-have for traveling with a small child. It makes it so much easier to manage all the important documents and tickets on the go. The last thing you want is to leave any of the important documents behind. </p>
</li>
</ul>
<p><img alt="Passport Holder" src="data:image/png;base64,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"></p>
<ul>
<li>Diaper bag (***)</li>
</ul>
<p>There is no need to explain why it is critical to have a well-stocked diaper bag for travel, particular on the road in a foreign country.</p>
<p>I will write a separate post soon on the content of the diaper bag for both <a href="https://yyhh.org/blog/2017/01/tips-traveling-baby-japan-diaper-bag-air-travel">air travel</a> as well as for day trips. Stay tuned.</p>
<p></br></p>Data-Oriented Programming (DOP)2016-12-03T23:33:00-08:002016-12-03T23:33:00-08:00Huahaitag:yyhh.org,2016-12-03:/blog/2016/12/data-oriented-programming-dop<p>JSON is arguably the world's most popular human readable data format today. It has largely replaced XML as the data exchange format on the Internet. One of the key reasons for the proliferation of JSON is its simplicity. The data structure are very limited: only arrays, enclosed with []; and objects …</p><p>JSON is arguably the world's most popular human readable data format today. It has largely replaced XML as the data exchange format on the Internet. One of the key reasons for the proliferation of JSON is its simplicity. The data structure are very limited: only arrays, enclosed with []; and objects, enclosed with {}. That's it. It cannot be simpler.</p>
<p>Apparently, this dead simple data format is enough to represent the vast landscape of data that JSON becomes the de-facto data format for Web services. Most Web APIs we use today speaks JSON. However, JSON is not native for most programming languages. It becomes a pain to convert to and back from JSON in programming languages.</p>
<p>What if we develop a Data-Oriented Programming (DOP) language, that can speak something similar to JSON natively?</p>
<p>Luckily, this language already exists. It is called Clojure!</p>
<p>In Clojure, [] means the same thing as in JSON, {} means essentially the same thing as well: a key value map. The only thing added, which makes it a programming language instead of a purely data format, is a pair of (). What () enables is the abilities to define and call functions. With this additon, we get a fully general purpose programming language.</p>
<p>As you may have suspected, using () to define and call functions is what Lisp do. So you are right, in this sense, Clojure is a Lisp. But with the ability to handle data like in JSON, it is a Data-Oriented Programming language.</p>
<p>So, there you have it, Clojure is the first DOP language, a DOP Lisp.</p>Switching to Spacemacs from Vim for Clojure/ClojureScript Development2015-08-13T06:00:00-07:002015-08-13T06:00:00-07:00Huahaitag:yyhh.org,2015-08-13:/blog/2015/08/switching-to-spacemacs-from-vim-for-clojureclojurescript-development<p>Clojure has been my primary programming language for a couple of years now. During this period, I have relied on my trusty Vim text editor as the development environment. Coding Clojure in Vim had been an enjoyable experience with these excellent Vim plugins:</p>
<ol>
<li><a href="https://github.com/guns/vim-clojure-static">vim-clojure-static</a></li>
<li><a href="https://github.com/tpope/vim-fireplace">fireplace.vim</a></li>
<li><a href="https://www.vim.org/scripts/script.php?script_id=3998">paredit.vim</a></li>
<li><a href="https://github.com/luochen1990/rainbow">Rainbow Parentheses …</a></li></ol><p>Clojure has been my primary programming language for a couple of years now. During this period, I have relied on my trusty Vim text editor as the development environment. Coding Clojure in Vim had been an enjoyable experience with these excellent Vim plugins:</p>
<ol>
<li><a href="https://github.com/guns/vim-clojure-static">vim-clojure-static</a></li>
<li><a href="https://github.com/tpope/vim-fireplace">fireplace.vim</a></li>
<li><a href="https://www.vim.org/scripts/script.php?script_id=3998">paredit.vim</a></li>
<li><a href="https://github.com/luochen1990/rainbow">Rainbow Parentheses Improved</a></li>
<li><a href="https://github.com/guns/vim-clojure-highlight">vim-clojure-highlight</a></li>
<li><a href="https:://github.com/venantius/vim-cljfmt">vim-cljfmt</a></li>
</ol>
<p>So, why am I switching? Well, Clojure is, after all, a LISP. The tooling coverage for Clojure in the LISP's natural habitat, Emacs, is simply more complete than in Vim. I did not realize the extent of the discrepancy until last week, when some guys in the Clojure meetup demonstrated impressive refactoring features of their Emacs Clojure development environment.</p>
<p>To be fair, fireplace is doing an adequate job of supporting the most of dynamic features necessary for Clojure programming: code evaluation, documents lookup, tests and so on. I have been productive with it in the last couple of years. On the other hand, as my projects grow bigger and more complex, better support for debugging and refactoring seems to become desirable. These capabilities exist in Emacs.</p>
<p>Of course, I am not about to give up the Vim style text editing. As a HCI researcher in my previous life, I know that theoretically, Vim style text editing is simply better than text editing with GUI and a mouse, because Fitts' Law is real and it hurts. In addition, the superiority of modal editor vi over non-modal editor emacs for text editing has been empirically established as far back as 1983<a href="#footnote1_e69wwp8" id="footnoteref1_e69wwp8" class="see-footnote" title="Poller, M.F., Garter, S.K. A Comparative Study of Moded and Modeless Text Editing by Experienced Editor Users. In Proceedings of CHI '83, pp 166-170">1</a>.</p>
<p>For my case, an ideal situation would be to keep the text editing style of Vim, but use it in Emacs to get the benefit of extensive Clojure support. Not surprisingly, plenty of people have worked towards such solutions. The latest effort is in the form of <a href="https://github.com/syl20bnr/spacemacs">spacemacs</a>, a fantastic open source project that is enjoying an outpouring enthusiasm from the community, earning more than 3000 github stars in a very short time.</p>
<p>I had to try it. Try as I did. And I can say that I am not disappointed.</p>
<p>To be honest, the on-boarding process left a lot to be desired. First, on OSX, there's already a default installation of emacs, which would not work with spacemacs. The recommended homebrew installation of emacs is simple enough, but one needs to rename the default emacs and make the homebrew one the default. This is not mentioned in the guide.</p>
<p>I found configuring the editor to be surprisingly easy, considering I knew nothing about emacs before (other than the key combination to quit from one). The majority of the Vim key bindings I tried work as desired. The ones that did not work are not hard to change. Within a couple of hours, I have managed to create a configuration that replicates most of the key bindings of paredit.vim, which I need to be productive coding Clojure. Here are my <code>dotspacemacs/config</code> to achieve these and more.</p>
<p><font face="monospace"><font color="#9a7200">(</font><font color="#719899"><strong>defun</strong></font> remove-background-color <font color="#9a7200">()</font><br>
<font color="#009799">"Useful for transparent terminal."</font><br>
<font color="#9a7200">(</font><font color="#719899"><strong>unless</strong></font> <font color="#9a7200">(</font>display-graphic-p <font color="#9a7200">(</font>selected-frame<font color="#9a7200">))</font><br>
<font color="#9a7200">(</font>set-face-background <font color="#9a7200">'</font><font color="#9a7599">default</font> <font color="#009799">"unspecified-bg"</font> <font color="#9a7200">(</font>selected-frame<font color="#9a7200">))))</font><br>
<font color="#9a7200">(</font><font color="#719899"><strong>defun</strong></font> dotspacemacs/config <font color="#9a7200">()</font><br>
<font color="#009799">"Configuration function.</font><br>
<font color="#009799"> This function is called at the very end of Spacemacs initialization after</font><br>
<font color="#009799">layers configuration."</font><br>
<font color="#719872">;; Make evil-mode up/down operate in screen lines instead of logical lines</font><br>
<font color="#9a7200">(</font>define-key evil-motion-state-map <font color="#009799">"j"</font> <font color="#9a7200">'</font><font color="#9a7599">evil-next-visual-line</font><font color="#9a7200">)</font><br>
<font color="#9a7200">(</font>define-key evil-motion-state-map <font color="#009799">"k"</font> <font color="#9a7200">'</font><font color="#9a7599">evil-previous-visual-line</font><font color="#9a7200">)</font><br>
<font color="#719872">;; Also in visual mode</font><br>
<font color="#9a7200">(</font>define-key evil-visual-state-map <font color="#009799">"j"</font> <font color="#9a7200">'</font><font color="#9a7599">evil-next-visual-line</font><font color="#9a7200">)</font><br>
<font color="#9a7200">(</font>define-key evil-visual-state-map <font color="#009799">"k"</font> <font color="#9a7200">'</font><font color="#9a7599">evil-previous-visual-line</font><font color="#9a7200">)</font><br>
<font color="#719872">;; clojure mode config</font><br>
<font color="#9a7200">(</font><font color="#719899"><strong>require</strong></font> <font color="#9a7200">'</font><font color="#9a7599">clojure-mode-extra-font-locking</font><font color="#9a7200">)</font><br>
<font color="#9a7200">(</font>add-hook <font color="#9a7200">'</font><font color="#9a7599">clojure-mode-hook</font> <font color="#9a7200"><strong>#'smartparens-strict-mode</strong></font><font color="#9a7200">)</font><br>
<font color="#9a7200">(</font>add-hook <font color="#9a7200">'</font><font color="#9a7599">clojure-mode-hook</font> <font color="#9a7200"><strong>#'evil-smartparens-mode</strong></font><font color="#9a7200">)</font><br>
<font color="#9a7200">(</font>add-hook <font color="#9a7200">'</font><font color="#9a7599">clojure-mode-hook</font> <font color="#9a7200"><strong>#'rainbow-delimiters-mode</strong></font><font color="#9a7200">)</font><br>
<font color="#719872">;; start a light theme when launched as GUI</font><br>
<font color="#9a7200">(</font><font color="#719899"><strong>when</strong></font> <font color="#9a7200">(</font>display-graphic-p<font color="#9a7200">)</font><br>
<font color="#9a7200">(</font><font color="#719899"><strong>progn</strong></font><br>
<font color="#9a7200">(</font>disable-theme <font color="#9a7200">'</font><font color="#9a7599">darkburn</font><font color="#9a7200">)</font><br>
<font color="#9a7200">(</font>load-theme <font color="#9a7200">'</font><font color="#9a7599">leuven</font> <font color="#719899"><strong>t</strong></font><font color="#9a7200">)</font><br>
<font color="#9a7200">(</font>enable-theme <font color="#9a7200">'</font><font color="#9a7599">leuven</font><font color="#9a7200">)))</font><br>
<font color="#719872">;; remove background color for both server and client</font><br>
<font color="#9a7200">(</font>add-hook <font color="#9a7200">'</font><font color="#9a7599">window-setup-hook</font> <font color="#9a7200">'</font><font color="#9a7599">remove-background-color</font><font color="#9a7200">)</font><br>
<font color="#9a7200">(</font>add-hook <font color="#9a7200">'</font><font color="#9a7599">server-visit-hook</font> <font color="#9a7200">'</font><font color="#9a7599">remove-background-color</font><font color="#9a7200">)</font><br>
<font color="#719872">;; remove trailing whitespace when saving</font><br>
<font color="#9a7200">(</font>add-hook <font color="#9a7200">'</font><font color="#9a7599">before-save-hook</font> <font color="#9a7200">'</font><font color="#9a7599">delete-trailing-whitespace</font><font color="#9a7200">)</font><br>
<font color="#719872">;; toggle comments</font><br>
<font color="#9a7200">(</font>define-key evil-normal-state-map <font color="#009799">",c "</font> <font color="#009799">" cl"</font><font color="#9a7200">)</font><br>
<font color="#719872">;; match paredit.vim key-binding</font><br>
<font color="#9a7200">(</font>define-key evil-normal-state-map <font color="#009799">",W"</font> <font color="#009799">" kw"</font><font color="#9a7200">)</font> <font color="#719872">; wrap with ()</font><br>
<font color="#9a7200">(</font>define-key evil-normal-state-map <font color="#009799">",w["</font> <font color="#719872">; wrap with []</font><br>
<font color="#9a7200">(</font><font color="#719899"><strong>lambda</strong></font> <font color="#9a7200">(</font><font color="#9a7200"><strong>&optional</strong></font> arg<font color="#9a7200">)</font> <font color="#9a7200">(</font>interactive <font color="#009799">"P"</font><font color="#9a7200">)</font> <font color="#9a7200">(</font>sp-wrap-with-pair <font color="#009799">"["</font><font color="#9a7200">)))</font><br>
<font color="#9a7200">(</font>define-key evil-normal-state-map <font color="#009799">",w{"</font> <font color="#719872">; wrap with {}</font><br>
<font color="#9a7200">(</font><font color="#719899"><strong>lambda</strong></font> <font color="#9a7200">(</font><font color="#9a7200"><strong>&optional</strong></font> arg<font color="#9a7200">)</font> <font color="#9a7200">(</font>interactive <font color="#009799">"P"</font><font color="#9a7200">)</font> <font color="#9a7200">(</font>sp-wrap-with-pair <font color="#009799">"{"</font><font color="#9a7200">)))</font><br>
<font color="#9a7200">(</font>define-key evil-normal-state-map <font color="#009799">",S"</font> <font color="#009799">" kW"</font><font color="#9a7200">)</font> <font color="#719872">; splice, i.e unwrap an sexp</font><br>
<font color="#9a7200">(</font>define-key evil-normal-state-map <font color="#009799">",J"</font> <font color="#009799">" kJ"</font><font color="#9a7200">)</font> <font color="#719872">; join two sexps</font><br>
<font color="#9a7200">(</font>define-key evil-normal-state-map <font color="#009799">",O"</font> <font color="#9a7200">'</font><font color="#9a7599">sp-split-sexp</font><font color="#9a7200">)</font> <font color="#719872">; split an sexp</font><br>
<font color="#9a7200">(</font>define-key evil-normal-state-map <font color="#009799">",I"</font> <font color="#009799">" kr"</font><font color="#9a7200">)</font> <font color="#719872">; raise current symbol</font><br>
<font color="#9a7200">(</font>define-key evil-normal-state-map <font color="#9a7200">(</font>kbd <font color="#009799">", <up>"</font><font color="#9a7200">)</font> <font color="#009799">" kE"</font><font color="#9a7200">)</font> <font color="#719872">; splice kill backward</font><br>
<font color="#9a7200">(</font>define-key evil-normal-state-map <font color="#9a7200">(</font>kbd <font color="#009799">", <down>"</font><font color="#9a7200">)</font> <font color="#009799">" ke"</font><font color="#9a7200">)</font> <font color="#719872">; forward</font><br>
<font color="#719872">;; These are different from vim, here cursor should NOT be on delimits</font><br>
<font color="#9a7200">(</font>define-key evil-normal-state-map <font color="#009799">",>"</font> <font color="#009799">" ks"</font><font color="#9a7200">)</font> <font color="#719872">; forward slurp</font><br>
<font color="#9a7200">(</font>define-key evil-normal-state-map <font color="#009799">",<"</font> <font color="#009799">" kS"</font><font color="#9a7200">)</font> <font color="#719872">; backward slurp</font><br>
<font color="#9a7200">)</font></font></p>
<p>As can be seen, all these functionality of Vim have already been coded up by someone and included in spacemacs as functions, all I did was changing their key-bindings. That was easy :-). I am looking forward to the journey ahead with spacemacs.</p>
<ul>
<li><span id="footnote1_e69wwp8"><a href="#footnoteref1_e69wwp8" class="footnote-label">1.</a> Poller, M.F., Garter, S.K. A Comparative Study of Moded and Modeless Text Editing by Experienced Editor Users. In Proceedings of CHI '83, pp 166-170</span></li>
</ul>Juji Personality Profile for Mayor Stubbs2015-03-19T04:53:00-07:002015-03-19T04:53:00-07:00Yunyaotag:yyhh.org,2015-03-19:/blog/2015/03/juji-personality-profile-for-mayor-stubbs<p>What makes Mayor Stubbs special?</p>
<p>Check out the <a href="https://juji.io/me/mayorstubbs/basic">personality (or shall I say, catality) profile for Mayor Stubbs</a> constructed by <a href="https://juji.io">Juji</a> based on Mayor Stubbs' tweets.</p>
<p><a href="https://juji.io/me/mayorstubbs/basic"><img src="https://farm8.staticflickr.com/7284/16834543076_c586586022_c.jpg" width="656" height="443" /></a></p>
<p>Have you meet Mayor Stubbs? Does this sound like him?</p>
<p>What really makes me smile is the summary of the profile. Mayor Stubbs is …</p><p>What makes Mayor Stubbs special?</p>
<p>Check out the <a href="https://juji.io/me/mayorstubbs/basic">personality (or shall I say, catality) profile for Mayor Stubbs</a> constructed by <a href="https://juji.io">Juji</a> based on Mayor Stubbs' tweets.</p>
<p><a href="https://juji.io/me/mayorstubbs/basic"><img src="https://farm8.staticflickr.com/7284/16834543076_c586586022_c.jpg" width="656" height="443" /></a></p>
<p>Have you meet Mayor Stubbs? Does this sound like him?</p>
<p>What really makes me smile is the summary of the profile. Mayor Stubbs is "curious investigator". This is amazingly accurate: is there a cat that is not curious? I don't think so.</p>
<p>Does your pet have its own twitter or Facebook account? If so, check out its <a href="https://juji.io">Juji profile</a> or check out your own or your friends'. It's super fun.</p>Museum and Cultural Tour of Bulgaria in 9 Days - Day 2 (Boyana Church)2014-04-05T05:05:00-07:002014-04-05T05:05:00-07:00Yunyaotag:yyhh.org,2014-04-05:/blog/2014/04/museum-and-cultural-tour-of-bulgaria-in-9-days-day-2-boyana-church<p><span style="color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; display: inline !important; float: none;"></span><span style="color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; display: inline !important; float: none;">After a long drive, the last stop of <a href="https://yyhh.org/blog/2013/12/museum-and-cultural-tour-bulgaria-9-days-day-2-rila-monastery">the second day</a> of <a href="https://yyhh.org/blog/2013/08/museum-and-cultural-tour-bulgaria-9-days-preface-%E4%BF%9D%E5%8A%A0%E5%88%A9%E4%BA%9A%E6%96%87%E5%8C%96%E5%8E%86%E5%8F%B2%E4%B9%9D%E6%97%A5%E6%B8%B8-%E5%89%8D%E8%A8%80%EF%BC%89">our trip</a> is National Museum of Boyana Church, a UNESCO World Heritage Site</span><span style="color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; display: inline !important; float: none;">.</span><span style="color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; display: inline !important; float: none;"> It is a very small church, originally built in the lat 10th or early 11th century, with the addition of the central wing in the …</span></p><p><span style="color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; display: inline !important; float: none;"></span><span style="color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; display: inline !important; float: none;">After a long drive, the last stop of <a href="https://yyhh.org/blog/2013/12/museum-and-cultural-tour-bulgaria-9-days-day-2-rila-monastery">the second day</a> of <a href="https://yyhh.org/blog/2013/08/museum-and-cultural-tour-bulgaria-9-days-preface-%E4%BF%9D%E5%8A%A0%E5%88%A9%E4%BA%9A%E6%96%87%E5%8C%96%E5%8E%86%E5%8F%B2%E4%B9%9D%E6%97%A5%E6%B8%B8-%E5%89%8D%E8%A8%80%EF%BC%89">our trip</a> is National Museum of Boyana Church, a UNESCO World Heritage Site</span><span style="color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; display: inline !important; float: none;">.</span><span style="color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; display: inline !important; float: none;"> It is a very small church, originally built in the lat 10th or early 11th century, with the addition of the central wing in the 13th century.</span></p>
<p><span style="color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; display: inline !important; float: none;"><img src="https://farm8.staticflickr.com/7396/9595200693_d2b2e57783_z.jpg" width="468" height="312" /></span></p>
<p><span style="color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; display: inline !important; float: none;"><br>
</span></p>
<p><span style="color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; display: inline !important; float: none;"><img src="https://farm3.staticflickr.com/2890/9595080927_ccf2cb7d32_z.jpg" width="468" height="312" alt="Buyala Church" /></span></p>
<p><span style="color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; display: inline !important; float: none;"><br>
</span></p>
<p><span style="color: #000000; font-family: Tahoma; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; display: inline !important; float: none;">It is famous because of its frescoes from 1259, which demonstrate the exceptional achievements of mediaeval Bulgarian culture. For obvious reason, photography is not permitted in the church. Here are some representative pictures from the Web (credits go to Wikipedia)<br>
</span></p>
<p><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Boyana_Angel.jpg/200px-Boyana_Angel.jpg" width="200" height="261" /></p>
<p><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/09/Boyana_Church_ship.jpg/200px-Boyana_Church_ship.jpg" width="200" height="185" /></p>
<p><img src="https://upload.wikimedia.org/wikipedia/commons/6/65/Desislava.jpg" width="397" height="326" /></p>Museum and Cultural Tour of Bulgaria in 9 Days - Day 2 (Rila Monastery)2013-12-13T22:39:00-08:002013-12-13T22:39:00-08:00Yunyaotag:yyhh.org,2013-12-13:/blog/2013/12/museum-and-cultural-tour-of-bulgaria-in-9-days-day-2-rila-monastery<p><img src="https://farm8.staticflickr.com/7438/9594386823_96f739dfc8_z.jpg" width="640" height="427" /></p>
<p>The second day of <a href="https://yyhh.org/blog/2013/08/museum-and-cultural-tour-bulgaria-9-days-preface-%E4%BF%9D%E5%8A%A0%E5%88%A9%E4%BA%9A%E6%96%87%E5%8C%96%E5%8E%86%E5%8F%B2%E4%B9%9D%E6%97%A5%E6%B8%B8-%E5%89%8D%E8%A8%80%EF%BC%89">our trip</a> began with a long drive from Sofia to Rila Monastery, the largest and most famous Eastern Orthodox monastery in Bulgaria. It is the first UNESCO World Heritage Site in Bulgaria we visited in our trip.</p>
<p>This beautiful monastery is situated in the southwestern Rila …</p><p><img src="https://farm8.staticflickr.com/7438/9594386823_96f739dfc8_z.jpg" width="640" height="427" /></p>
<p>The second day of <a href="https://yyhh.org/blog/2013/08/museum-and-cultural-tour-bulgaria-9-days-preface-%E4%BF%9D%E5%8A%A0%E5%88%A9%E4%BA%9A%E6%96%87%E5%8C%96%E5%8E%86%E5%8F%B2%E4%B9%9D%E6%97%A5%E6%B8%B8-%E5%89%8D%E8%A8%80%EF%BC%89">our trip</a> began with a long drive from Sofia to Rila Monastery, the largest and most famous Eastern Orthodox monastery in Bulgaria. It is the first UNESCO World Heritage Site in Bulgaria we visited in our trip.</p>
<p>This beautiful monastery is situated in the southwestern Rila Mountains. Founded in the 10th century, the Rila Monastery is regarded as one of Bulgaria's most important cultural, historical and architectural monuments. The monastery is named after its founder, the hermit Ivan of Rila (876 - 946 AD).</p>
<p><img src="https://farm6.staticflickr.com/5486/9594409495_459c0bc078_z.jpg" width="640" height="427" /></p>
<p><img src="https://farm6.staticflickr.com/5513/9597205870_da02accb4c_z.jpg" width="342" height="513" /></p>
<p><img src="https://farm6.staticflickr.com/5333/9594480911_b484488c53_z.jpg" width="339" height="508" /></p>
<p><img alt="flower" src="https://farm3.staticflickr.com/2853/9597494852_8e33d0c64d_z.jpg"></p>
<p>Beautiful mural</p>
<p><img src="https://farm3.staticflickr.com/2892/9597500144_02771eb4cb_z.jpg" width="640" height="427" /></p>
<p><img alt="mural" src="https://farm6.staticflickr.com/5349/9594740437_ff6bcea4a5_z.jpg"></p>
<p>Bell Tower</p>
<p><img alt="tower" src="https://farm4.staticflickr.com/3696/9594745493_0c417e3737_z.jpg"></p>
<p>Sneak peek of the Monastery from the window of the tower</p>
<p><img alt="window" src="https://farm4.staticflickr.com/3809/9597595554_ffb67aa3b1_z.jpg"></p>
<p>Ancient mural inside the tower</p>
<p><img alt="tower mural" src="https://farm8.staticflickr.com/7307/9597698830_bf50b2ed78_z.jpg"></p>
<p>Long line outside of the Monastery</p>
<p><img alt="line" src="https://farm3.staticflickr.com/2836/9594636891_514c0ae5fd_z.jpg"></p>
<p>A cat enjoying an afternoon nap near the Monastery before waked by cat-loving tourists coming to pet it. </p>
<p><img src="https://farm8.staticflickr.com/7347/9594574875_10e1984604_z.jpg" width="640" height="427" /></p>
<p>A food stand nearby to grab a quick lunch.</p>
<p><img src="https://farm4.staticflickr.com/3758/9597386252_3bf5174d9e_z.jpg" width="640" height="427" /></p>
<p>Tip: Remember to bring your own water bottle. There is a fountain right outside of the Monestery to refill it with real spring water, helping save $$$ and our mother earth.</p>
<p><img src="https://farm3.staticflickr.com/2850/9594643297_19289d96f0_z.jpg" width="427" height="640" /></p>Museum and Cultural Tour of Bulgaria in 9 Days - Day 1 (More)2013-09-21T18:22:00-07:002013-09-21T18:22:00-07:00Yunyaotag:yyhh.org,2013-09-21:/blog/2013/09/museum-and-cultural-tour-of-bulgaria-in-9-days-day-1-more<p>We were quite amazed by the National Archaeological Museum, especially the Thracian treasures. </p>
<p>The museum is located in the largest and oldest former Ottoman Mosque in Sofia.</p>
<p><img src="https://farm4.staticflickr.com/3767/9593378357_362876e88d_z.jpg" width="640" height="427" /></p>
<p>Thracian treasures. Can you believe that they were made before the Roman Empire?</p>
<p><img src="https://farm8.staticflickr.com/7422/9595881850_7f8e541f88_z.jpg" width="640" height="427" /></p>
<p><img src="https://farm3.staticflickr.com/2893/9596021966_1ae6f9c1a8_z.jpg" width="640" height="427" /></p>
<p><img src="https://farm4.staticflickr.com/3812/9595974478_41156a3280_z.jpg" width="640" height="427" /></p>
<p><img src="https://farm6.staticflickr.com/5550/9593185523_17c8180736_z.jpg" width="640" height="427" /></p>
<p>Gold jewery</p>
<p><img src="https://farm8.staticflickr.com/7338/9595940004_ff09309a6c_z.jpg" width="640" height="427" /></p>
<p><img src="https://farm4.staticflickr.com/3682/9595929476_936e2614bc_z.jpg" width="640" height="427" /></p>
<p><img src="https://farm4.staticflickr.com/3779/9595887346_00f873cda1_z.jpg" width="640" height="427" /></p>
<p><img src="https://farm4.staticflickr.com/3667/9595898894_bc717441d8_z.jpg" width="640" height="427" /></p>
<p>Gold wreath</p>
<p><img src="https://farm4.staticflickr.com/3804/9595915294_8b2c7985e5_z.jpg" width="640" height="427" /></p>
<p><img src="https://farm6.staticflickr.com/5331/9593301731_491a8fc48a_z.jpg" width="640" height="427" /></p>
<p>Gold mask and ring from Thracian …</p><p>We were quite amazed by the National Archaeological Museum, especially the Thracian treasures. </p>
<p>The museum is located in the largest and oldest former Ottoman Mosque in Sofia.</p>
<p><img src="https://farm4.staticflickr.com/3767/9593378357_362876e88d_z.jpg" width="640" height="427" /></p>
<p>Thracian treasures. Can you believe that they were made before the Roman Empire?</p>
<p><img src="https://farm8.staticflickr.com/7422/9595881850_7f8e541f88_z.jpg" width="640" height="427" /></p>
<p><img src="https://farm3.staticflickr.com/2893/9596021966_1ae6f9c1a8_z.jpg" width="640" height="427" /></p>
<p><img src="https://farm4.staticflickr.com/3812/9595974478_41156a3280_z.jpg" width="640" height="427" /></p>
<p><img src="https://farm6.staticflickr.com/5550/9593185523_17c8180736_z.jpg" width="640" height="427" /></p>
<p>Gold jewery</p>
<p><img src="https://farm8.staticflickr.com/7338/9595940004_ff09309a6c_z.jpg" width="640" height="427" /></p>
<p><img src="https://farm4.staticflickr.com/3682/9595929476_936e2614bc_z.jpg" width="640" height="427" /></p>
<p><img src="https://farm4.staticflickr.com/3779/9595887346_00f873cda1_z.jpg" width="640" height="427" /></p>
<p><img src="https://farm4.staticflickr.com/3667/9595898894_bc717441d8_z.jpg" width="640" height="427" /></p>
<p>Gold wreath</p>
<p><img src="https://farm4.staticflickr.com/3804/9595915294_8b2c7985e5_z.jpg" width="640" height="427" /></p>
<p><img src="https://farm6.staticflickr.com/5331/9593301731_491a8fc48a_z.jpg" width="640" height="427" /></p>
<p>Gold mask and ring from Thracian king's grave.</p>
<p><img src="https://farm6.staticflickr.com/5542/9593233895_2a78b125c4_z.jpg" width="640" height="427" /></p>
<p><img src="https://farm4.staticflickr.com/3758/9593243141_60e94df4e2_z.jpg" width="640" height="427" /></p>Museum and Cultural Tour of Bulgaria in 9 Days - Day 12013-09-08T04:31:00-07:002013-09-08T04:31:00-07:00Yunyaotag:yyhh.org,2013-09-08:/blog/2013/09/museum-and-cultural-tour-of-bulgaria-in-9-days-day-1<p><span style="font-family: georgia,palatino; font-size: medium;">(1) Sign of Sofia --- City of Lion.</span></p>
<p><span style="font-family: georgia,palatino; font-size: medium;"><img src="https://farm3.staticflickr.com/2830/9592419271_3a67bacd31.jpg" width="500" height="333" /></span></p>How to get a kitty manicure2013-09-04T05:34:00-07:002013-09-04T05:34:00-07:00Yunyaotag:yyhh.org,2013-09-04:/blog/2013/09/how-to-get-a-kitty-manicure<p>Speaker: Tom</p>
<p>Dear fellow kitties, I am going to show you how to get a kitty manicure and pedicure.</p>
<p>First of all, let me show you my beautiful finger nails. My mom polishes each and every one of them on a weekly basis. Such weekly pampering is essential for a …</p><p>Speaker: Tom</p>
<p>Dear fellow kitties, I am going to show you how to get a kitty manicure and pedicure.</p>
<p>First of all, let me show you my beautiful finger nails. My mom polishes each and every one of them on a weekly basis. Such weekly pampering is essential for a purrfect kitty like me.</p>
<p><img src="https://farm6.static.flickr.com/5155/5899746253_57b0eb9cbc.jpg" width="500" height="333" /></p>
<p>Now, let me show you how to get a kitty manicure.</p>
<p>First of all, relax and get each of your finger massaged. I like to sit on my mommy's lap to do the massage, but Mayori prefers to get her massage in her favorite bed.</p>
<p><img src="https://farm6.staticflickr.com/5488/9656330736_40e443d125_o.jpg" width="405" height="543" /></p>
<p>After the massage, you may feel a bit sleepy. This is a good time to get your manicure.</p>
<p><img src="https://farm8.staticflickr.com/7414/9653082559_2d9b92717f_b.jpg" width="412" height="550" /></p>
<p>Continue relaxing and enjoy your pedicure.</p>
<p><img src="https://farm6.staticflickr.com/5542/9656317344_cfdd59dac0_b.jpg" width="414" height="553" /></p>
<p>It is just this simple --- just relax and enjoy! (^-^)</p>Museum and Cultural Tour of Bulgaria in 9 Days --- Preface (保加利亚文化历史九日游 - 前言)2013-08-25T18:36:00-07:002013-08-25T18:36:00-07:00Yunyaotag:yyhh.org,2013-08-25:/blog/2013/08/museum-and-cultural-tour-of-bulgaria-in-9-days-preface-bao-jia-li-ya-wen-hua-li-shi-jiu-ri-you-qian-yan<p><img src="https://farm6.staticflickr.com/5456/9628131706_89d4e51472.jpg" width="500" height="333" alt="IMGP2315" /></p>
<p><span style="font-size: medium; font-family: georgia,palatino;"><strong>Planning</strong>:</span></p>
<p><span style="font-family: georgia,palatino;"><span style="font-size: medium;">Following my usual <a href="https://yyhh.org/blog/2011/10/planning-dream-trip-italy-easy-way">strategy for travel planning</a>, I first got some rough ideas on the highlights of the country by </span><span style="font-size: medium;"><span style="font-size: medium;">referring to the "<span class="pull-left">Best of Bulgaria in 12 Days Tour" by Steve Rick</span>. Based on Huahai and my own schedule, I then decided that we could spend at most …</span></span></span></p><p><img src="https://farm6.staticflickr.com/5456/9628131706_89d4e51472.jpg" width="500" height="333" alt="IMGP2315" /></p>
<p><span style="font-size: medium; font-family: georgia,palatino;"><strong>Planning</strong>:</span></p>
<p><span style="font-family: georgia,palatino;"><span style="font-size: medium;">Following my usual <a href="https://yyhh.org/blog/2011/10/planning-dream-trip-italy-easy-way">strategy for travel planning</a>, I first got some rough ideas on the highlights of the country by </span><span style="font-size: medium;"><span style="font-size: medium;">referring to the "<span class="pull-left">Best of Bulgaria in 12 Days Tour" by Steve Rick</span>. Based on Huahai and my own schedule, I then decided that we could spend at most 9 days for the trip. </span></span></span></p>
<p><span style="font-size: medium; font-family: georgia,palatino;"><span class="pull-left">Usually, we would do self-driving tour for such a trip. However, I found out that it may not be very easy to go to some of the places on our own due to the language barrier. Given this potential issue plus our busy schedule due to work, I decided to use a tour company to help the planning. Fortunately, custom tours in Bulgaria are quite affordable. We used Traventuria </span>(<a href="https://traventuria.com/">https://traventuria.com/</a>), which have received great reviews on tripadvisor. Communications with the company was very easy. After a few email exchanges, we settled down on the following iternary. Traventuria helped us book all the hotels and also was responsible for providing transportation, including a private car and driver (who also served as our translator and tour guide).<br>
</span></p>
<p><span style="font-size: medium; font-family: georgia,palatino;"><span class="pull-left">Equipped ourselves </span>a English guide book: <a href="https://www.amazon.com/gp/product/0756670136/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0756670136&linkCode=as2&tag=yunyaoshome-20" id="static_txt_preview">Bulgaria (EYEWITNESS TRAVEL GUIDE)</a>, we were ready for our big trip!</span></p>
<p><span style="font-size: medium; font-family: georgia,palatino;">BTW, I highly recommend this book, which turned out to be extremely helpful during the trip, as not every place we went to provides descriptions in English. In addition, we also found a couple of new places from the book to add to the original iternary (e.g. Stone Forest).<br>
</span></p>
<p><span style="font-size: medium; font-family: georgia,palatino;"><strong>Iternary</strong>:</span></p>
<p><span style="font-size: medium; font-family: georgia,palatino;">Day 0 Pick-up from Sofia airport and transfer to Hilton Hotel.</span></p>
<p><span style="font-size: medium; font-family: georgia,palatino;">Day 1 <a href="https://yyhh.org/blog/2013/09/museum-and-cultural-tour-bulgaria-9-days-day-1-%E4%BF%9D%E5%8A%A0%E5%88%A9%E4%BA%9A%E6%96%87%E5%8C%96%E5%8E%86%E5%8F%B2%E4%B9%9D%E6%97%A5%E6%B8%B8-%E7%AC%AC%E4%B8%80%E5%A4%A9-%EF%BC%89">Tour of Sofia</a> (about 3 hrs) + <a href="https://yyhh.org/blog/2013/09/museum-and-cultural-tour-bulgaria-9-days-day-1-more">Archaeological Museum</a>.<br>
</span></p>
<p><span style="font-size: medium; font-family: georgia,palatino;">Day 2 <a href="https://yyhh.org/blog/2013/12/museum-and-cultural-tour-bulgaria-9-days-day-2-rila-monastery">Rila Monastery</a> + Buyala Church </span></p>
<p><span style="font-size: medium; font-family: georgia,palatino;">Day 3 Etara open-air museum + Veliko Tarnovo + Tsarevets Fortress</span></p>
<p><span style="font-size: medium; font-family: georgia,palatino;">Day 4 Rousse + Roussenski Lom</span></p>
<p><span style="font-size: medium; font-family: georgia,palatino;">Day 5 Madara Horseman + Stone Forest + Varna</span></p>
<p><span style="font-size: medium; font-family: georgia,palatino;">Day 6 Nessebar</span></p>
<p><span style="font-size: medium; font-family: georgia,palatino;">Day 7 Plovdiv</span></p>
<p><span style="font-size: medium; font-family: georgia,palatino;">Day 8 Bachkovo Monastery + Shiroka Luka + Devin</span></p>
<p><span style="font-size: medium; font-family: georgia,palatino;">Day 9 Devils Throat Cave + Yagodina Cave (return to Sofia) </span></p>
<p><span style="font-size: medium; font-family: georgia,palatino;">Day 10 Departure from Sofia airport</span></p>
<p><span style="font-family: georgia,palatino;"><strong>准备和安排</strong>:</span></p>
<p><span style="font-family: georgia,palatino;">这次选在保加利亚度假主要的原因是YY要在这里参加一个为期将近一周的学术会议, 还是安排一个旅游项目才对得起来回在飞机上消耗的差不多两天的时间和我们几个月前得的一年有效期的法国申根签证。</span></p>
<p><span style="font-family: georgia,palatino;">YY一向擅长懒人旅游攻略,绝不会花超过一两个周末的时间做功课。而这次YY懒人旅游攻略又上了一个新的层次。在参考了Steven Rick的十二天的保加利亚旅游路线之后,YY决定至少得有一周以上的假期,而且主要以看保加利亚的世界文化遗产为主。不过我们工作都挺忙的,所以给自己放一周假加上前后的周末也就差不多是极限了。YY又开始研究给HH定票的事情。八月是欧洲的旅游旺季,飞机票都其贵无比,而里程票根本就没有。幸好可以用积累了多年的信用卡的点数来换票还稍微便宜一些,但也花了快十三万点。</span></p>
<p><span style="font-family: georgia,palatino;">机票订下了以后,YY先在tripadvisor上找了一个最受好评的旅行社,让他们按以上要求安排一个合适的路线和提供估价。看了路线和估价后YY决定一切让旅行社包办,因为似乎不比自己安排贵多少,可是需要准备需要的事情和路上可能遇到的麻烦却少了很多。 另外旅行社也提供自驾游,但是这里物价便宜而我们又语言不通上包辆车确实是省时省心的好办法,特别是我们要去的一些地方非常偏远,用GPS也不好找,在迷路的时候可能会让两人都很紧张。话说平时辛苦挣钱可不就是为了好好花吗?于是在几个电子邮件往来加上付款加上付款之后,行程就订下来了。YY从网上买了一本保加利亚旅游指南( <a href="https://www.amazon.com/gp/product/0756670136/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0756670136&linkCode=as2&tag=yunyaoshome-20" id="static_txt_preview">Bulgaria (EYEWITNESS TRAVEL GUIDE)</a>就算是做完了所有必须的准备工作了。</span></p>
<p><span style="font-family: georgia,palatino;"><strong>基本行程</strong>:</span></p>
<p><span style="font-family: georgia,palatino;">第0天:HH被从索非亚机场接到索非亚希尔顿酒店,和在这里已经开了一周会的YY会合</span></p>
<p><span style="font-family: georgia,palatino;">第1天:<a href="https://yyhh.org/blog/2013/09/museum-and-cultural-tour-bulgaria-9-days-day-1-%E4%BF%9D%E5%8A%A0%E5%88%A9%E4%BA%9A%E6%96%87%E5%8C%96%E5%8E%86%E5%8F%B2%E4%B9%9D%E6%97%A5%E6%B8%B8-%E7%AC%AC%E4%B8%80%E5%A4%A9-%EF%BC%89">索非亚一日游</a> </span></p>
<p><span style="font-family: georgia,palatino;">第2天:Rila修道院及Boyala教堂 (住索非亚)</span></p>
<p><span style="font-family: georgia,palatino;">第3天:Etara民俗村, <span style="color: #000000;">查雷维茨皇宫</span>(住大特尔诺沃)</span></p>
<p><span style="font-family: georgia,palatino;">第4天: 鲁塞, Roussenski Lom</span></p>
<p><span style="font-family: georgia,palatino;">第5天: <span class="short_text">马达拉骑士(</span>Madara Horseman), 石头森林(Stone Forest) 瓦尔纳 (住瓦尔纳)</span></p>
<p><span style="font-family: georgia,palatino;">第6天: 内塞巴尔(Nessebar)一日游 (住内塞巴尔)</span></p>
<p><span style="font-family: georgia,palatino;">第7天: 普罗夫迪夫(Plovdiv)一日游 (住普罗夫迪夫)</span></p>
<p><span style="font-family: georgia,palatino;">第8天: Bachkovo Monastery - Shiroka Luka ,Devin</span></p>
<p><span style="font-family: georgia,palatino;">第9天:Devils Throat Cave and/or Yagodina (回索非亚)</span></p>
<p><span style="font-family: georgia,palatino;">第10天:回家</span></p>My First Encounter with Dirty Diaper2013-01-20T08:02:00-08:002013-01-20T08:02:00-08:00Yunyaotag:yyhh.org,2013-01-20:/blog/2013/01/my-first-encounter-with-dirty-diaper<p>Today I have encountered dirty diaper for the very first time in my life and it is not pretty. While doing routine cleaning of our guest bathroom, I was shocked to discover a stack of dirty diaper deposited in the trash can in our guest bathroom. I am still struggling …</p><p>Today I have encountered dirty diaper for the very first time in my life and it is not pretty. While doing routine cleaning of our guest bathroom, I was shocked to discover a stack of dirty diaper deposited in the trash can in our guest bathroom. I am still struggling on how to get rid of the terrible smell of the trash can after dumping the diapers. We do not have anyone in need of diaper in the house.</p>
<p>The only plausible explanation is that some guests attended our house party a few days ago left them behind. I thought that all the books on how to raise kids include education on basic etiquettes when visiting other people's house. But obviously I was wrong! </p>
<p>Out of curiosity, I searched online to see what is the expected diaper etiquette and found one <a href="https://www.nytimes.com/2012/07/29/fashion/the-gravy-train-ends-here-social-qs.html">here</a>. In summary, </p>
<blockquote>
<p>No one leaves dirty diapers in a guest bathroom. </p>
</blockquote>
<p>When visiting other people's house, one should "place the dirty diaper in a plastic bag (and twist-tie it shut), then place that bag inside your diaper bag, and ask your hosts where they would like you to dispose of it — presumably in a trash bin outdoors or an inside bin that’s emptied frequently. " Had my guests know and follow this protocol, I would not have to deal with the smelly trash can problem in the guest bathroom! </p>Free Airport Wi-Fi? -- Don't Count on It in Europe (Update on 08/25/2013)2012-10-26T18:28:00-07:002012-10-26T18:28:00-07:00Yunyaotag:yyhh.org,2012-10-26:/blog/2012/10/free-airport-wi-fi-dont-count-on-it-in-europe-update-on-08252013<p>I was traveling in Europe last week. While I enjoyed the history, culture and food very much, I was not a big fan of the airports. Like many people, I would like to stay connected most of the time, at least be able to access my emails and the Web …</p><p>I was traveling in Europe last week. While I enjoyed the history, culture and food very much, I was not a big fan of the airports. Like many people, I would like to stay connected most of the time, at least be able to access my emails and the Web from time to time (say every 2-3 hours). Unfortunately, passing through the following three airports in Europe is almost like returning back to stone age, in terms of connectivities.</p>
<p>Initially, I thought that CDG was pretty bad --- it does have free Wifi, but only for 15 minutes. Then I have to buy Wifi Access. However, at least I was able to browse the airport website for free. </p>
<p>Then MAD really made me a bit mad ---- no any sort of Wifi whatsoever available, free or not!</p>
<p>Now, FRA does provide 30 minutes free Wi-Fi. That's better, right? However, then you need to be able to receive text on your cell phone to get the pin. Some genius obviously believes that everyone visiting FRA has a cell phone and every cell phone has service in FRA. Unfortunately, my cell phone does not work here; so no luck for me. :( </p>
<p>Of course, I can always spend a few Euro to buy Wi-Fi access. However, free Wi-Fi in airports is almost a norm in today's world, isn't it? Even in developing countries such as El Salvador has free Wi-Fi in its airports. Unfortunately, I don't really see the situation will likely to improve in the near future. This note is just a reminder to myself to load up my laptop and iPhone with things that I can work/read while in the airports off the grid.</p>
<p>Update on 08/25/2013:------------------------------------------------</p>
<p>It turns out that not all European airports are that bad. During my recent trips to Europe, I have discovered that SOF (Sofia airport in Bulgaria) provides unlimited free Wi-Fi. MUC (Munich airport) provides 30 minutes free Wi-Fi and requires only an email address. Even FRA seems to have updated their genious approach of providing free Wi-Fi as well and requires only an email address now. Things are looking up! </p>Fixing Problems after Upgrading from Snow Leopard to Mountain Lion2012-09-24T00:28:00-07:002012-09-24T00:28:00-07:00Huahaitag:yyhh.org,2012-09-24:/blog/2012/09/fixing-problems-after-upgrading-from-snow-leopard-to-mountain-lion<p>The IT department of my company has been urging us Mac users to upgrade OSX to Lion a long time ago. After getting a few papers submitted last week, I finally got around to upgrade the Snow Leopard for my Macbook Pro work machine. Since I couldn't find Lion on …</p><p>The IT department of my company has been urging us Mac users to upgrade OSX to Lion a long time ago. After getting a few papers submitted last week, I finally got around to upgrade the Snow Leopard for my Macbook Pro work machine. Since I couldn't find Lion on Apple Store any more, I decided to go straight to Mountain Lion. The download and installation went smoothly, and most things seemed to work after the upgrade. Here are a few things that broke and the fixes I found.</p>
<h3>SSH with public key</h3>
<p>Mountain Lion changed a few things that broke password-free SSH access to and from OSX using public/private key pairs.</p>
<p><em>SSH from Mountain Lion to older SSH severs:</em></p>
<p>Mountain Lion upgraded openssh client to version 5.9p1. SSH to some older version of ssh server would not work ("Connection reset by peer") due to ciphers being too long. We can use a shorter one by adding to file "~/.ssh/config".</p>
<div class="highlight"><pre><span></span><code><span class="na">Host address\_of\_your\_ssh\_server </span>
<span class="na">Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour</span>
</code></pre></div>
<p>This problem is a known issue of openssh. I remember did this fix for my Linux machines.</p>
<p><em>SSH to Mountain Lion:</em></p>
<p>This one took me a lot of googling to find the <a href="https://www.hkwebentrepreneurs.com/2012/08/password-free-ssh-on-os-x-mountain-lion.html">cause</a>. Basically, Mountain Lion changed /etc/sshd_config file, so that openssh server only checks "~/.ssh/authorized_keys" now, instead of checking both that and "~/.ssh/authorized_keys2". To fix this, all we need to do is to rename the later to the former.</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>mv<span class="w"> </span>~/.ssh/authorized_keys2<span class="w"> </span>~/.ssh/authorized_keys
</code></pre></div>
<p>I find this change rather annoying, as it adds little benefit but creates a lot of troubles. For example, it broke my backup solution. I am using <a href="https://backuppc.sourceforge.net/">backuppc</a> to backup this Macbook to a central backup server through password-less SSH. It took me a while to debug when backuppc reported the problem.</p>
<h3>Homebrew</h3>
<p>Running "brew doctor" would show the information needed to fix homebrew. Basically, one had to install xcode 4.5, install command line tools, install X, and so on. A lot of downloads and wait time.</p>
<h3>Latex</h3>
<p>All the latex programs were not in path any more. Since my latex distribution was pretty old anyway. I chose to download the latest version of MacTex to install. It took a long time to download though.</p>
<h3>Lotus Notes</h3>
<p>Mountain Lion has its own Notes.app now, which conflicts with Lotus Notes. During upgrading, Lotus Notes will be moved to be under a directory "/Application/Lotus Notes Local" or something similar. All you need to do is to find Notes.app in there, and rename it something else, e.g. "LNotes.app", and move it back to be under "/Application".</p>
<h3>Java</h3>
<p>Java is not installed by default. When using applications require it, you will be prompted to install.</p>
<p>In conclusion, the upgrade from Snow Leopard to Mountain Lion works reasonablly OK, but be prepared to fix some problems. I think the upgrade experience of OSX is not better than Linux, as both require a similar amount of tweakings and searching solutions. However, upgrading in OSX costs money. If this was not on company tab and by their urging, I would not have bothered.</p>Pursue of the Perfect Solution for Cat Hair (1) --- Vacuum2012-08-27T00:40:00-07:002012-08-27T00:40:00-07:00Yunyaotag:yyhh.org,2012-08-27:/blog/2012/08/pursue-of-the-perfect-solution-for-cat-hair-1-vacuum<p>If you have one or more long hair cats at home, like our Mayori and Tom, you probably share the same dream as us --- a house without cat hair, at least a house without having cat hair everywhere.</p>
<p>Towards this dream, we have tried out various products. Here is a …</p><p>If you have one or more long hair cats at home, like our Mayori and Tom, you probably share the same dream as us --- a house without cat hair, at least a house without having cat hair everywhere.</p>
<p>Towards this dream, we have tried out various products. Here is a list of the various vacuums we have used.</p>
<p>1. <a href="https://www.amazon.com/gp/product/B002HFDLCK/ref=as_li_qf_sp_asin_il?ie=UTF8&camp=1789&creative=9325&creativeASIN=B002HFDLCK&linkCode=as2&tag=yunyaoshome-20">Hoover WindTunnel T-Series Rewind Upright Vacuum</a> </p>
<p><a href="https://www.amazon.com/gp/product/B002HFDLCK/ref=as_li_qf_sp_asin_il?ie=UTF8&camp=1789&creative=9325&creativeASIN=B002HFDLCK&linkCode=as2&tag=yunyaoshome-20"><img src="https://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&ASIN=B002HFDLCK&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=yunyaoshome-20" class="xygptcvqdiihxtebyxzn" /></a></p>
<p>It work pretty well on carpet, but it is not good for hard surface like hardwood floor --- the air blowing out of it makes the cat hair flying everywhere. It's bagless, so cleaning it is not a very pleasant task. Fortunately, Huahai is usually the one doing the cleaning work. 😛</p>
<p>Overall, this is a cheap and durable vacuum. Ours lasted for over 4 years with at least weekly usage. I would recommend getting it if you live in an all-carpet place or plan to use it in combination of another vacuum for hardwood/tile floor.</p>
<p>2. <a href="https://www.amazon.com/gp/product/B0006HUYGM/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=B0006HUYGM&linkCode=as2&tag=yunyaoshome-20">Eureka Hand-Held Vacuum</a></p>
<p><a href="https://www.amazon.com/gp/product/B0006HUYGM/ref=as_li_qf_sp_asin_il?ie=UTF8&camp=1789&creative=9325&creativeASIN=B0006HUYGM&linkCode=as2&tag=yunyaoshome-20"><img src="https://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&ASIN=B0006HUYGM&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=yunyaoshome-20" class="xygptcvqdiihxtebyxzn" /></a></p>
<p>As indicated by many online reviews, this is a surprisingly powerful vacuum given it's size. I brought it to do some quick cleaning job. However, I don't really like it that much --- it's not cordless, so using it for quick cleaning is not particularly convenient. It is too heavy and too noisy for me to do any thorough cleaning job. We have already got rid of it after having it sitting in our garage for over a year.</p>
<p>3. <a href="https://www.amazon.com/gp/product/B002IAY3N0/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=B002IAY3N0&linkCode=as2&tag=yunyaoshome-20">Electrolux Ergorapido Bagless Cordless Handheld/Stick Vacuum Cleaner</a></p>
<p><a href="https://www.amazon.com/gp/product/B002IAY3N0/ref=as_li_qf_sp_asin_il?ie=UTF8&camp=1789&creative=9325&creativeASIN=B002IAY3N0&linkCode=as2&tag=yunyaoshome-20"><img src="https://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&ASIN=B002IAY3N0&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=yunyaoshome-20" class="xygptcvqdiihxtebyxzn" /></a></p>
<p>I like this vacuum a lot --- it is lightweighted and dual-usage. This is the one we have been using for nearly 5 years for quick cleaning job. (BTW, if you are Costco member, you can get it for lower price from Costoc than from Amazon.com, especially when it is on sale with coupon).</p>
<p>4. <a href="https://www.amazon.com/gp/product/B002TW208M/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=211189&creative=373489&creativeASIN=B002TW208M&link_code=as3&tag=yunyaoshome-20" id="static_txt_preview">Miele Olympus S2120 Canister Vacuum Cleaner</a></p>
<p>This one is expensive but works like a dream, especially for cat hair as the air is blowing from the top. It is very powerful yet very quite. Great for both hardwood floor and carpet (with the <a href="https://www.amazon.com/gp/product/B000HVHY10/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=211189&creative=373489&creativeASIN=B000HVHY10&link_code=as3&tag=yunyaoshome-20" id="static_txt_preview">Miele Floor Brush</a>). This will be the vacuum that we are going to use for many year to come.</p>
<p>5. <a href="https://www.amazon.com/gp/product/B005GK3IVW/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=211189&creative=373489&creativeASIN=B005GK3IVW&link_code=as3&tag=yunyaoshome-20" id="static_txt_preview">iRobot Roomba 770</a></p>
<p><a href="https://www.amazon.com/gp/product/B005GK3IVW/ref=as_li_qf_sp_asin_il?ie=UTF8&camp=1789&creative=9325&creativeASIN=B005GK3IVW&linkCode=as2&tag=yunyaoshome-20"><img src="https://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&ASIN=B005GK3IVW&Format=_SL160_&ID=AsinImage&MarketPlace=US&ServiceVersion=20070822&WS=1&tag=yunyaoshome-20" class="xygptcvqdiihxtebyxzn" /></a></p>
<p>Even with Miele, we still need additional help --- Roomba is the perfect solution for busy people like us. If you had an old Roomba before and found cleaning it a pain, please take another look at it --- the cleaning tools coming with the newer generations of Roomba makes the cleaning much easier than before. This one is also a keeper.</p>High Resolution Image for Pdflatex2012-08-09T20:31:00-07:002012-08-09T20:31:00-07:00Yunyaotag:yyhh.org,2012-08-09:/blog/2012/08/high-resolution-image-for-pdflatex<p>While preparing the camera-ready version for our CIKM demo, my colleagues and I found that the screenshot included in our paper appeared to be fairly blurry in the pdf version, even though the original .jpg file looks fine.</p>
<p>I searched online to try to find the solutions. After a few …</p><p>While preparing the camera-ready version for our CIKM demo, my colleagues and I found that the screenshot included in our paper appeared to be fairly blurry in the pdf version, even though the original .jpg file looks fine.</p>
<p>I searched online to try to find the solutions. After a few trials and errors, adding the following two lines into the beginning of the latex files (before <span style="font-family: courier new,courier;">\begin{document}</span>) did the trick.</p>
<p><span style="font-family: courier new,courier;">\pdfpxdimen=1in</span></p>
<p><span style="font-family: courier new,courier;">\divide\pdfpxdimen by 300</span></p>
<p>The above solution basically forces the pdf file generated at a higher resolution (in this case, 300 dpi) so that everything, including the images, looks better.</p>
<p>The original solution comes from <a href="https://stackoverflow.com/questions/5041492/latex-how-to-set-the-pdf-dpi-when-using-images">here</a>.</p>Screen Saver Option Disabled on Windows 7/XP2012-08-01T17:07:00-07:002012-08-01T17:07:00-07:00Yunyaotag:yyhh.org,2012-08-01:/blog/2012/08/screen-saver-option-disabled-on-windows-7xp<p>For unknown reason, my machines would suddenly disable their screen saver options (e.g. with the "on resume, display log on screen" check box grayed out). Whenever this happens, it would trigger the security alert and I will get a warning from the IT department to fix the issue.</p>
<p>I …</p><p>For unknown reason, my machines would suddenly disable their screen saver options (e.g. with the "on resume, display log on screen" check box grayed out). Whenever this happens, it would trigger the security alert and I will get a warning from the IT department to fix the issue.</p>
<p>I am tired of having to hunting down the answer every time and therefore I am recording it here.</p>
<p>The following method is what usually works for me.</p>
<p>1. Go to "Start" type in "regedit"</p>
<p>2. Go to</p>
<p>[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Control Panel\Desktop]</p>
<p>Delete the "ScreenSaverIsSecure" value.</p>Machine Learning That Matters2012-07-26T21:20:00-07:002012-07-26T21:20:00-07:00Yunyaotag:yyhh.org,2012-07-26:/blog/2012/07/machine-learning-that-matters<p>I happen to come across this excellent article from this year's ICML on <a href="https://www.wkiri.com/research/papers/wagstaff-MLmatters-12.pdf">Machine Learning that Matters</a>. I encourage everyone, especially computer science Ph.D students, to read it.</p>
<p>As an industrial researcher who draws a lot of job satisfaction by making both scientific and practical impact, I completely agree …</p><p>I happen to come across this excellent article from this year's ICML on <a href="https://www.wkiri.com/research/papers/wagstaff-MLmatters-12.pdf">Machine Learning that Matters</a>. I encourage everyone, especially computer science Ph.D students, to read it.</p>
<p>As an industrial researcher who draws a lot of job satisfaction by making both scientific and practical impact, I completely agree with the author on that we need to work on research "that matters", not just for machine learning. Many of the challenges outlined by the author are applicable to many other areas in computer science as well. </p>
<p>If you have ever encounter questions from reviewers on the motivation of your work, reading this article can help you think about why your research does (or does not) matter.</p>
<p>I would also strongly encourage all computer science Ph.D students to do at least one summer internship (especially in an industrial research lab). You will make new friends and get to work on cool projects. Most importantly, it can truly broaden your herizon and allow you to understand what kind of research matters.</p>Commonly Used Forms for Home Remodeling/Repairs2012-06-09T00:49:00-07:002012-06-09T00:49:00-07:00Yunyaotag:yyhh.org,2012-06-09:/blog/2012/06/commonly-used-forms-for-home-remodelingrepairs<p>As a new home owner, we have been going through a lot of home remodeling and repair projects. I found myself often search online for the same set of forms again and again. This post is to record all the forms that I often use and sometimes difficult to found …</p><p>As a new home owner, we have been going through a lot of home remodeling and repair projects. I found myself often search online for the same set of forms again and again. This post is to record all the forms that I often use and sometimes difficult to found.</p>
<p>1. Simple contract (To be updated)</p>
<p>2. <a href="https://www.box.com/s/0ca14f155701f8021b9b">Payment forms (including those for both pregressive payments and final payments)</a></p>Baby Cloth Shoe - First Attempt2012-06-01T00:50:00-07:002012-06-01T00:50:00-07:00Yunyaotag:yyhh.org,2012-06-01:/blog/2012/06/baby-cloth-shoe-first-attempt<p>As a busy computer scientist, I don't really get to exercise my inner Martha too much. But I did somehow manage to make my first ever attempt on sewing projects --- baby cloth shoes (as gift for my niece).</p>
<p>Here is the result --- I added the handmade pompom for extra cuteness …</p><p>As a busy computer scientist, I don't really get to exercise my inner Martha too much. But I did somehow manage to make my first ever attempt on sewing projects --- baby cloth shoes (as gift for my niece).</p>
<p>Here is the result --- I added the handmade pompom for extra cuteness. :)</p>
<p><img src="https://farm5.staticflickr.com/4034/4260345214_857f3812b3.jpg" width="500" height="333" alt="baby cloth shoe" /></p>
<p><img src="https://farm5.staticflickr.com/4018/4259588689_e1288a85ba.jpg" width="500" height="333" alt="baby cloth shoe" /></p>
<p>The detailed steps can be found from the following link</p>
<p><a href="https://www.michaelmillerfabrics.com/blog/cloth_shoe.pdf">https://www.michaelmillerfabrics.com/blog/cloth_shoe.pdf</a></p>
<p>I found the instructions there very easy to follow even for first-timers like myself. However, this is a fairly time consuming project (at least for me). I may do it again, but probably only when I am really bored. :-P</p>Cat Photography with iPhone 4s2012-05-19T01:19:00-07:002012-05-19T01:19:00-07:00Yunyaotag:yyhh.org,2012-05-19:/blog/2012/05/cat-photography-with-iphone-4s<p>It has been a while since Yunyao got her iPhone 4s, which is known for its "superb" camera --- "<span class="st">8MP camera with all-new optics also shoots 1080p HD video"</span>. 8MP on a cell phone sounds really impressive, does it? Maybe she finally can leave her big heavy Pentax for a while …</p><p>It has been a while since Yunyao got her iPhone 4s, which is known for its "superb" camera --- "<span class="st">8MP camera with all-new optics also shoots 1080p HD video"</span>. 8MP on a cell phone sounds really impressive, does it? Maybe she finally can leave her big heavy Pentax for a while?</p>
<p>So she tested its performance with her favoriate model: Mayori.</p>
<p>First, let's test it under natural light setting:</p>
<p>"What's up?"</p>
<p><img src="https://farm8.staticflickr.com/7194/7034156259_2dee7491ac.jpg" width="375" height="500" alt="Mayori" /></p>"Count Number of Maps: First Exercises of Conceptual Mathematics in Clojure"2012-05-16T20:33:00-07:002012-05-16T20:33:00-07:00Huahaitag:yyhh.org,2012-05-16:/blog/2012/05/count-number-of-maps-first-exercises-of-conceptual-mathematics-in-clojure<p>As <a href="https://yyhh.org/blog/2012/04/start-learning-category-theory">previously mentioned</a>, I am learning category theory, beginning with <a href="https://en.wikipedia.org/wiki/William_Lawvere">Lawvere</a>'s <a href="https://www.amazon.com/Conceptual-Mathematics-First-Introduction-Categories/dp/052171916X">Conceptual Mathematics</a> book. This is a very elementry book that assumes almost nothing as a background. However, it is still a math book, which requires doing some exercises. Since the book provides no answer to exercises, I decide …</p><p>As <a href="https://yyhh.org/blog/2012/04/start-learning-category-theory">previously mentioned</a>, I am learning category theory, beginning with <a href="https://en.wikipedia.org/wiki/William_Lawvere">Lawvere</a>'s <a href="https://www.amazon.com/Conceptual-Mathematics-First-Introduction-Categories/dp/052171916X">Conceptual Mathematics</a> book. This is a very elementry book that assumes almost nothing as a background. However, it is still a math book, which requires doing some exercises. Since the book provides no answer to exercises, I decide to make my own and post them here as I did them. Hopefully someone will find them useful.</p>
<p>Since a large part of category theory is constructive, I will try to implement the concepts computationally in order to understand them better. Cateogry theory has been implemented as types in some strong typed languages such as <a href="https://www.cs.man.ac.uk/~david/categories/">ML</a> and Haskell. I think it would be fun to see how it would look in a dynamic typed language such as Clojure. Even if I could not go very far, at minimum, I will have a mechanical means to check my solutions to the exercises.</p>
<p>The first article of the book deals with the category of sets, and the main topic is about maps between sets. The second article talks about isomorphisms and related concepts. Some exercises (on page 20 and 47) are of the "how many maps are there" variety. Here are some Clojure code I used to calculate the results.</p>
<p><font face="monospace"><br /><span><font color="#912f11">(</font></span><span><font color="#800090">ns</font></span> CM.core<br /> <font color="#cd3700">(</font><span><font color="#1f3f81"><b>:use</b></font></span> clojure.math.combinatorics<font color="#cd3700">)</font><span><font color="#912f11">)</font></span> <p><span><font color="#912f11">(</font></span><span><font color="#800090">defn</font></span> all-maps<br /> <span><font color="#077807">"Return a lazy sequence of all the possible maps from a domain to </font></span><br /><span><font color="#077807"> a codomain"</font></span><br /> <span><font color="#912f11">[</font></span>domain codomain<span><font color="#912f11">]</font></span><br /> <font color="#cd3700">(</font><span><font color="#1f3f81"><b>map</b></font></span> <span><font color="#912f11">#(</font></span><span><font color="#007080">conj</font></span> <span><font color="#912f11">{</font></span><span><font color="#1f3f81"><b>:domain</b></font></span> domain <span><font color="#1f3f81"><b>:codomain</b></font></span> codomain<span><font color="#912f11">}</font></span> <span><font color="#912f11">[</font></span><span><font color="#1f3f81"><b>:rule</b></font></span> <span><font color="#912f11">(</font></span><span><font color="#007080">zipmap</font></span> %<span><font color="#077807">1</font></span> %<span><font color="#077807">2</font></span><span><font color="#912f11">)])</font></span><br /> <font color="#ee9a00">(</font><span><font color="#007080">repeat</font></span> domain<font color="#ee9a00">)</font><br /> <font color="#ee9a00">(</font><span><font color="#007080">apply</font></span> <span><font color="#007080">cartesian-product</font></span> <font color="#cdcd00">(</font><span><font color="#007080">repeat</font></span> <font color="#698b22">(</font><span><font color="#007080">count</font></span> domain<font color="#698b22">)</font> codomain<font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><span><font color="#912f11">)</font></span></p> <p><span><font color="#912f11">(</font></span><span><font color="#800090">defn</font></span> same-mapping-rule?<br /> <span><font color="#077807">"Return true if two mapping rules give the same results for a domain"</font></span><br /> <span><font color="#912f11">[</font></span>domain r1 r2<span><font color="#912f11">]</font></span><br /> <font color="#cd3700">(</font><span><font color="#007080">every?</font></span> <span><font color="#007080">identity</font></span> <font color="#ee9a00">(</font><span><font color="#1f3f81"><b>map</b></font></span> <span><font color="#007080">=</font></span> <font color="#cdcd00">(</font><span><font color="#1f3f81"><b>map</b></font></span> r1 domain<font color="#cdcd00">)</font> <font color="#cdcd00">(</font><span><font color="#1f3f81"><b>map</b></font></span> r2 domain<font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><span><font color="#912f11">)</font></span></p> <p><span><font color="#912f11">(</font></span><span><font color="#800090">defn</font></span> same-map?<br /> <span><font color="#077807">"Return true if two maps are the same"</font></span><br /> <span><font color="#912f11">[</font></span>f g<span><font color="#912f11">]</font></span><br /> <font color="#cd3700">(</font><span><font color="#800090">and</font></span> <font color="#ee9a00">(</font><span><font color="#007080">=</font></span> <font color="#cdcd00">(</font><span><font color="#1f3f81"><b>:domain</b></font></span> f<font color="#cdcd00">)</font> <font color="#cdcd00">(</font><span><font color="#1f3f81"><b>:domain</b></font></span> g<font color="#cdcd00">)</font><font color="#ee9a00">)</font><br /> <font color="#ee9a00">(</font><span><font color="#007080">=</font></span> <font color="#cdcd00">(</font><span><font color="#1f3f81"><b>:codomain</b></font></span> f<font color="#cdcd00">)</font> <font color="#cdcd00">(</font><span><font color="#1f3f81"><b>:codomain</b></font></span> g<font color="#cdcd00">)</font><font color="#ee9a00">)</font><br /> <font color="#ee9a00">(</font>same-mapping-rule? <font color="#cdcd00">(</font><span><font color="#1f3f81"><b>:domain</b></font></span> f<font color="#cdcd00">)</font> <font color="#cdcd00">(</font><span><font color="#1f3f81"><b>:rule</b></font></span> f<font color="#cdcd00">)</font> <font color="#cdcd00">(</font><span><font color="#1f3f81"><b>:rule</b></font></span> g<font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><span><font color="#912f11">)</font></span></p> <p><span><font color="#912f11">(</font></span><span><font color="#800090">defn</font></span> compose-map<br /> <span><font color="#077807">"Return a composed map, also ensure domains and codomains match"</font></span><br /> <span><font color="#912f11">[</font></span>f g<span><font color="#912f11">]</font></span><br /> <font color="#cd3700">(</font><span><font color="#912f11">if</font></span> <font color="#ee9a00">(</font><span><font color="#007080">=</font></span> <font color="#cdcd00">(</font><span><font color="#1f3f81"><b>:codomain</b></font></span> g<font color="#cdcd00">)</font> <font color="#cdcd00">(</font><span><font color="#1f3f81"><b>:domain</b></font></span> f<font color="#cdcd00">)</font><font color="#ee9a00">)</font><br /> <span><font color="#912f11">{</font></span><span><font color="#1f3f81"><b>:domain</b></font></span> <span><font color="#912f11">(</font></span><span><font color="#1f3f81"><b>:domain</b></font></span> g<span><font color="#912f11">)</font></span>, <span><font color="#1f3f81"><b>:codomain</b></font></span> <span><font color="#912f11">(</font></span><span><font color="#1f3f81"><b>:codomain</b></font></span> f<span><font color="#912f11">)</font></span>, <br /> <span><font color="#1f3f81"><b>:rule</b></font></span> <span><font color="#912f11">(</font></span><span><font color="#007080">comp</font></span> <font color="#cd3700">(</font><span><font color="#1f3f81"><b>:rule</b></font></span> f<font color="#cd3700">)</font> <font color="#cd3700">(</font><span><font color="#1f3f81"><b>:rule</b></font></span> g<font color="#cd3700">)</font><span><font color="#912f11">)}</font></span><br /> <font color="#ee9a00">(</font><span><font color="#1f3f81"><b>throw</b></font></span> <font color="#cdcd00">(</font>Exception. <span><font color="#077807">"Cannot compose, domain does not match codomain"</font></span><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><span><font color="#912f11">)</font></span></p> <p><span><font color="#912f11">(</font></span><span><font color="#800090">defn</font></span> composed? <br /> <span><font color="#077807">"Return true if map f and map g compose to map c"</font></span><br /> <span><font color="#912f11">[</font></span>f g c<span><font color="#912f11">]</font></span><br /> <font color="#cd3700">(</font>same-map? c <font color="#ee9a00">(</font>compose-map f g<font color="#ee9a00">)</font><font color="#cd3700">)</font><span><font color="#912f11">)</font></span><br /> <br /><span><font color="#912f11">(</font></span><span><font color="#800090">defn</font></span> idempotent? <br /> <span><font color="#077807">"Return true if the given map return the same results as when it is </font></span><br /><span><font color="#077807"> applied twice"</font></span><br /> <span><font color="#912f11">[</font></span>f<span><font color="#912f11">]</font></span><br /> <font color="#cd3700">(</font>composed? f f f<font color="#cd3700">)</font><span><font color="#912f11">)</font></span></p> <p><span><font color="#912f11">(</font></span><span><font color="#800090">defn</font></span> solutions<br /> <span><font color="#077807">"Return a lazy sequence of maps that match the given predicates and go</font></span><br /><span><font color="#077807"> from the given domain to given codomain"</font></span><br /> <span><font color="#912f11">[</font></span>pred domain codomain<span><font color="#912f11">]</font></span><br /> <font color="#cd3700">(</font><span><font color="#1f3f81"><b>filter</b></font></span> pred <font color="#ee9a00">(</font>all-maps domain codomain<font color="#ee9a00">)</font><font color="#cd3700">)</font><span><font color="#912f11">)</font></span></p> <p><span><font color="#912f11">(</font></span><span><font color="#800090">defn</font></span> idempotent-maps<br /> <span><font color="#077807">"Return a lazy sequence of idempotent maps between a domain and itself </font></span><br /><span><font color="#077807"> as the codomain"</font></span><br /> <span><font color="#912f11">[</font></span>domain<span><font color="#912f11">]</font></span><br /> <font color="#cd3700">(</font>solutions idempotent? domain domain<font color="#cd3700">)</font><span><font color="#912f11">)</font></span></p> <p><span><font color="#912f11">(</font></span><span><font color="#800090">defn</font></span> choice<br /> <span><font color="#077807">"Return a lazy sequence of maps that are applied before the given map to</font></span><br /><span><font color="#077807"> return the same results as the given composed map, i.e. solution of </font></span><br /><span><font color="#077807"> choice problem"</font></span><br /> <span><font color="#912f11">[</font></span>f c<span><font color="#912f11">]</font></span><br /> <font color="#cd3700">(</font>solutions <span><font color="#912f11">#(</font></span>composed? f <span><font color="#912f11">%</font></span> c<span><font color="#912f11">)</font></span> <font color="#ee9a00">(</font><span><font color="#1f3f81"><b>:domain</b></font></span> c<font color="#ee9a00">)</font> <font color="#ee9a00">(</font><span><font color="#1f3f81"><b>:domain</b></font></span> f<font color="#ee9a00">)</font><font color="#cd3700">)</font><span><font color="#912f11">)</font></span></p> <p><span><font color="#912f11">(</font></span><span><font color="#800090">defn</font></span> determination<br /> <span><font color="#077807">"Return a lazy sequence of maps that are applied after the given map to</font></span><br /><span><font color="#077807"> return the same results as the given composed map, i.e. solution of </font></span><br /><span><font color="#077807"> determination problem"</font></span><br /> <span><font color="#912f11">[</font></span>g c<span><font color="#912f11">]</font></span><br /> <font color="#cd3700">(</font>solutions <span><font color="#912f11">#(</font></span>composed? <span><font color="#912f11">%</font></span> g c<span><font color="#912f11">)</font></span> <font color="#ee9a00">(</font><span><font color="#1f3f81"><b>:codomain</b></font></span> g<font color="#ee9a00">)</font> <font color="#ee9a00">(</font><span><font color="#1f3f81"><b>:codomain</b></font></span> c<font color="#ee9a00">)</font><font color="#cd3700">)</font><span><font color="#912f11">)</font></span></p> <p><span><font color="#912f11">(</font></span><span><font color="#800090">defn</font></span> section<br /> <span><font color="#077807">"Return a lazy sequence of maps that are sections of the given map"</font></span><br /> <span><font color="#912f11">[</font></span>f<span><font color="#912f11">]</font></span><br /> <font color="#cd3700">(</font>choice f <span><font color="#912f11">{</font></span><span><font color="#1f3f81"><b>:domain</b></font></span> <span><font color="#912f11">(</font></span><span><font color="#1f3f81"><b>:codomain</b></font></span> f<span><font color="#912f11">)</font></span> <span><font color="#1f3f81"><b>:codomain</b></font></span> <span><font color="#912f11">(</font></span><span><font color="#1f3f81"><b>:codomain</b></font></span> f<span><font color="#912f11">)</font></span> <span><font color="#1f3f81"><b>:rule</b></font></span> <span><font color="#007080">identity</font></span><span><font color="#912f11">}</font></span><font color="#cd3700">)</font><span><font color="#912f11">)</font></span></p> <p><span><font color="#912f11">(</font></span><span><font color="#800090">defn</font></span> retraction<br /> <span><font color="#077807">"Return a lazy sequence of maps that are retractions of the given map"</font></span><br /> <span><font color="#912f11">[</font></span>f<span><font color="#912f11">]</font></span><br /> <font color="#cd3700">(</font>determination f <span><font color="#912f11">{</font></span><span><font color="#1f3f81"><b>:domain</b></font></span> <span><font color="#912f11">(</font></span><span><font color="#1f3f81"><b>:domain</b></font></span> f<span><font color="#912f11">)</font></span> <span><font color="#1f3f81"><b>:codomain</b></font></span> <span><font color="#912f11">(</font></span><span><font color="#1f3f81"><b>:domain</b></font></span> f<span><font color="#912f11">)</font></span> <span><font color="#1f3f81"><b>:rule</b></font></span> <span><font color="#007080">identity</font></span><span><font color="#912f11">}</font></span><font color="#cd3700">)</font><span><font color="#912f11">)</font></span></p> <p><span><font color="#912f11">(</font></span><span><font color="#800090">defn</font></span> composed-solution-pairs <br /> <span><font color="#077807">"Return a lazy sequence of pairs of maps that compose to a given map, with</font></span><br /><span><font color="#077807"> the given shared domain in between"</font></span><br /> <span><font color="#912f11">[</font></span>domain c<span><font color="#912f11">]</font></span><br /> <font color="#cd3700">(</font><span><font color="#1f3f81"><b>filter</b></font></span> <br /> <span><font color="#912f11">#(</font></span>composed? <span><font color="#912f11">(</font></span><span><font color="#007080">first</font></span> %<span><font color="#912f11">)</font></span> <span><font color="#912f11">(</font></span><span><font color="#007080">last</font></span> %<span><font color="#912f11">)</font></span> c<span><font color="#912f11">)</font></span><br /> <font color="#ee9a00">(</font><span><font color="#1f3f81"><b>for</b></font></span> <span><font color="#912f11">[</font></span>g <span><font color="#912f11">(</font></span>all-maps <font color="#cd3700">(</font><span><font color="#1f3f81"><b>:domain</b></font></span> c<font color="#cd3700">)</font> domain<span><font color="#912f11">)</font></span><br /> f <span><font color="#912f11">(</font></span>all-maps domain <font color="#cd3700">(</font><span><font color="#1f3f81"><b>:codomain</b></font></span> c<font color="#cd3700">)</font><span><font color="#912f11">)]</font></span><br /> <span><font color="#912f11">[</font></span>f g<span><font color="#912f11">]</font></span><font color="#ee9a00">)</font><font color="#cd3700">)</font><span><font color="#912f11">)</font></span><br /> <br /><span><font color="#912f11">(</font></span><span><font color="#800090">defn</font></span> retraction-section-pairs<br /> <span><font color="#077807">"Return a lazy sequence of pairs of maps r and s, where r goes from domain</font></span><br /><span><font color="#077807"> X to domain A, s goes from A to X, and r of s is the same as the identity </font></span><br /><span><font color="#077807"> map on A."</font></span><br /> <span><font color="#912f11">[</font></span>A X<span><font color="#912f11">]</font></span><br /> <font color="#cd3700">(</font>composed-solution-pairs X <span><font color="#912f11">{</font></span><span><font color="#1f3f81"><b>:domain</b></font></span> A <span><font color="#1f3f81"><b>:codomain</b></font></span> A <span><font color="#1f3f81"><b>:rule</b></font></span> <span><font color="#007080">identity</font></span><span><font color="#912f11">}</font></span><font color="#cd3700">)</font><span><font color="#912f11">)</font></span></p> <p><span><font color="#912f11">(</font></span><span><font color="#912f11">def</font></span> A <span><font color="#912f11">#{</font></span><span><font color="#077807">"John"</font></span> <span><font color="#077807">"Mary"</font></span> <span><font color="#077807">"Sam"</font></span><span><font color="#912f11">})</font></span><br /><span><font color="#912f11">(</font></span><span><font color="#912f11">def</font></span> B <span><font color="#912f11">#{</font></span><span><font color="#077807">"eggs"</font></span> <span><font color="#077807">"coffee"</font></span><span><font color="#912f11">})</font></span><br /><span><font color="#912f11">(</font></span><span><font color="#912f11">def</font></span> U <span><font color="#912f11">#{</font></span><span><font color="#1f3f81"><b>:b</b></font></span> <span><font color="#1f3f81"><b>:p</b></font></span> <span><font color="#1f3f81"><b>:q</b></font></span> <span><font color="#1f3f81"><b>:r</b></font></span> <span><font color="#1f3f81"><b>:s</b></font></span><span><font color="#912f11">})</font></span><br /><span><font color="#912f11">(</font></span><span><font color="#912f11">def</font></span> D <span><font color="#912f11">#{</font></span><span><font color="#077807">0</font></span> <span><font color="#077807">1</font></span><span><font color="#912f11">})</font></span></p> <p><span><font color="#912f11">(</font></span><span><font color="#912f11">def</font></span> one-a <span><font color="#912f11">{</font></span><span><font color="#1f3f81"><b>:domain</b></font></span> A <span><font color="#1f3f81"><b>:codomain</b></font></span> A <span><font color="#1f3f81"><b>:rule</b></font></span> <span><font color="#007080">identity</font></span><span><font color="#912f11">})</font></span><br /><span><font color="#912f11">(</font></span><span><font color="#912f11">def</font></span> one-b <span><font color="#912f11">{</font></span><span><font color="#1f3f81"><b>:domain</b></font></span> B <span><font color="#1f3f81"><b>:codomain</b></font></span> B <span><font color="#1f3f81"><b>:rule</b></font></span> <span><font color="#007080">identity</font></span><span><font color="#912f11">})</font></span><br /><span><font color="#912f11">(</font></span><span><font color="#912f11">def</font></span> one-d <span><font color="#912f11">{</font></span><span><font color="#1f3f81"><b>:domain</b></font></span> D <span><font color="#1f3f81"><b>:codomain</b></font></span> D <span><font color="#1f3f81"><b>:rule</b></font></span> <span><font color="#007080">identity</font></span><span><font color="#912f11">})</font></span></p> <p><span><font color="#912f11">(</font></span><span><font color="#912f11">def</font></span> g <span><font color="#912f11">{</font></span><span><font color="#1f3f81"><b>:domain</b></font></span> U <span><font color="#1f3f81"><b>:codomain</b></font></span> D <span><font color="#1f3f81"><b>:rule</b></font></span> <span><font color="#912f11">{</font></span><span><font color="#1f3f81"><b>:b</b></font></span> <span><font color="#077807">0</font></span> <span><font color="#1f3f81"><b>:p</b></font></span> <span><font color="#077807">0</font></span> <span><font color="#1f3f81"><b>:q</b></font></span> <span><font color="#077807">0</font></span> <span><font color="#1f3f81"><b>:r</b></font></span> <span><font color="#077807">1</font></span> <span><font color="#1f3f81"><b>:s</b></font></span> <span><font color="#077807">1</font></span><span><font color="#912f11">}})</font></span><br /><span><font color="#912f11">(</font></span><span><font color="#912f11">def</font></span> f <span><font color="#912f11">{</font></span><span><font color="#1f3f81"><b>:domain</b></font></span> D <span><font color="#1f3f81"><b>:codomain</b></font></span> U <span><font color="#1f3f81"><b>:rule</b></font></span> <span><font color="#912f11">{</font></span><span><font color="#077807">0</font></span> <span><font color="#1f3f81"><b>:b</b></font></span> <span><font color="#077807">1</font></span> <span><font color="#1f3f81"><b>:r</b></font></span><span><font color="#912f11">}})</font></span><br /><span><font color="#912f11">(</font></span><span><font color="#912f11">def</font></span> u <span><font color="#912f11">{</font></span><span><font color="#1f3f81"><b>:domain</b></font></span> D <span><font color="#1f3f81"><b>:codomain</b></font></span> U <span><font color="#1f3f81"><b>:rule</b></font></span> <span><font color="#912f11">{</font></span><span><font color="#077807">0</font></span> <span><font color="#1f3f81"><b>:b</b></font></span> <span><font color="#077807">1</font></span> <span><font color="#1f3f81"><b>:b</b></font></span><span><font color="#912f11">}})</font></span><br /></p></font></p>
<p>In this code, maps in category theory are simply implemented as Clojure's map data structure. So a map in category theory will have three keys in the implementation, a :domain, a :codomain, and a :rule. The first two are sets, and the last one is a function, which defines the actual mapping rule from domain to codomain.</p>
<p><strong><em>Article 1, Exercise 2.</em></strong> How many different maps $f$ are there with domain $A$ and codomain $B$?</p>
<p>Domain $A$ has 3 elements "John", "Mary" and "Sam", codomain $B$ has 2 elements "eggs" and "coffee". To find the answer, evaluate this in REPL:</p>
<p>CM.core=> (count (all-maps A B))</p>
<p>8</p>
<p>For our domain of 3 elements and codomain of 2 elements, the number of maps is 8, or $2^3$. If we try some other domains (Exercise 3, 4, 5), we will soon discover that the answer is always $$n^m$$ where $n$ and $m$ is the size of codomain and domain, respectively. The reason is simple: each and every element of the domain can pick any one of the elment of codomain as the target. So the first element in the domain has $n$ choices of target, the second can pick $n$ choices as well, and so on, doing this $m$ times, and multipling them all up gives the answer.</p>
<p><strong><em>Article 1, Exercise 6.</em></strong> How many different maps $A \stackrel{f}{\longrightarrow} A$ satisfy $f \circ f = f$?</p>
<p>Basically, this is asking how many maps are there that composes with itself to get the same results as itself. Such maps are called idempotent maps. The code to find the answer:</p>
<p>CM.core=> (count (idempotent-maps A))</p>
<p>10</p>
<p>Let's try Exercise 7, the number of idempotent maps for $B$:</p>
<p>CM.core=> (count (idempotent-maps B))</p>
<p>3</p>
<p>How about a domain with 4, 5 or 6 elments?</p>
<p>CM.core=> (count (idempotent-maps #{1 2 3 4}))</p>
<p>41</p>
<p>CM.core=> (count (idempotent-maps #{1 2 3 4 5}))</p>
<p>196</p>
<p>CM.core=> (count (idempotent-maps #{1 2 3 4 5 6}))</p>
<p>1057</p>
<p>Hmm, 3, 10, 41, 196, 1057, ... what is the regularity here? It is not obvious. Let's examine the details of the first two maps and look at their rules:</p>
<p>CM.core=> (map :rule (idempotent-maps B))</p>
<p>({"eggs" "coffee", "coffee" "coffee"} {"eggs" "eggs", "coffee" "coffee"} {"eggs" "eggs", "coffee" "eggs"})</p>
<p>CM.core=> (map :rule (idempotent-maps A))</p>
<p>({"Sam" "John", "Mary" "John", "John" "John"} {"Sam" "Sam", "Mary" "John", "John" "John"} {"Sam" "John", "Mary" "Mary", "John" "John"} {"Sam" "Mary", "Mary" "Mary", "John" "John"} {"Sam" "Sam", "Mary" "Mary", "John" "John"} {"Sam" "Sam", "Mary" "Sam", "John" "John"} {"Sam" "Mary", "Mary" "Mary", "John" "Mary"} {"Sam" "Sam", "Mary" "Mary", "John" "Mary"} {"Sam" "Sam", "Mary" "Mary", "John" "Sam"} {"Sam" "Sam", "Mary" "Sam", "John" "Sam"})</p>
<p>The regularity seems to be this: either an element must map to itself, or it must map to an elment that maps to itself. For example, for domain $B$, if "eggs" maps to itself, "coffee" must either map to "coffee" or to "eggs". Cross mappings are not allowed. So "eggs" maps to "coffee" and "coffee" maps to "eggs" is illegal.</p>
<p>Given this regularity, let's work out a formula for the number of idempotent maps. For a 2 element domain, there are two cases: both elements map to themselves, or both map to one element, so the total is ${2 \choose 2} + {2 \choose 1} = 3$; For a 3 element domain, there are three cases: all map to themselves, two map to themselves and the third maps to one of them, or all three map to one, total is ${3 \choose 3} + {3 \choose 2}{2^1} + {3 \choose 1} = 1+ 3\times2 + 3 = 10$; For 4 element domain, four cases: all map to themselves, three map to themselves and the fouth to one of three, two map to themselves and remaining two map to those two, or all map to one: ${4 \choose 4} + {4 \choose 3}{3^1} + {4 \choose 2}{2^2} + {4 \choose 1} = 1 + 4\times3 + 6\times4 + 4 = 41$; and so on... A general formula for the number of idempotent maps emerges, it is $$\sum\limits_{k=0}^n {n \choose k}k^{n-k}$$ Where $n$ is the size of the domain. Notice that we used the results of the previous exercise in the derivation: the number of maps is $|codomain|^{|domain|}$.</p>
<p><strong><em>Article 1, Exercise 8.</em></strong> Can you find a pair of maps $A \stackrel{f}{\longrightarrow} B \stackrel{g}{\longrightarrow} A$ for which $g \circ f = 1_A$?</p>
<p>OK, this is asking if we can find a pair of maps that compose to an identity map of domain $A$, with the map $B$ in between. Let's see:</p>
<p>CM.core=> (count (composed-solution-pairs B one-a))</p>
<p>0</p>
<p>No such map pair exists, so it is not possible to go through $B$ back to $A$. What about going through $A$ itself?</p>
<p>CM.core=> (count (composed-solution-pairs A one-a))</p>
<p>6</p>
<p>There are 6 such map pairs. It is the same as going through another 3 element domain:</p>
<p>CM.core=> (count (composed-solution-pairs #{1 2 3} one-a))</p>
<p>6</p>
<p>So when the domains have the same number of elements, it is possible for the map compositions to go through them back and forth. Let's look at the details of these map pairs:</p>
<p>CM.core=> (composed-solution-pairs #{1 2 3} one-a)</p>
<p>([{:rule {3 "Sam", 2 "Mary", 1 "John"}, :domain #{1 2 3}, :codomain #{"John" "Mary" "Sam"}} {:rule {"Sam" 3, "Mary" 2, "John" 1}, :domain #{"John" "Mary" "Sam"}, :codomain #{1 2 3}}] [{:rule {3 "Mary", 2 "Sam", 1 "John"}, :domain #{1 2 3}, :codomain #{"John" "Mary" "Sam"}} {:rule {"Sam" 2, "Mary" 3, "John" 1}, :domain #{"John" "Mary" "Sam"}, :codomain #{1 2 3}}] [{:rule {3 "Sam", 2 "John", 1 "Mary"}, :domain #{1 2 3}, :codomain #{"John" "Mary" "Sam"}} {:rule {"Sam" 3, "Mary" 1, "John" 2}, :domain #{"John" "Mary" "Sam"}, :codomain #{1 2 3}}] [{:rule {3 "Mary", 2 "John", 1 "Sam"}, :domain #{1 2 3}, :codomain #{"John" "Mary" "Sam"}} {:rule {"Sam" 1, "Mary" 3, "John" 2}, :domain #{"John" "Mary" "Sam"}, :codomain #{1 2 3}}] [{:rule {3 "John", 2 "Sam", 1 "Mary"}, :domain #{1 2 3}, :codomain #{"John" "Mary" "Sam"}} {:rule {"Sam" 2, "Mary" 1, "John" 3}, :domain #{"John" "Mary" "Sam"}, :codomain #{1 2 3}}] [{:rule {3 "John", 2 "Mary", 1 "Sam"}, :domain #{1 2 3}, :codomain #{"John" "Mary" "Sam"}} {:rule {"Sam" 1, "Mary" 2, "John" 3}, :domain #{"John" "Mary" "Sam"}, :codomain #{1 2 3}}])</p>
<p>Obviously, for each pair, the two map rules are simply the reverse of the another, i.e. flipping the arrows around. If a map has an inverse, it is unique. These maps are called isomorphic, bijective, or one-to-one and onto.</p>
<p>In fact, when the map in the middle has larger size than $A$, there may also be map pairs that compose to the identity of $A$.</p>
<p>CM.core=> (count (composed-solution-pairs #{1 2 3 4} one-a))</p>
<p>72</p>
<p>In such pairs, each map is called <em>retraction</em> and <em>section</em> to each other. Let's calculate the number of retractions and sections.</p>
<p><strong><em>Article 2, Exercise 5 (1)</em></strong> Given map $g$ (see code for its definition), how many maps $f$ are there with $g \circ f = 1_{{0, 1}}$?</p>
<p>This is asking the number of sections of the map $g$, which has a 5 element domain $U$, and a 2 element codomain $D$. Three of the elments of $U$, b, p, q, map to 0 in $D$; two elements of $U$, r and s, map to 1 in $D$. The answer can be found by:</p>
<p>CM.core=> (count (section g))</p>
<p>6</p>
<p>Basically, each section $f$ must choose two elements in $U$ to map 0 and 1 to, such that $g$ can map the results back to form an identity map on {0, 1}. For element 0, $f$ can choose one of b, p or q to map to; for element 1, $f$ can choose one of r and s. Therefore, the number of possible $f$ is $2 \times 3 = 6$.</p>
<p>Obviously, not all maps have sections.</p>
<p>CM.core=> (count (section f))</p>
<p>0</p>
<p>To have sections, the map must have a domain size larger than or equal to the codomain size. In addition, each elment of the codomain must be mapped to. Such map property is called surjective or onto. The general formula for the number of sections for map $g$ is therefore $$\prod_{i=1}^{n}m_i$$ where $n$ is the size of the codomain of $g$, and $m_i$ is the number of elements in the domain of $g$ that map to the $i$th element of the codomain.</p>
<p><strong><em>Article 2, Exercise 5 (2)</em></strong> Choose a particular such $f$ (see code for its definition), how many maps $g$ satisfy $g \circ f = 1_{{0, 1}}$?</p>
<p>Given a chosen $f$, this question is asking its number of retractions. The answer is:</p>
<p>CM.core=> (count (retraction f))</p>
<p>8</p>
<p>For given $f$, 0 and 1 each maps to its own element in $U$, its retraction only need to flip the arrows to point back to 0 and 1, the remaining three element in $U$ can freely choose any of 0 and 1 to map to, so the number of retractions is the same as the total number of maps from a 3 element domain to a 2 element codomain, $2^3$. The general formula is $$n^{m-n}$$ where $n$ is the size of domain of $f$, and $m$ is its codomain size. To have retraction, a map must have a domain smaller or equal to the size of its codomain. In addition, it must be a one-to-one mapping, also called injective mapping.</p>
<p><strong><em>Number of section-retraction pairs</em></strong> On page 117 of the book, the above formula for the number of retractions and sections of a given map are given, but it also says that the formula for the number of pairs of section/retraction in term of $m$ and $n$ is rather complicated. As it turns out, it is simple to derive a formula that is not complicated at all. First, each element of the smaller domain (size $n$) must map injectively to the lager domain (size $m$), the number of possibilities is just the number of permutation of choosing $n$ out of $m$. Then the remaining $m-n$ in the larger domain can freely choose any of the $n$ to map back to. Finally, we time up the two terms to arrive at $$\frac{m!}{(m-n)!}n^{m-n}$$ where $n$ is the size of domain $A$, m is the size of the domain $X$, $n \le m$, and $A \stackrel{s}{\longrightarrow} X \stackrel{r}{\longrightarrow} A$ satisfy $r \circ s = 1_A$.</p>
<p>The formula seem to be correct as verified by the code:</p>
<p>CM.core=> (count (retraction-section-pairs #{1 2} #{:a}))</p>
<p>0</p>
<p>CM.core=>(count (retraction-section-pairs #{1} #{:a}))</p>
<p>1</p>
<p>CM.core=> (count (retraction-section-pairs #{1 2} #{:a :b}))</p>
<p>2</p>
<p>CM.core=> (count (retraction-section-pairs #{1 2} #{:a :b}))</p>
<p>2</p>
<p>CM.core=> (count (retraction-section-pairs #{1 2} #{:a :b :c}))</p>
<p>12</p>
<p>CM.core=> (count (retraction-section-pairs #{1 2} #{:a :b :c :d :e}))</p>
<p>160</p>
<p>CM.core=> (count (retraction-section-pairs #{1 2 3} #{:a :b :c}))</p>
<p>6</p>
<p>CM.core=> (count (retraction-section-pairs #{1 2 3} #{:a :b :c :d}))</p>
<p>72</p>
<p>CM.core=> (count (retraction-section-pairs #{1 2 3 4} #{:a :b :c :d}))</p>
<p>24</p>
<p>CM.core=> (count (retraction-section-pairs #{1 2 3 4} #{:a :b :c :d :e}))</p>
<p>480</p>
<p>CM.core=> (count (retraction-section-pairs #{1 2 3 4 5} #{:a :b :c :d :e}))</p>
<p>120</p>
<p>CM.core=> (count (retraction-section-pairs #{1 2 3 4} #{:a :b :c :d :e :f}))</p>
<p>5760</p>
<p>CM.core=> (count (retraction-section-pairs #{1 2 3 4 5} #{:a :b :c :d :e :f}))</p>
<p>3600</p>
<p>Don't try the last two function calls, as they will run a long long time.</p>Install Vim with Homebrew Python on OS X2012-05-16T04:50:00-07:002012-05-16T04:50:00-07:00Huahaitag:yyhh.org,2012-05-16:/blog/2012/05/install-vim-with-homebrew-python-on-os-x<p>For people that need full features of vim, the default installation of vim on Mac OS X is definitely not enough. For example, I need to <a href="https://yyhh.org/blog/2007/10/posting-blog-entry-drupal-within-vim">use vim to post to this blog</a>, which requires a version of vim with python support. I also prefer terminal version of vim to …</p><p>For people that need full features of vim, the default installation of vim on Mac OS X is definitely not enough. For example, I need to <a href="https://yyhh.org/blog/2007/10/posting-blog-entry-drupal-within-vim">use vim to post to this blog</a>, which requires a version of vim with python support. I also prefer terminal version of vim to the GUI version, so <a href="https://code.google.com/p/macvim/">MacVim</a> is less desirable.</p>
<p>One way to get what I want is to compile a version of vim with <a href="https://mxcl.github.com/homebrew/">homebrew</a>. Homebrew does not officially have a vim fomula, because that would be a duplicate of the system version. Fortunately, we can grab an unofficial formula at <em><a href="https://raw.github.com/Homebrew/homebrew-dupes/master/vim.rb">https://raw.github.com/Homebrew/homebrew-dupes/master/vim.rb</a></em></p>
<p>Also, you may want to install the latest homebrew python with the framework option:</p>
<div class="highlight"><pre><span></span><code>brew<span class="w"> </span>install<span class="w"> </span>python<span class="w"> </span>--framework
</code></pre></div>
<p>In order for vim to use the homebrew version of python (2.7.3) instead of the system one (an old 2.6), we need to change a line and add a line in the downloaded formula (vim.rb) file:</p>
<div class="highlight"><pre><span></span><code><span class="na">... </span>
<span class="na">"--enable-pythoninterp</span><span class="o">=</span><span class="s">dynamic",</span><span class="w"> </span>
<span class="na">"--with-python-config-dir</span><span class="o">=</span><span class="s">/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",</span><span class="w"> </span>
<span class="na">...</span>
</code></pre></div>
<p>Now install vim with the formula:</p>
<div class="highlight"><pre><span></span><code>brew<span class="w"> </span>install<span class="w"> </span>./vim.rb
</code></pre></div>
<p>To check vim is using the correct version of python. Issue command in vim:</p>
<div class="highlight"><pre><span></span><code><span class="o">:</span><span class="s">python import sys</span><span class="c1">; print sys.version</span>
</code></pre></div>
<p>If we get something like this:</p>
<blockquote>
<p>2.7.3 (default, May 15 2012, 20:51:34)<br>
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]<br>
Press ENTER or type command to continue</p>
</blockquote>
<p>we are done!</p>Start learning category theory2012-04-30T07:48:00-07:002012-04-30T07:48:00-07:00Huahaitag:yyhh.org,2012-04-30:/blog/2012/04/start-learning-category-theory<p>Perhaps due to my rather small brain (literally), I dislike remembering tedious details. When in elementary school, I hated reciting classic Chinese poems, but liked composing my own :-). In high school, I hated chemistry but loved physics, because one could do everything based on a few principles in physics, whereas …</p><p>Perhaps due to my rather small brain (literally), I dislike remembering tedious details. When in elementary school, I hated reciting classic Chinese poems, but liked composing my own :-). In high school, I hated chemistry but loved physics, because one could do everything based on a few principles in physics, whereas chemistry was all about memorization. Last year, I was chatting with a colleage of mine who had a Ph.D. degree in chemistry from Harvard. He said he's good at it because he could find patterns in all the tedious details and summerized them in his own head, so he didn't have to remember them all. So I said why not write those patterns down so others can benefit, and he didn't seem to like that idea. Anyway, let's go back to the main topic.</p>
<p>I did not do very well in math classes in China, perhaps because Chinese math education focused too much on problem solving techniques, which were basically a matter of remembering all the test coping tricks. But I do like math, because I find it elegant and profound. A mathematical understanding of the world seems always the most economical one. So I want to learn more.</p>
<p>To consistently apply my preferred model of starting from the most fundamental ideas, I decide to learn <a href="https://en.wikipedia.org/wiki/Category_theory">category theory</a>. It might sound strange as even many professional mathematicians consider this branch of mathematics "abstract nonsense", but I think it might fit my aptitude. Who knows. In any case, I am following <a href="https://math.ucr.edu/home/baez/topos.html">John Baez's book recommendation</a> as a guide, and will be updating my progress here from time to time, when I have something interesting to write about.</p>
<p>UPDATE: Baez, among others, said they benefited from <a href="https://www.amazon.com/Topoi-Categorial-Analysis-Logic-Mathematics/dp/0486450260/">Goldbatt's book</a>, which I myself find very readable as well. However, this <a href="https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=12&ved=0CCUQFjABOAo&url=http%3A%2F%2Fwww.cwru.edu%2Fartsci%2Fphil%2FUsesandAbuses%2520HistoryToposTheory.pdf">MacLarty's article</a> convinced me that Goldbatt's book might give the wrong idea about category theory. So I will stick with <a href="https://www.amazon.com/Conceptual-Mathematics-First-Introduction-Categories/dp/052171916X">Lawvere's</a> <a href="https://www.amazon.com/Sets-Mathematics-F-William-Lawvere/dp/0521010608">books</a>.</p>"It's official: Tom is a Nebelung!"2012-03-24T23:07:00-07:002012-03-24T23:07:00-07:00Huahaitag:yyhh.org,2012-03-24:/blog/2012/03/its-official-tom-is-a-nebelung<p>When <a href="https://yyhh.org/blog/2011/07/cat-big-paws">Tom</a> (唐唐)was adopted from the animal shelter, his papers listed him as an "American Domestic Long Hair". As new cat parents, we were eager to find out his true breed. We searched and searched online, and identified him as a <a href="https://en.wikipedia.org/wiki/Chartreux">Chartreux</a>, based on his fur color and …</p><p>When <a href="https://yyhh.org/blog/2011/07/cat-big-paws">Tom</a> (唐唐)was adopted from the animal shelter, his papers listed him as an "American Domestic Long Hair". As new cat parents, we were eager to find out his true breed. We searched and searched online, and identified him as a <a href="https://en.wikipedia.org/wiki/Chartreux">Chartreux</a>, based on his fur color and personality. We knew that Chartreux is a short hair cat but Tom has long hair, but we thought Tom must not have been a pure breed. We always joked about Tom's purpoted French origin and attributed his love of bread and butter to his French ancestry.</p>
<p>Yesterday we took the cats to get their teeth cleaned. Sitting in the vet's waiting room, I browsed a cat breed book, and stumpled upon Tom's true breed. He's a <a href="https://yyhh.org/blog/2011/07/cat-big-paws">Nebelung</a>! Let's see. At the left is a picture of a Chartreux, and at right a Nebelung:</p>
<table><tbody><tr class="odd"><td><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/3c/IC_Blue_Melody_Flipper_CHA_male_EX1_CACIB.jpg/330px-IC_Blue_Melody_Flipper_CHA_male_EX1_CACIB.jpg" title="A Chartreux Cat" width="218" height="300" alt="A Chartreux Cat" /></td><td><p><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Nebelung_Cat_at_10.JPG/330px-Nebelung_Cat_at_10.JPG" title="A Nebelung Cat" width="228" height="300" alt="A Nebelung Cat" /></p></td></tr><tr class="even"><td>Chartreux</td><td>Nebelung</td></tr></tbody></table>
<p>Obviously, Chartreux has short hair, orange eyes, rounder head and body, while Nebelung has long hair, green/yellowish eyes and leaner head and body. No doubt, Tom is a Nebelung. Many of the google images of Nebelung cats can just be passed as Tom's own photos.</p>
<p>Here's Tom:</p>
<p><img src="https://farm3.staticflickr.com/2194/1971652917_be14af92b9_n.jpg" title="Tom" width="320" height="240" alt="Tom " /></p>
<p>So Nebelung is a rare breed created in America during 1980s from <a href="https://en.wikipedia.org/wiki/Russian_Blue">Russian Blue</a>. This behavior characteristics of Nebelung reads like Tom's accurate description:</p>
<p><cite>Nebelung cats are lively, playful, affectionate, good-natured, and intelligent. The cat's mild-mannered state and personality may not always reflect the relatively high level of intelligence often found in the breed. In spite of the fact that it is an active cat, it can live very well indoors. Nebelungs prefers their own family and often keep a distance from strangers. They tend to bond with a select few humans and stay loving and devoted throughout their lives. It is, however, a cat that gladly accepts company of its people or of another cat. Nebelungs are very good communicators and will remind their owners of problems. This happens often since Nebelungs can be very picky about things such as litter cleanliness and food type. Many owners of the Nebelung cat say that they can act more like a dog at times, being extremely loyal to their owner and family. It enjoys sitting in a lap and being petted and will follow its favorite person devotedly from room to room. </cite></p>
<p>Now we know we are not crazy calling Tom a "Mommy's boy" and a "dog cat", because he is a Nebelung!</p>Are you Han? My paternal ancestry - 12 Marker Results2012-03-03T01:04:00-08:002012-03-03T01:04:00-08:00Huahaitag:yyhh.org,2012-03-03:/blog/2012/03/are-you-han-my-paternal-ancestry-12-marker-results<p>As <a href="https://yyhh.org/blog/2011/12/are-you-han-my-paternal-ancestry-hypothesis">mentioned previously</a>, I swabbed my cheeks and mailed my Y-DNA test specimen to <a href="https://www.familytreedna.com/">FamilyTreeDNA</a> a few months ago. Now the first part of the results, consists of twelve markers, are known. These are standard Y-STR results. Before showing the actual numbers, let me briefly explain.</p>
<p>What I ordered was …</p><p>As <a href="https://yyhh.org/blog/2011/12/are-you-han-my-paternal-ancestry-hypothesis">mentioned previously</a>, I swabbed my cheeks and mailed my Y-DNA test specimen to <a href="https://www.familytreedna.com/">FamilyTreeDNA</a> a few months ago. Now the first part of the results, consists of twelve markers, are known. These are standard Y-STR results. Before showing the actual numbers, let me briefly explain.</p>
<p>What I ordered was a Y-DNA test, which is only applicable for men, since women do not have Y-chromosome. Y-chromosome passes from fathers to sons, so it can be used to track male ancestry. Chromosomes consist of a large number of <a href="https://en.wikipedia.org/wiki/Nucleotide" title="Nucleotide">nucleotides</a>, which have four basic types, designated by letter A, C, G, and T. At certain locations of the Y chromosome (these locations are usually labeled by names such such "DYS393"), there are repeated sequence of short letter patterns, such as "GTT", called Short Tandem Repeats (STR). For example, at location DYS426, a person may have 7 to 18 repeats of the DNA sequence “GTT”, depending on the individual. In the FamilyTreeDNA database, 12 repeats at DYS426 is the most common, which would look like this: ...TGT<strong>GTTGTTGTTGTTGTTGTTGTTGTTGTTGTTGTTGTT</strong>GAC... By comparing the number of such STRs at different locations, we can estimate how genetically close two individuals are. And we call the number of STRs at each of these locations a marker.</p>
<p>Because STRs mutate more easily, two individuals with a similar Y-STR haplotype may not necessarily share a similar ancestry. To really confirm one's haplogroup type, Single Nucleotide Polymorphism (SNP) test is needed, which examines single nucleotides at specific locations on the Y chromosome. Since these SNPs are very rare, people sharing the same SNPs almost certainly have the same ancestor many generations ago. In summary, STR test is good for finding recent relatives, while SNP can confirm one's ancient ancestry (i.e. haplogroup).</p>
<h4>My Results</h4>
<p>The table below shows the results of 12 markers for my Y-DNA test. </p>
<table><caption>Huahai's 12 Marker Results</caption><tbody><tr class="odd"><td>Marker</td><td>Value</td></tr><tr class="even"><td>DYS393</td><td>12</td></tr><tr class="odd"><td>DYS390</td><td>24</td></tr><tr class="even"><td>DYS19**</td><td>15</td></tr><tr class="odd"><td>DYS391</td><td>10</td></tr><tr class="even"><td>DYS385a</td><td>12</td></tr><tr class="odd"><td>DYS385b</td><td>20</td></tr><tr class="even"><td>DYS426</td><td>11</td></tr><tr class="odd"><td>DYS388</td><td>12</td></tr><tr class="even"><td>DYS439</td><td>12</td></tr><tr class="odd"><td>DYS389I</td><td>13</td></tr><tr class="even"><td>DYS392</td><td>13</td></tr><tr class="odd"><td>DYS389II***</td><td>31</td></tr></tbody></table>
<p>I have yet to figure out that those stars mean.</p>
<p>OK, the table looks nice, but what does it mean? Well, given this data, we can do at least two things: the first is to find one's remote genetic cousins. Another thing is to predict one's haplotype.</p>
<h4>My Match</h4>
<p>I searched the FamilyTreeDNA's database to find people with test results that match mine. BTW, this search functionality is also available at <a href="https://ysearch.org">ysearch.org</a>. Guess what? I found one person with an exact match! And I know his name! I have not contacted that person yet, because I want to wait for more results to be sure. That person did a 25 marker test, so I will wait for my 25 marker results.</p>
<p>However, I have not resisted the temptation to investigate a bit about his background. Curiously, his oldest known ancestor is from Philippine, dating back to late 19th century. On the other hand, according to our family records, my father's line has lived in Sichuan province in southwestern China since <a href="https://en.wikipedia.org/wiki/Ming_Dynasty">Ming Dynasty</a>, way before 19th century! </p>
<p>So what's the connection here? There seems to be so much room for speculation. One possibility is that this Filipino family was originally migrated from China to Philippine a few hundred years ago. Given this family rather scholastic background (complete with a prominent medical scientist in the family that has his own Wikipedia page), this hypothesis doesn't sound too far off, as Chinese people are known to keep their scholastic habit even overseas. Another evidence is the similarity of surnames. This family's surname is pronounced vaguely similar to mine, so it could be a local adaptation of the original Chinese surname.</p>
<p>Another possibility, is of course that my family was actually migrated to Sichuan from the pacific coast (maybe even the islands) somewhere during the Ming Dynasty. This would not sound too far off either, since my family records does say that we migrated to Sichuan during Ming Dynasty. However, it is vague on the origin of the migration.</p>
<p>In any case, this seems to be getting very interesting. I am looking forward to seeing more test results.</p>
<p><strong>My Haplotype</strong></p>
<p>People have developed statistical software to predict haplogroup from STR test results. For example, <a href="https://www.hprg.com/hapest5/">Whit Athey's predictor</a> is popular for people of European or Mideastern origins, but it doesn't work for Asians perhaps due to a lack of data. On the other hand, FamilyTreeDNA does prediction for all customers. Before showing the prediction for my haplogroup, let's recap my own prediction in the <a href="https://yyhh.org/blog/2011/12/are-you-han-my-paternal-ancestry-hypothesis">previous post</a>: my hypothesis is that I have 20 percent chance to be in haplogroup <a href="https://en.wikipedia.org/wiki/Haplogroup_K_%28Y-DNA%29">K*</a>, 20 percent chance in haplogroup <a href="https://en.wikipedia.org/wiki/Haplogroup_O2_%28Y-DNA%29">O2</a>, 30 percent in <a href="https://en.wikipedia.org/wiki/Haplogroup_O1_%28Y-DNA%29">O1</a> and <a href="https://en.wikipedia.org/wiki/Haplogroup_O3_%28Y-DNA%29">O3</a>, respectively.</p>
<p>Well, how did I do?</p>
<p>Pretty good, in fact. Basically, before seeing the results, I predicted that I have 20+30+30=80 percent chance to be in the haplogroup O. It turns out that FamilyTreeDNA's prediction is just that: I am in the haplogroup of <a href="https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cts=1330932717http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FHaplogroup_O_%28Y-DNA%29">O</a>!</p>
<p>Further results should get me closer to the exact haplogroup within O. But to have some fun, let's predict again which sub-group I am in. Given that one exact match I have in the database is someone originally from Philippine, the chance of my being in O1 should be significantly increased, whereas the chance of being O2 should be diminished, down to zero. Therefore, my hypothesis is the following:</p>
<p>P(O1) = 0.7</p>
<p>P(O3) = 0.3</p>
<p>Let's wait and see...</p>
<hr>
<p><strong>UPDATE</strong> (3/7/2012): I found another haplogroup predictor, <a href="https://predictor.ydna.ru/">Vadim Urasin's YPredictor</a>, which can handle Eastern Asian results. The prediction for my 12 marker results is the following:</p>
<p>N Haplogroup Probability<br>
1 O3-M122 77%</p>
<p>What a surprise! So I am a typical Han Chinese after all.</p>
<p>On the other hand, the accuracy of this predictor may not be too high for Eastern Asians due to a lack of data. Anyway, looking forward to results from more markers to confirm...</p>
<hr>
<p><strong>UPDATE</strong> (3/7/2013): I paid for the deep-clique analysis to get to the bottom of this, and the results confirmed Vadim Urasin's prediction, that I am indeed O3-M122. So in this ense, I am a typical Han Chinese male. The only thing atypical is that I do not belong to any of the more popular branches under O3-M122. This result seems to explain a lot, since I am in one of those rare branches under O3. </p>Review for Canine Cat Scratcher2012-01-02T06:18:00-08:002012-01-02T06:18:00-08:00Yunyaotag:yyhh.org,2012-01-02:/blog/2012/01/review-for-canine-cat-scratcher<p><strong>Updated on 09/10/2013</strong>: It's <a href="https://thecompanyofpets.com/">now only 295 USD</a>, with 100 USD discount!</p>
<hr>
<p>As a cat and modern design lover, I am always looking for cat items pleasant for both the cats and my aesthetic standard. I had my eye on the canine scratcher for a while, but its …</p><p><strong>Updated on 09/10/2013</strong>: It's <a href="https://thecompanyofpets.com/">now only 295 USD</a>, with 100 USD discount!</p>
<hr>
<p>As a cat and modern design lover, I am always looking for cat items pleasant for both the cats and my aesthetic standard. I had my eye on the canine scratcher for a while, but its over 1000 USD price tag made it out of reach. However, recently, I found that it now costs "only" 395 USD. I pulled the trigger w/o too much hestitation since I need to buy the cats a holiday present anyway. However, I was still a little nervious at the purchase, as it would be a huge bummer if the cats don't like it. But I really love the design and can totally see how it fit with the rest of the house w/o screaming "cat furniture".</p>
<p>It took over 3 weeks to receive the scratcher (somehow I didn't even get the confirmation email and it took an email from me to learn about the status of my order). But I was very pleased at the arrival. It was very well packaged and arrived without any damage. It is just the right size as a standalone decoration. Most importantly, the cats love it.</p>
<p><img src="https://farm8.staticflickr.com/7014/6598703157_fb8b32f53c_z.jpg" title="Tom loves the canine scratcher" width="392" height="585" alt="Tom loves the canine scratcher" /></p>
<p><img src="https://farm8.staticflickr.com/7158/6598915779_af98f7e934_z.jpg" title="Mayori loves the canie scratcher" width="394" height="524" alt="Mayori loves the scratcher" /></p>
<p>After some fighting, it has now official become Mayori's favorite ride. Highly recommended!</p>Are you Han? My paternal ancestry - Hypothesis2011-12-28T07:02:00-08:002011-12-28T07:02:00-08:00Huahaitag:yyhh.org,2011-12-28:/blog/2011/12/are-you-han-my-paternal-ancestry-hypothesis<p>I was brought up as a <a href="https://en.wikipedia.org/wiki/Han_Chinese">Han Chinese</a> and I myself have never doubted that identity. However, I do know that I look slightly different from people around me when I grew up. Darker skin, slightly curly hairs, deeper set eyes and other distinctive facial features. Put it simply, my …</p><p>I was brought up as a <a href="https://en.wikipedia.org/wiki/Han_Chinese">Han Chinese</a> and I myself have never doubted that identity. However, I do know that I look slightly different from people around me when I grew up. Darker skin, slightly curly hairs, deeper set eyes and other distinctive facial features. Put it simply, my face does not look like an <a href="https://pmsol3.files.wordpress.com/2009/08/chineseaverageman.jpg?w=490">average Han male face</a>. However, nobody really said anything about my appearance except that my old brother occasionally joked about it (he looks like a normal Han Chinese by the way). After all, I look just like my father. Besides, there are plenty of male relatives in my father's native village (near Chongqing) who look just like me.</p>
<p>It took a foreigner to first question my ethnicity. When I was in graduate school in Beijing, there was an exchange student in my group, an African American girl, who one day took me by surprise by asking: "Are you Han?" I instinctively answered "Yes". She didn't say anything more and I didn't either, but I knew why she asked.</p>
<p>When I came to US, the situation got worse. When I went with Yunyao to visit her college friends, they always talked English with me first, then were totally startled by my almost perfect Mandarin. Hispanic people in the states always wanted to talk Spanish with me then were surprised by my inability to speak their language. Later I learned one Spanish phrase or two. When we traveled in Latin American, people in the restaurants always insisted on correcting my poor Spanish pronunciation while ignoring Yunyao's arguably worse performance. </p>
<p>Since all the female members of my family look like normal Han people, Yunyao became curious about my paternal ancestry and suggested me to take a DNA test to find out. At first, I dismissed this seemly outrageous idea. A few months ago, I became curious myself when I learned a few things about the make-up of Han Chinese <a href="https://en.wikipedia.org/wiki/Human_Y-chromosome_DNA_haplogroup">Y-DNA haplotypes</a>. Below is a chart I made using the <a href="https://www.nature.com/nature/journal/v431/n7006/extref/nature02878-s2.doc">data</a> from <a href="https://www.nature.com/nature/journal/v431/n7006/abs/nature02878.html">this Nature study</a> on 1289 Han males in year 2004.</p>
<p><img src="https://farm8.staticflickr.com/7167/6590228355_f274b09342.jpg" width="327" height="288" /></p>
<p>O3*, O3d and O3e all belong to the group <a href="https://en.wikipedia.org/wiki/Haplogroup_O3_%28Y-DNA%29">O3</a>. It is interesting to see that O3 takes up about 55 percentage of the Han populations. </p>
<p>Since people always talk about the differences between southern and northern Chinese, a chart (using the same data set) comparing the two follows:<br>
<img alt="chart" src="https://farm8.staticflickr.com/7145/6590358575_7450cf0f53.jpg">Clearly, Northern and Southern Han Chinese males have similar genetic distributions, so the alleaged north-south difference is not that significant, at least in term of male lineage.</p>
<p>Now, the big question, what haplogroup do I belong to? To find out, one has to take out the wallet 😛. Luckily, Yunyao bought this <a href="https://www.familytreedna.com/">FamilyTreeDNA</a> test for me as a birthday gift. Here is the package I just received in the mail:</p>
<p><img src="https://farm8.staticflickr.com/7020/6586266841_318f2ebdc4.jpg" width="500" height="375" /></p>
<p>There are two swabs and two specimen tubes in the package. Following the instructions, I scraped my cheek for a full minute, put the swab in the tube, and put everything into the envelop provided, and mailed the package back.</p>
<p>While waiting for the results, let's make a prediction about my haplogroup. To do that, let's look at the haplogroup distribution of the province where my father and I came from (using the same data set as above):</p>
<p><img src="https://farm8.staticflickr.com/7157/6590534263_621207bf2c.jpg" width="342" height="300" />The number of Sichuan Han people tested in the Nature 2004 study is only 65, so this chart may not be very accurate. In the absence of better prior information, let's work with this. </p>
<p>There are 5 percent of <a href="https://en.wikipedia.org/wiki/Haplogroup_C3_%28Y-DNA%29">C*</a>among Sichuan Han people. A major part of these are likily the decendents of the Mongol invaders. Since I am not Mongol looking, I rate the probability of my being C* to be zero, P(C*)=0.</p>
<p>The two percent of <a href="https://en.wikipedia.org/wiki/Haplogroup_D1_%28Y-DNA%29">D1</a> in Sichuan Han people are likely related to a Tibetan origin. According to my family history, this is again unlikely my paternal lineage, P(D1)=0.</p>
<p>There are surprising large percentage of <a href="https://en.wikipedia.org/wiki/Haplogroup_K_%28Y-DNA%29">K*</a> shown in the data. K is a very old lineage appearing around the Pacific everywhere, and is particularly common in the Australian islands. I think the chance of my being in this group is higher than normal. Of course, it could be that the study didn't not differentiate some of the down-stream haplogroups of K, such as LT, M, N and S. In any case, I rate the probability of my being one of these K people higher than 16 percent, P(K*, LT, M, N, or S)=0.2. </p>
<p>Similar to the national level, <a href="https://en.wikipedia.org/wiki/Haplogroup_O3_%28Y-DNA%29">O3</a> is the most common among Sichuan Han people, taking up 57 percent. Since I am not normal Han looking, I will down rate the probability of my being O3 from 0.57 to 0.3, P(O3)=0.3. I cannot down rate O3 too much though, as my blood brothers do look like normal Han.</p>
<p>The eight percent of <a href="https://en.wikipedia.org/wiki/Haplogroup_O1_%28Y-DNA%29">O1</a> in Sichuan Han people are likely the results of migration from other parts of southern China, as this is a common gene type in southeastern Asia. Given our family history, the probability of my being O1 should be significantly higher, P(O1)=0.3.</p>
<p><a href="https://en.wikipedia.org/wiki/Haplogroup_O2_%28Y-DNA%29">O2</a> accounts for 13 percent of Sichuan Han people. O2a is commonly seen in the tribal people of southern Asia. I rate the probability of my being O2 higher than normal: P(O2)=0.2.</p>
<p>To recap, my probablistic hypothesis regarding my own Y-DNA haplogroup is the following:</p>
<p>P(K*, LT, M, N, or S)=0.2</p>
<p>P(O3)=0.3</p>
<p>P(O1)=0.3</p>
<p>P(O2)=0.2</p>
<p>Let's wait for the moment of truth...</p>Best Chocolate Places in Manhattan2011-11-13T21:02:00-08:002011-11-13T21:02:00-08:00Yunyaotag:yyhh.org,2011-11-13:/blog/2011/11/best-chocolate-places-in-manhattan<p>I recently stayed in Manhattan for a few days during a business trip. My colleague and I were looking for places to buy some special chocolate to bring back home. We asked a few locals New Yorker as well as consulted the web for recommendations. Here are the list of …</p><p>I recently stayed in Manhattan for a few days during a business trip. My colleague and I were looking for places to buy some special chocolate to bring back home. We asked a few locals New Yorker as well as consulted the web for recommendations. Here are the list of stores we collected.</p>
<ul>
<li>La Maison Du Chocola (<a href="https://www.lamaisonduchocolat.com/en/boutiques.php?c=newyork">store website</a>)</li>
<li>Vosges (<a href="https://www.vosgeschocolate.com/boutiques">store website</a>)</li>
<li>Jacques Torres (<a href="https://www.mrchocolate.com">store website</a>)</li>
</ul>
<p>We only have 3 hours to spend in the city. So we went to La Maison Du Chocola store in the Rockefelle Center, the store closest to our hotel.</p>
<p>Since there is not free sampling, I was not very sure that I would like to spend $100 on one pound of chocolate. I bought two small boxes with 6 pieces of chocolate each. Obviously, I am not the only one who is not sure: they even have tiny small packages with only two pieces of chocolate (for $8), accompanied with a pretty gift bag.</p>
<p>When I gave the gift to Huahai. He absolutely loves the chocolate. So it is money well spent and I plan to buy more for him when I go to NYC next time. </p>Review for "Virtual Cat Toys HD Catnip Collection"2011-11-06T19:46:00-08:002011-11-06T19:46:00-08:00Yunyaotag:yyhh.org,2011-11-06:/blog/2011/11/review-for-virtual-cat-toys-hd-catnip-collection<p>As many of friends, I recently acquired a HP Touchpad largely due to its low price. I don't really need a tablet, as I am sitting in front of computes almost all the time. My original plan was to turn it into an interactive cat toy, at least sometimes, so …</p><p>As many of friends, I recently acquired a HP Touchpad largely due to its low price. I don't really need a tablet, as I am sitting in front of computes almost all the time. My original plan was to turn it into an interactive cat toy, at least sometimes, so I can keep the two cats entertained while I am working.</p>
<p>Unfortunately, I could only find one game designed for the cats "The Catnip Collection". According to its website, it "is a variety of toys that will amuse and challenge your cat and its human".</p>
<p>The reviews seem pretty decent (4 out 5).</p>
<p><a href="https://developer.palm.com/appredirect/?packageid=com.wtflolomgbbq.haxe.vct">https://developer.palm.com/appredirect/?packageid=com.wtflolomgbbq.haxe…</a></p>
<p>Even though it is not free anymore, I bited the bullet and bought the app. Unfortunately, the cats are not even remotely interested! I think that the problem is the objects (insects, balls, etc) are constantly moving instead of stopping and moving randomly. So the cats get bored after 5 seconds.</p>
<p>Hopefully the app developer will see my post and consider improve the game further. For the smart cats who play with human all the time, we need something that is really challenging!</p>Planning a Dream Trip to Italy the Easy Way2011-10-16T22:13:00-07:002011-10-16T22:13:00-07:00Yunyaotag:yyhh.org,2011-10-16:/blog/2011/10/planning-a-dream-trip-to-italy-the-easy-way<p>Huahai and I have just returned from our first trip together to Italy. The trip itself was wonderful and unforgeable. However, it usually took a lot of planning for such an extensive trip, unless you hire someone else to do it for you or join a tour group.</p>
<p>We usually …</p><p>Huahai and I have just returned from our first trip together to Italy. The trip itself was wonderful and unforgeable. However, it usually took a lot of planning for such an extensive trip, unless you hire someone else to do it for you or join a tour group.</p>
<p>We usually enjoy traveling at our own pace and explore the area; therefore, we (basically myself) always do our own travel planning. Unfortunately, as a very busy professional, I do not really have much time to do the planning. (Can you believe someone have actually spent half a year to plan a two-week's trip to Italy and produce a travel plan with 90 pages?)</p>
<p>Following my usual practice, I have spent a lot of time initially on online travel forums initially. I also got the aforementioned 90-page's travel plan and a shorter one from a friend. Then I have brought Rick Steven's book. Eventually, I have managed to come up with a travel plan with only two pages that working out pretty well. Here are some tips that I have summarized based on my experience with this trip. I wish that I have known them first before I started the planning. It would have made my life much easier without compromising the quality of the travel plan.</p>
<p><strong>1. Buy at least one good travel book.</strong></p>
<p>For European trips, I highly recommend Rick Steven's book, which contains very detailed information for each of the places. Then you can bring the book with you and do some of the detailed planning such as where to have lunch on the go. I bought this book only a couple of weeks before our trip. I wish that I have bought it before I even started the planning. It would have saved me a lot of time reading online postings.</p>
<p><strong>2. Refer to travel packages for possible travel itinery.</strong></p>
<p>While I do enjoy the freedom of traveling at our own pace, studying the sample travel packages listed at the travel agency's websites is a very efficient way to come up with a travel plan that covers the major must-seen sites. I would add one extra day for each stop, as the tour groups tend to travel at much faster pace than I would like. Rick Steven's websites also provide very good example routes for each city with free mp3 audo downloadable. Another good place to get some inspiration is Yahoo! trip planner, where you can view other people travel plans.</p>
<p><strong>3. Book hotels well in-advance</strong>.</p>
<p>A good travel book typically contains some recommendation for accommodations. But the list is usually very short. I found Tripadvisor to be a great place to find accommodations with good value without broking the bank. However, top ones can sold out fast. Therefore I recommend booking the hotels as soon as the trip schedule is set. Of course, don't forget to use Kayak.com to find out how to get the best price. I booked the hotels about two months ahead of time, but many of the smaller nice budget hotels have already sold out.</p>
<p><strong>4. Reserve museums in-advance or join private tours.</strong></p>
<p>Check the travel book or online forums to find out whether any of the sites on the travel plan requires reservation and make the reservations ahead of time. Otherwise, you may find yourself stuck in a really long line for hours or even worse end up have to miss the must-seen sites. Joining private tours typically helps avoiding the long line but can be expensive. We only did the private tours when we were able to see things that we could not see otherwise (e.g. underground part of Colloseum is only accessible by joining one of the private tours). Many of the places can be reserved online. In addition, many hotels can help you make the reservations for free --- just send requests via emails with desired time and date.</p>
<p><strong>5. Arrange only one or two must-do items per day, preferably in the morning</strong>.</p>
<p>I feel that vacation is a time to relax, not a time to check of boxes of to-do items on the travel plan. Therefore, it is better to do only one or two must-do sight-seeings in the morning and then simply add other items as you go depending on the mood. With a good travel planning book, it is easy to do such last-minute planning without stressing out yourself in planning or following the plan.</p>
<p><strong>6. Arrange some resting days.</strong></p>
<p>As a first-timer to Italy, I was surprised how much walking I need to do everyday. It is true that most of the things are either within walking-distance or reachable via public transportation plus walking. However, all these walking adds up! According to my pedometer, we walked over 10 miles in one single day just visiting museums! Unless you would like to walk miles and miles everyday, it would be better to arrange some days with activity that requires not too much walking so your feet can recover. I am really glad that between our visits to Rome and Florence, we stayed in Sorrento and did a few day trips involving bus tour, boat tour, a little bit hiking, and swimming. These resting days give us some space to enjoy Italy from a completely perspective while giving our feet a break.</p>Best CSV Reader/Writer?2011-10-11T21:36:00-07:002011-10-11T21:36:00-07:00Yunyaotag:yyhh.org,2011-10-11:/blog/2011/10/best-csv-readerwriter<p>My colleague has highly recommended to me the following CSV reader/writer: <a href="https://supercsv.sourceforge.net/">https://supercsv.sourceforge.net/</a></p>
<p>I am yet to test it out, so I will need to come back provide my review. But just put a pointer here, since this tool is not realy easy to find without the …</p><p>My colleague has highly recommended to me the following CSV reader/writer: <a href="https://supercsv.sourceforge.net/">https://supercsv.sourceforge.net/</a></p>
<p>I am yet to test it out, so I will need to come back provide my review. But just put a pointer here, since this tool is not realy easy to find without the right keywords.</p>"Quick Fix: Windows XP Crashes with Blue Screen with Video Content"2011-09-22T00:06:00-07:002011-09-22T00:06:00-07:00Yunyaotag:yyhh.org,2011-09-22:/blog/2011/09/quick-fix-windows-xp-crashes-with-blue-screen-with-video-content<p>For some reason, my main working machine, a Windows XP desktop, recently started to crash a lot followed by the blue screen of death. The error message output at the blue screen does not seem to be helpful. </p>
<p><strong>***STOP: 0x0000008E (0xE0000001, 0xBA490925, 0xA880D820, 0x00000000)</strong><br>
<strong>***watchdog.sys - Address BA490925, base at …</strong></p><p>For some reason, my main working machine, a Windows XP desktop, recently started to crash a lot followed by the blue screen of death. The error message output at the blue screen does not seem to be helpful. </p>
<p><strong>***STOP: 0x0000008E (0xE0000001, 0xBA490925, 0xA880D820, 0x00000000)</strong><br>
<strong>***watchdog.sys - Address BA490925, base at BA90000, Date stamp 480254ab</strong></p>
<p>After a few crashes, I realized that the machine crashes whenever I play any video in the web browser ( I am using FireFox). Initially, I didn't bother to look into this problem and simply attempt to solve the problem by avoid playing any video, since I don't really intent to watch any video during my work hours and would rather spend my time doing really work instead of fixing the machine. However, this didn't really help since so many sites now a days include video content .</p>
<p>So today, when the machine crashed again, I decided to fix this issue once and for all. Luckily, one Google search using the error message turned up quite a few answers. Most of the answers tent to be too complicated than what I wanted and involving checking for malware, virus, etc, which is not really my concern. Luckily, I found a very simply solution <a href="https://forums.adobe.com/thread/798985">here</a>.</p>
<p>Due to changes to the link, the exact solution from the above link no longer work. But <strong>the basic idea is to go to any site with flash content, and then right click on the flash content, select "setting" from the pop-up menu and uncheck</strong> <strong>"Enable hardware acceleration".</strong></p>
<p><strong><img src="https://www.macromedia.com/support/documentation/en/flashplayer/help/images/display_en.gif" width="213" height="136" /></strong></p>
<p>For example, you can go to <a href="https://www.adobe.com/products/flashplatformruntimes/gallery/">https://www.adobe.com/products/flashplatformruntimes/gallery/</a> or any Youtube page. Just make sure that you don't play the video before you make the change. Otherwise, you will see the blue screen again.</p>Netflix Is Splitting Into Two!?2011-09-19T23:20:00-07:002011-09-19T23:20:00-07:00Yunyaotag:yyhh.org,2011-09-19:/blog/2011/09/netflix-is-splitting-into-two<p>It has turned out that Netflix has abandoned the plan, finally.</p>
<hr>
<p>When Huahai told me the news late last night that Netflix is splitting into two, my first reaction was that he must be reading from Onion! After all, based all what have learned from the business school classes and …</p><p>It has turned out that Netflix has abandoned the plan, finally.</p>
<hr>
<p>When Huahai told me the news late last night that Netflix is splitting into two, my first reaction was that he must be reading from Onion! After all, based all what have learned from the business school classes and information economics classes, it makes perfect sense to provide bundled services, especially when it comes to information product.</p>
<p>However, the news is definitely true, as further confirmed by the following letter that I received this morning.</p>
<p><img src="https://farm7.static.flickr.com/6166/6163911899_2c0010dbc8_b.jpg" width="484" height="755" alt="netflix letter" /></p>
<p>I don't know about you. But like many other loyal NetFlix subscribers, I love the convenience of their streaming service and almost use it exclusively even when I have bundled unlimited DVD service. In fact, I don't even watch cabled TV anymore except for the morning news. However, when I was informed that I have to pay 60% to get both services, I dumped the DVD service without hesitation. After all, I was only watching at most one DVD per week. However, this price hack does have hurt my feeling --- it seems that they don't care about their customizes anymore when they now dominate the market.</p>
<p>Nevertheless, the above news has shocked me. Frankly, I don't think that this move makes much sense --- why lose the establish name and give away the convenience to the customizes to be able to combine both services and maintain one single account? It also goes again the economic of scale. It all seems to me to be a very costly move.</p>
<p>However, I am very excited at the news. It looks like a big move that will be written into business school text books in the near future. I am really looking forward to seeing the outcome a couple of years from now on.</p>
<p>More on the move can be found on their <a href="https://blog.netflix.com/2011/09/explanation-and-some-reflections.html?lnktrk=EMP&g=935BBD64D88F21C24044EB3702C7EF2A0AC0315E&lkid=netflixBlog">blog</a>.</p>
</p>Easy Tuna Birthday Cake for the Cats2011-09-18T23:25:00-07:002011-09-18T23:25:00-07:00Yunyaotag:yyhh.org,2011-09-18:/blog/2011/09/easy-tuna-birthday-cake-for-the-cats<p>I was looking for buying birthday cakes for the cats' birthday. Surprisingly, although it is very easy to find dog bakeries, there seems no existence of a single cat bakery. Luckily, a single Google search online brought up many birthday cake recipes for the cats. I picked one simple recipe …</p><p>I was looking for buying birthday cakes for the cats' birthday. Surprisingly, although it is very easy to find dog bakeries, there seems no existence of a single cat bakery. Luckily, a single Google search online brought up many birthday cake recipes for the cats. I picked one simple recipe with my cats' favorite food --- tuna.</p>
<p>So here is the tuna birthday cake for the cats, decorated with shrimp with catnip garnish.</p>
<p><img src="https://farm5.static.flickr.com/4017/4577556814_9018ebe5f2.jpg" width="500" height="333" alt="tuna cake" /></p>
<p>It looks very nice, but most importantly, it was an instant hit. The cats jumped on to the dinning table as soon as I put the cakes on it.</p>
<p><img src="https://farm4.static.flickr.com/3363/4577557044_6477ceb9a6.jpg" width="500" height="333" alt="cats checking out birthday cake" /></p>
<p>Mayori started with her favorite --- shrimp --- first.</p>
<p><img src="https://farm4.static.flickr.com/3387/4577560426_585cc5f825.jpg" width="298" height="448" alt="mayori with shrimp" /></p>
<p>Tom enjoyed the cake itself too.</p>
<p><img src="https://farm5.static.flickr.com/4018/4576927309_9749a462f9.jpg" width="500" height="333" alt="tom ate cake" /></p>
<p>Recipe (modified based on an online recipe I found, but I could not find the original link anymore):</p>
<p>1. Turn the oven on 350 degree</p>
<p>2. A can of tuna or salmon in water + 2 eggs + a little bit cheese + a little bit of flour</p>
<p>3. Mix all the <span class="st">ingredients </span>and put into a muffin pan.</p>
<p>4. Bake for 15 minutes</p>
<p>5. Garnish with a cooked shrimp (the easiest way is to put one or two shrimp into a cup of water in a tea cup. Microwave for 1 -2 minutes).</p>
<p>Of course, I always pick something nice from <a href="https://yyhh.org/top-10-products-cats" title="birthday gift for the cats">this list</a> as their birthday gift!</p>
<p>蛋糕的做法如下:</p>
<p>先把烤箱调到350度。</p>
<p>然后将tuna/salmon 罐头一个, 鸡蛋两个,少量cheese,少量面粉,搅拌好以后倒到<br>
烤muffin的模子里。</p>
<p>放烤箱内烤15分钟左右, 上面再放上煮好的虾一只就好了。</p>Resources to Get Rid of Lawn the Frugal Way (Phrase I)2011-09-05T01:39:00-07:002011-09-05T01:39:00-07:00Yunyaotag:yyhh.org,2011-09-05:/blog/2011/09/resources-to-get-rid-of-lawn-the-frugal-way-phrase-i<p><span style="font-size: small;"></span><span style="font-size: small;">We are getting rid of our front lawn --- to save water and money!</span></p>
<p><span style="font-size: small;">A landscape designer helped us did the design to convert our front yard from an old deteriorating classic English garden into a vibrant modern garden full of native plants.</span></p>
<p><span style="font-size: small;">Given our shoe-string budget, we plan to do …</span></p><p><span style="font-size: small;"></span><span style="font-size: small;">We are getting rid of our front lawn --- to save water and money!</span></p>
<p><span style="font-size: small;">A landscape designer helped us did the design to convert our front yard from an old deteriorating classic English garden into a vibrant modern garden full of native plants.</span></p>
<p><span style="font-size: small;">Given our shoe-string budget, we plan to do most of the work ourselves. However, since both of us work full time, it will be a while before we can actually start the project, but being a person who loves to plan, I have started collecting resources to do the project frugal way already!</span></p>
<p><span style="font-size: small;">Here are the resources I have collected so far based on the main steps for the landscape projects:</span></p>
<p><span style="font-size: medium;"><strong>Step 1. Demolition</strong></span></p>
<p><span style="font-size: small;">We need to get rid of some plants and get rid of the lawn. It would cost a fortune to hire professional to do all the work, especially given the size of our front yard. So my current plan is to wait for the rain and then get rid of the lawn via sheet mulch.</span></p>
<p><span style="font-size: small;">This video on YouTube explains in details how to do <a href="https://www.youtube.com/watch?v=4PB0Ym_iXmc&feature=player_detailpage">sheet multch</a>. This websites added some more way to <a href="https://www.naturalfrontyards.com/faqs/">amend soil during sheet multch</a>.</span></p>
<p><span style="font-size: small;">Here is a link describing <a href="https://fremontlibraries.wordpress.com/2009/06/05/how-to-remove-your-lawn/">alterative ways to get rid of the lawn</a>.</span></p>
<p><span style="font-size: small;">There are several ways to <a href="https://www.examiner.com/gardening-in-san-jose/where-to-get-inexpensive-or-free-compost-santa-clara-county">get cheap compost in the Bay area</a>. The ones I am considering are </span></p>
<p><span style="font-size: x-small;"><strong>Guadalupe Landfill “Valley’s Pride” Compost</strong></span><br>
<span style="font-size: x-small;">999 Guadalupe Mines Road</span><br>
<span style="font-size: x-small;">San Jose CA 95120</span><br>
<span style="font-size: x-small;">408 268-1694</span><br>
<span style="font-size: x-small;">Hours: Monday – Friday 8 a.m. - 4:30 p.m.</span><br>
<span style="font-size: x-small;">Feedstock used: yard trimmings, stable manures, redwood grindings</span><br>
<span style="font-size: x-small;">Delivery available. Self – haul price $20/yard, bags available for small quantities.</span></p>Before and After --- Master Bathroom Remodeling2011-09-04T06:04:00-07:002011-09-04T06:04:00-07:00Yunyaotag:yyhh.org,2011-09-04:/blog/2011/09/before-and-after-master-bathroom-remodeling<p>The old master bathroom is dark and ugly, with only one sink and w/o tub.</p>
<p><img src="https://farm4.static.flickr.com/3576/3510649673_bb7be58ecd.jpg" height="240" alt="master bathroom (before)" /> <img src="https://farm4.static.flickr.com/3643/3511460330_af487bccd5.jpg" height="240" alt="master bathroom (before)" /></p>
<p>We wanted a master bathroom that is modern and bright, and at the same time with a sense of Zen. We also wanted it to have two sink and separate shower and tub. Three …</p><p>The old master bathroom is dark and ugly, with only one sink and w/o tub.</p>
<p><img src="https://farm4.static.flickr.com/3576/3510649673_bb7be58ecd.jpg" height="240" alt="master bathroom (before)" /> <img src="https://farm4.static.flickr.com/3643/3511460330_af487bccd5.jpg" height="240" alt="master bathroom (before)" /></p>
<p>We wanted a master bathroom that is modern and bright, and at the same time with a sense of Zen. We also wanted it to have two sink and separate shower and tub. Three months and a lot of work later, we have what we wanted and it totally worthies it since we are now enjoying it everyday. </p>
<p><img src="https://farm4.static.flickr.com/3314/3524171411_bc6de3450f.jpg?v=0" height="240" alt="master bathroom (after)" /> <img src="https://farm4.static.flickr.com/3571/3524981104_e4286d9cf8.jpg?v=0" height="240" alt="master bathroom (after)" /></p>
<p>I love everything about the new bathroom. But the top three on my lists are:</p>
<p>1. Shower panel with rain head --- it makes each shower much enjoyable that I really miss it every time I go travel even when I stay in 5-star hotels.</p>
<p>2. The recessed medical cabinets from Pottery Barn --- they are a little pricey but well-worth it, because they look nice and at the same time can hide all my stuff. They are the reason why the counter is always clutter-free.</p>
<p>3. Maax Free Standing Air Tub --- It makes every bath a really relaxing experience and super easy to clean and maintain (no harder than a usual soaking tub, no worry for mold).</p>Gift Buying Guide for Your Family and Friends in China2011-08-05T06:30:00-07:002011-08-05T06:30:00-07:00Yunyaotag:yyhh.org,2011-08-05:/blog/2011/08/gift-buying-guide-for-your-family-and-friends-in-china<p>China is a fast-changing country. Not surprisingly, the list of popular gifts for Chinese family, relatives and friends keeps on changing as well. When I return to China, I always do some extensive research to gather an updated shopping list of gifts to buy. Here is a summary based on …</p><p>China is a fast-changing country. Not surprisingly, the list of popular gifts for Chinese family, relatives and friends keeps on changing as well. When I return to China, I always do some extensive research to gather an updated shopping list of gifts to buy. Here is a summary based on various gift-giving guides and online forum postings for my recent trip to China. </p>
<p><strong>1. Parents/Elderly Relatives</strong> </p>
<p><strong>* Vitamin Supplements</strong> </p>
<p><strong>* Wisconsin Ginseng</strong> </p>
<p>Health-related gifts have been always appreciated in China. Even though the same product may be available in China, items bought oversea are considered as of higher quality. </p>
<p><strong>2. Women</strong> </p>
<p><strong>* Skin Care/Cosmetics</strong></p>
<p>Most Western brands sold in department store such as Clinique, Estee Lauder and Lancome are very much adored by Chinese women. However, if you happen to get any free gift with purchase, don't gift that alone. Many people know that you get it for free, so it would be very insulting if you just give the free gift as a gift.</p>
<p><strong>* Jewelry</strong></p>
<p>If you really want to make a strong impression, buy from well-known brands such as Tiffany and Cartier. However, it is not a good idea to buy non-name brand pearl, which is typically much cheaper in China, or any gold jewelry that is 14K or lower, as gold jewelry in China is typically 18K or higher.<br>
<br>
<strong>* Chocolate/Candies</strong></p>
<p>The following items are especially popular: Lindt chocolate, Ferrero Rochet Fine Hazelnut chocolate, Almond Roca.<br>
<br>
<strong>* Handbag/Sun Glass/Clothing</strong></p>
<p>Well-known name brands including Adidas, LV, Gucci, Chanel, Ralph Lauren, COACH, CK, Guess, AE, Gap, Levis, Express, Bebe, Nine West, Juicy Couture. Believe it or not, although most products are made in China, it is usually much cheaper to buy the name brands in US.<br>
<br>
<strong>3. Men</strong></p>
<p><strong>* Cigarette / Zippo lighter</strong></p>
<p>A good portion of men in China smoke. Brand name cigarette and Zippo lighter can be good gift for them.<br>
<br>
<strong>* Red Wine</strong></p>
<p>A good choice is any Napa Valley red wine.<br>
<br>
<strong>* State Quarters / Yearly Stamp Collection</strong> </p>
<p><strong>* Name brand watch/belt/shoe</strong></p>
<p><strong>4. Children</strong><br>
<br>
<strong>* Chocolate/Candies</strong></p>
<p><strong>* Name-brand Clothing</strong></p>
<p>Most well-known name brands are good choices.<br>
<br>
<strong>* Disney-brand toys / Educational toys</strong></p>Display LaTeX Math on Drupal with MathJax2011-07-18T20:19:00-07:002011-07-18T20:19:00-07:00Huahaitag:yyhh.org,2011-07-18:/blog/2011/07/display-latex-math-on-drupal-with-mathjax<p><a href="https://www.mathjax.org/">MathJax</a> seems to be the emerging standard for displaying math on the Web at this moment. It is supported by American Mathematical Society and American Physical Society, and has already been adopted by major math related discussion venues such as Physics Forums and Stack Exchange. MathJax displays math using CSS …</p><p><a href="https://www.mathjax.org/">MathJax</a> seems to be the emerging standard for displaying math on the Web at this moment. It is supported by American Mathematical Society and American Physical Society, and has already been adopted by major math related discussion venues such as Physics Forums and Stack Exchange. MathJax displays math using CSS and Web fonts instead of images, so the quality is very high and is resize-friendly. Below are some examples:</p>
<p>Inline math: the geometric product $\boldsymbol{uv}$ of vectors $\boldsymbol{u}$ and $\boldsymbol{v}$ is $\boldsymbol{u}\cdot\boldsymbol{v} + \boldsymbol{u}\wedge\boldsymbol{v}$, where $\boldsymbol{u}\cdot\boldsymbol{v}$ is the inner product and $\boldsymbol{u}\wedge\boldsymbol{v}$ is the outer product. </p>
<p>Display math: the rotation of vector $\boldsymbol{u}$ by angle $\theta$ in plane $\boldsymbol{i}$ is $$R_{\boldsymbol{i}\theta}(\boldsymbol{u}) = e^{-\boldsymbol{i}\theta/2}\boldsymbol{u}e^{\boldsymbol{i}\theta/2}$$</p>
<p>Some random expressions copied directly from the <a href="ftp://ftp.ams.org/ams/doc/amsmath/short-math-guide.pdf">short math guide for latex</a>: $$\begin{pmatrix}
\alpha& \beta^{<em>}\
\gamma^{</em>}& \delta
\end{pmatrix}$$ $$\frac{{\displaystyle\sum_{n > 0} z^n}}
{{\displaystyle\prod_{1\leq k\leq n} (1-q^k)}}$$ $$2^k-\binom{k}{1}2^{k-1}+\binom{k}{2}2^{k-2}$$</p>
<p>Finally, an obligatory integral: $$\int !!! \int_D f(x,y)\,dx\,dy$$</p>
<p>The math input could be either LaTeX or MathML, embedded in regular HTML text. MathJax is a Javascript library, so it works at the browser's side. After the HTML is rendered, the MathJax code scans the output, find pieces of text marked by user defined math delimiters (more on that later), and replaces them by typesetted math. The math may take a couple of seconds to show up depending on the browser and the network speed. The MathJax library can be fetched from content delivery network (CDN), so it is fairly simple to add MathJax to any Web site. Here is how I did it for this Drupal 6 site.</p>
<p>There is a <a href="https://drupal.org/project/mathjax">Drupal module for MathJax</a> that loads MathJax from CDN for every Drupal page. The module also allows Drupal pages to be selectively MathJax enabled according to some URL patterns. By default, all pages are MathJax enabled except for these paths: <em>admin/</em>, node/add/<em>, node/</em>/edit/<em>, which is reasonable. However, path based selective enabling is still a bit crude, because most pages would not contain math, so MathJax simply slows down page rendering for most pages without any benefit. It would be great if the selection can also be tag based, so only the posts tagged as "math" and maybe the front page need to incur such slow down. Another useful feature would be to allow MathJax configuration within the module. The default configuration of MathJax is not very reasonable for Drupal, <span style="text-decoration: line-through">so users have to add the configurations manually to the page template at this time</span>. </em><em>Updated Aug.25, 2011:</em>* Julou, the author of the module, has responded to my feature request and added a text area for MathJax configuration in the development version of the module. I have tested it and it works.</p>
<p>One of the most annoying default settings of MathJax is the definition of math delimiters. For inline math, the default delimiters are ( ), and for math on its own line, the default delimiters are [ ]. Because ( ) and [ ] are so commonly used in regular non-math text, this default setting is unreasonable for Drupal, as MathJax will remove the parentheses and change the text font to be math like for a Drupal page. Double dollar sign is okay, but to show the regular dollar sign properly, it needs to be escaped by reverse backslash, which is not the default setting of MathJax. Also, the default message display of MathJax is a bit too much for my taste, and I minimized them a bit.</p>
<p>If your site has the <a href="https://drupal.org/project/print">print module</a> installed, you need to copy the file <em>print.tpl.php</em> to your theme templates directory, and add the same as above so the print friendly version also show math properly. </p>
<p>For more MathJax configuration options, please refer to the <a href="https://www.mathjax.org/docs/1.1/configuration.html">MathJax documentation</a></p>Upgrade Drupal with Almost Zero Down Time2011-07-16T08:17:00-07:002011-07-16T08:17:00-07:00Huahaitag:yyhh.org,2011-07-16:/blog/2011/07/upgrade-drupal-with-almost-zero-down-time<p>This site was setup in 2007 with Drupal 5, and it has not been upgraded until today. I did not feel the need to upgrade since this is just a personal blog. A few days ago I wanted to install a module, but Drupal version 6 is required, so I …</p><p>This site was setup in 2007 with Drupal 5, and it has not been upgraded until today. I did not feel the need to upgrade since this is just a personal blog. A few days ago I wanted to install a module, but Drupal version 6 is required, so I thought it's finally the time to upgrade Drupal. </p>
<p>This <a href="https://drupal.org/node/340073">Drupal upgrade tutorial</a> suggests to first take down the site to upgrade, but I do not like that. It turns out that more than a few days of work are required to bring back a fully functional upgraded site, so taking the site down to upgrade is not a good idea. Below is what I did to upgrade this site from version 5.3 to 6.22 with almost zero down time (well, maybe a few seconds, I didn't time it). </p>
<p>The idea is simple: keep the old site running, setup a test site with a copy of the data, upgrade at test site, fix any problems there, delete the old site when done, and move the test site to be the production site. </p>
<p>First, the old version 5 site needs to be prepared. This means upgrading it from whatever old version to the latest version 5.22. Since this preparation is a minor upgrade, there is no need to bring down the site. Just download the 5.22 tar ball and unpack it over the existing Drupal directory. Run yoursite.com/update.php to update the database. Then download and install update_status module. It will tell you which third-party modules need to be upgraded. Download, unpack, run update.php, repeat, until all modules are at the lastest 5.x versions. Finally, uninstall update_status module, since it is included in Drupal 6 core. </p>
<p>To setup a test site, first create a <em>test.yoursite.com</em> sub-domain using your hosting company's tool. Most Web hosting companies allow sub-domains free of charge, and often provide easy to use tools for managing them (if yours does not, switch host company!). Download and unpack the latest Drupal 6 tar ball to a directory in the Web directory, and point the test.yoursite.com sub-domain to the directory using the hosting company's tool. Point the browser to test.yoursite.come, the Drupal installation page should show up. Now stop, DO NOT go though the installation process, for we are upgrading, not installing. Because this upgrade method requires two Drupal sites (e.g. one version 5 and one 6) running at the same time, we need to have two databases. Your hosting company should allow the creation of new databases free of charge. </p>
<p>First, we need to check the minimum <a href="https://drupal.org/requirements">system requirement</a> of the new version of Drupal, especially the database requirement. This can be found at <em>yoursite.com/admin/reports/status</em> page. Here, we are reaping the benefit of keeping the old site running while upgrading the test site: we can look up system information easily. In my case, the old site is using MySQL version 4.0, which is older than the minimum requirement of Drupal 6. Fortunately, newly created databases using my hosting company's tool are MySQL version 5.0. One thing needs to be careful about is the character encoding of the new database. Make sure it is using <em>utf-8</em> for charset, and the collation is <em>utf8_general_ci</em>. The later is often not the default, so we need to set it under Operations/Collations in phpMyAdmin, a MySQL management tool most hosting companies provide. </p>
<p>Now we need to roll over the data. This can be done simply with phpMyAdmin. First, login as the primary administrator (the first user, uid=1) at the old Drupal site, and then dump its database using phpMyAdmin. Basically, we need to export all the tables. If the tables are big, you may want to export a few tables at a time. For some tables, such as <em>cache, cache_*, sessions, search_*, and watchdog</em>, you may want to export the structure only, instead of both structure and data, as these data can be dynamically regenerated. </p>
<p>The exported database consists of a bunch of compressed SQL text files. Using phpMyAdmin, browse to the newly created empty database, run these SQL files to import all the tables. After the new database is ready, we need to edit the new Drupal directory's <em>sites/default/settings.php</em> file. This file is not there initially. There are two ways to create it: a). Copy the file from old Drupal directory if there are a lot of customizations done there; b). Rename the file <em>default.settings.php</em> to <em>settings.php</em>. I took the later approach. Now in <em>settings.php</em>, find the line looks like <em>\$db_url = 'mysql://username:<a href="mailto:password@hostname">password@hostname</a>/databasename';</em>, and replace with the correct information for the new database. Save the file, now the new Drupal knows where the database is. Next step is to copy over the old Drupal directory's <em>files</em> directory, and redo any customizations done for <em>.htaccess</em> and <em>robot.txt</em>. Point the browser to <em>test.yoursite.com/update.php</em>, and follow instructions to update the database. There might be some warnings, but it should be fine if there's no error. </p>
<p>After Drupal core is upgraded. Download the third-party modules, and install them. After installing each one, don't forget to run update.php again. We again look at the running old site to see what modules are needed. Otherwise, one has to write down a long list of module names first. I still cannot believe how many modules are necessary to run a simple site like this. For fighting spams alone, I installed seven modules. Maybe it is an overkill, but it does not hurt to be on the prudent side. </p>
<p>Upgrading modules are easy and relatively quick. The big time sink is upgrading the theme. This site uses a sub-theme of <a href="https://drupal.org/project/zen">zen</a>. It turns out that the theming systems of Drupal 5 and 6 are quite different, so we cannot just copy the old theme over and expect it to work. All the customizations have to be redone, which means hacking the template files and the CSS files all over again. Having a working old site running is again a big help. Because the tag ids and classes are all different, it is necessary to use Firebug to track and match the styles of the two versions while hacking the CSS files. </p>
<p>After the new site is tested to be working properly, it is the time to bring the old site off-line and bring the new site online. All it requires is to issue a <em>rm -rf</em> command to delete the old Drupal directory, followed by a <em>mv</em> command to move the new Drupal directory to the old one, so that amounts to a couple seconds of down time. Not bad.</p>3 Time-Saving Tools for Busy Professionals2011-07-16T08:06:00-07:002011-07-16T08:06:00-07:00Yunyaotag:yyhh.org,2011-07-16:/blog/2011/07/3-time-saving-tools-for-busy-professionals<p>As a busy professional, I am consistently looking for ways to save time. Below are 3 time-saving tools that I have found most useful.</p>
<p>1. <a href="https://www.chorebuster.net/">Chore Buster</a></p>
<p>With two busy professionals in the same household, dividing chores around the house can be tricky. Dividing chores in a fixed way is …</p><p>As a busy professional, I am consistently looking for ways to save time. Below are 3 time-saving tools that I have found most useful.</p>
<p>1. <a href="https://www.chorebuster.net/">Chore Buster</a></p>
<p>With two busy professionals in the same household, dividing chores around the house can be tricky. Dividing chores in a fixed way is one solution. But one can quickly get bored of doing the same thing everyday.</p>
<p>With this neat free online tool, we get automatic daily chore assignment based on a pre-defined list of house chores and preference of chores for each person. It is really fun to check off the items at the end of the day. Besides ensure fairness of the chore assignment, the tool also serves as a reminder for chores that only happens once in a while.</p>
<p>2. <a href="https://www.mint.com/">Mint</a></p>
<p>As the CFO of the family, I do need to keep track of our financial situation. However, I don't really have much time to do so. Mint has been a great help in this regards.</p>
<p>3. <a href="https://www.farmfreshtoyou.com">Farm Fresh to You</a></p>
<p>Both Huahai and I enjoy cooking. However, weekly grocery shopping can be time-consuming. <span class="st">This service basically gets organic produce delivery directly to my home from a local organic farmers. It costs $31.5 a box for a week of organic vegetable and fruit. </span></p>
<p><span class="st">We now only do grocery shopping every other weeks, saving both time and fuel. One thing that I like about the service is that I can exclude items so that I won't get anything that I don't like. </span></p>
<p><span class="st">If you decide to try this service out, don't forget to mention promotion code </span><span class="st">2798 and </span><span class="st">our customer number </span>236470 to get 20% off your first box.</p>How to Share Mouse and Keyboard across Machines2011-07-11T00:45:00-07:002011-07-11T00:45:00-07:00Yunyaotag:yyhh.org,2011-07-11:/blog/2011/07/how-to-share-mouse-and-keyboard-across-machines<p>If you have multiple machines but only one set of mouse and keyboard, then you must check out this neat little tool called <a href="https://synergy-foss.org">Synergy</a>. It allows you to seamlessly share mouse and keyboard across machines. It even allows you to copy and paste text across machines.</p>
<p>I have been using …</p><p>If you have multiple machines but only one set of mouse and keyboard, then you must check out this neat little tool called <a href="https://synergy-foss.org">Synergy</a>. It allows you to seamlessly share mouse and keyboard across machines. It even allows you to copy and paste text across machines.</p>
<p>I have been using it for a few years now and have recommended it to many already. We all absolutely love it. My current set up is a desktop with two monitors and a set of keyboard and mouse connecting to it. Then I have a laptop with another monitor sharing the keyboard and mouse via Synergy with my desktop. This way I can use two machines and three monitors at the same time without any interruption.</p>
<p>I simply cannot imagine my life w/o Synergy. It is technically straightforward but really useful!</p>Fix Drupal Search2011-07-10T19:18:00-07:002011-07-10T19:18:00-07:00Huahaitag:yyhh.org,2011-07-10:/blog/2011/07/fix-drupal-search<p>Today I tried to search "clojure" using the search box at the top right corner, but could not find anything. I know I wrote a few posts on Clojure recently, so there must be something wrong with the search functionality here. This is a Drupal site, and this should be …</p><p>Today I tried to search "clojure" using the search box at the top right corner, but could not find anything. I know I wrote a few posts on Clojure recently, so there must be something wrong with the search functionality here. This is a Drupal site, and this should be an easy fix. Indeed, I quickly figured out the problem and solved it.Here is what Idid.</p>
<p>After I login to the administrative interface, I saw lots of cron related errors at the <strong>/admin/logs/watchdog</strong> page: "<em>Cron has been running for more than an hour and is most likely stuck.</em>" A google search suggests that this is a common problem. One of the possible reasons is that there are too many things for cron to do so that it cannot finish them within the time limit or it runs out of the memory. The solution is to reduce the amount of work a cron job has to do. Since the indexing of the content on this site is done with a cron job, I checked the indexing setting at <strong>/admin/settings/search</strong> page. Sure enough, the option <strong>Items to index per cron run:</strong> was set at 100, so I changed it to 10 instead.</p>
<p>I then tried to manually run cron job at <strong>/admin/logs/status</strong> page, but it didn't work. It turned out that it is necessary to clear the cron related variables in the MySQL database Drupal uses. To do that, I logined into my hosting company's <em>phpmyadmin</em> interface, searched for "<strong>cron_last</strong>" and "<strong>cron_semaphore</strong>". There was no "cron_semaphore", but there was a "cron_last" entry, so I deleted it. Manually ran cron again, now it said "<em>Cron ran successfully</em>". After several manual runs to get the indexing status to be 100% done, now I can do a search on "clojure", and get the posts to show up. Nice.</p>Review on Hex Bug as Cat Toy2011-07-10T06:04:00-07:002011-07-10T06:04:00-07:00Yunyaotag:yyhh.org,2011-07-10:/blog/2011/07/review-on-hex-bug-as-cat-toy<p>I am consistantly looking for new ways to entertain the cats, as they get bored with their toys very quickly. One new toy I have recently bought for them is <a href="https://www.amazon.com/HEXBUG-Fire-Ant-Colors-vary/dp/B00TV0S746">Hex Ant</a>.</p>
<p>I tried it during the cats outdoor time. Mayori completely ingored it, while Tom was obviously attracted to …</p><p>I am consistantly looking for new ways to entertain the cats, as they get bored with their toys very quickly. One new toy I have recently bought for them is <a href="https://www.amazon.com/HEXBUG-Fire-Ant-Colors-vary/dp/B00TV0S746">Hex Ant</a>.</p>
<p>I tried it during the cats outdoor time. Mayori completely ingored it, while Tom was obviously attracted to it immediately.</p>
<p><img src="https://farm7.static.flickr.com/6138/5921007030_f5acbaee28.jpg" width="334" height="500" alt="Tom and the Hex Ant" /></p>
<p>He tried to smell it.</p>
<p><img src="https://farm7.static.flickr.com/6029/5920442353_00a3a63958.jpg" width="334" height="500" alt="Tom and Hex Ant" /><img src="https://farm7.static.flickr.com/6138/5920441967_a6cd68e649.jpg" width="334" height="500" /></p>
<p>Unfortunately, his interest towards the new toy didn't last long. He quickly walked away as soon as he found out it is not a real bug.</p>
<p>.<img src="https://farm7.static.flickr.com/6020/5921004268_34c07d379d.jpg" width="334" height="500" /></p>
<p>I thus don't recommend it for cat toy. However, it is an interesting piece of toy for myself. So I still recommend it as a human toy. </p>Review of The Refined Feline Lotus Cat Tower2011-07-04T09:06:00-07:002011-07-04T09:06:00-07:00Yunyaotag:yyhh.org,2011-07-04:/blog/2011/07/review-of-the-refined-feline-lotus-cat-tower<p>The old cat tree of Mayori and Tom were bought nearly 4 years ago and has started to show its age. I have been shopping for a new cat tree for a while now. I need something that is nicer than the typical carpet covered cat tree and goes well …</p><p>The old cat tree of Mayori and Tom were bought nearly 4 years ago and has started to show its age. I have been shopping for a new cat tree for a while now. I need something that is nicer than the typical carpet covered cat tree and goes well with the rest of the house. At the same time, I want to get something that Mayori and Tom can really enjoy. Unfortunately, there is very limited number of such choices on the market. One of them is Refined Feline Lotus Cat Tower</p>
<p><a href="https://www.amazon.com/gp/product/B004BA6LSU/ref=as_li_tf_il?ie=UTF8&tag=yunyaoshome-20&linkCode=as2&camp=217145&creative=399373&creativeASIN=B004BA6LSU"><img alt="product" src="https://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=B004BA6LSU&MarketPlace=US&ID=AsinImage&WS=1&tag=yunyaoshome-20&ServiceVersion=20070822"></a><img src="https://www.assoc-amazon.com/e/ir?t=yunyaoshome-20&l=as2&o=1&a=B004BA6LSU&camp=217145&creative=399373" width="1" height="1" /></p>
<p>According to the online reviews, most of the cats and the cat owners like this product. So we brought one for the cats to try out.</p>
<p>Tom was very curious to check the package out when it arrived. He pointed out some minor damage on the package itself.</p>
<p><img src="https://farm7.static.flickr.com/6007/5899933185_5d5a8d4dbe.jpg" width="500" height="375" alt="Lotus Cat Tower" /><img src="https://farm7.static.flickr.com/6099/5899933159_3d6d66d9e4.jpg" width="500" height="375" alt="Lotus Cat Tower" /></p>
<p>But he liked new cat tree already once we unpackaged it and immediately claimed one piece as his own.<br>
<img src="https://farm6.static.flickr.com/5275/5899933207_9b134cb17b.jpg" width="500" height="375" alt="Lotus Cat Tree." /></p>
<p>Mayori seemed to be satisfied too and kept on inspecting the installation process.</p>
<p><img src="https://farm7.static.flickr.com/6049/5900513272_e4f622eaec.jpg" width="375" height="500" alt="Lotus Cat tree" /></p>
<p>And she claimed the top as soon as the installation was completed. (The installation took less than 2 hours and was not difficult according to Huahai.)</p>
<p><img src="https://farm7.static.flickr.com/6021/5899933243_2ef8858035.jpg" width="375" height="500" alt="lotus cat tree" /></p>
<p>Tom claimed the cube at the bottom.</p>
<p><img src="https://farm7.static.flickr.com/6011/5900498880_1f72b921eb.jpg" width="500" height="375" alt="lotus cat tower" /></p>
<p>Comparing to the old cat tree, the new Refine Feline Lotus Cat Tower is obviously much nicer and looks more like a human furniture. It goes really well with the rest of our bedroom furniture. It is definitely worthy considering for one who is looking to find a cat furniture with great style.</p>
<p><img src="https://farm6.static.flickr.com/5318/5900498912_f9def84576.jpg" width="375" height="500" alt="Lotus Cat Tower" /></p>Cat with Evil Eyes2011-07-04T07:58:00-07:002011-07-04T07:58:00-07:00Yunyaotag:yyhh.org,2011-07-04:/blog/2011/07/cat-with-evil-eyes<p>Mayori is mostly a very sweet girl. However, she can have evil eyes as well. Look at the follow photo when she wants to hunt to the toy mouse. She certainly looks more like a leopard than a domestic cat!</p>
<p><img src="https://farm6.static.flickr.com/5111/5899856969_d8388b35cd.jpg" width="500" height="333" alt="cat with evil eyes" /></p>Cat Boxing2011-07-04T07:44:00-07:002011-07-04T07:44:00-07:00Yunyaotag:yyhh.org,2011-07-04:/blog/2011/07/cat-boxing<p>Mayori and Tom grow up together ever since they were still little kittens in the shelter. However, they still love to fight, especially for the best spot for window-watching the outside.</p>
<p><img src="https://farm7.static.flickr.com/6048/5900398848_59e43b506b.jpg" width="500" height="333" alt="cat fight" /></p>Samba Cat Dancer2011-07-04T07:35:00-07:002011-07-04T07:35:00-07:00Yunyaotag:yyhh.org,2011-07-04:/blog/2011/07/samba-cat-dancer<p>Tom shows off his Samba dance skill.</p>
<p><img src="https://farm6.static.flickr.com/5280/5899820299_2a6710ec3e.jpg" width="333" height="500" alt="samba dancing cat" /></p>Cat with Impeccable Taste2011-07-04T07:17:00-07:002011-07-04T07:17:00-07:00Yunyaotag:yyhh.org,2011-07-04:/blog/2011/07/cat-with-impeccable-taste<p>As a cat, Mayori has impeccable taste, as represented by her favorite furniture in the house --- a Bertoia Diamond Lounge chair.</p>
<p>It is certainly a modern classic and a piece of highly functional cat furniture as well – Mayori can attack Tom easily from all different angels and only need to …</p><p>As a cat, Mayori has impeccable taste, as represented by her favorite furniture in the house --- a Bertoia Diamond Lounge chair.</p>
<p>It is certainly a modern classic and a piece of highly functional cat furniture as well – Mayori can attack Tom easily from all different angels and only need to defend her from one angel. What a smart cat!</p>
<p><img src="https://farm7.static.flickr.com/6010/5899768087_1b94f36179.jpg" width="500" height="441" alt="cat on a beroia Diamond Chair" /></p>Cat with Big Paws2011-07-04T06:56:00-07:002011-07-04T06:56:00-07:00Yunyaotag:yyhh.org,2011-07-04:/blog/2011/07/cat-with-big-paws<p>Tom shows off his catch and his big paws.</p>
<p><img src="https://farm6.static.flickr.com/5155/5899746253_57b0eb9cbc.jpg" width="500" height="333" alt="cat with big paws" /></p>Cat Drinking from Wine Glass2011-07-04T06:44:00-07:002011-07-04T06:44:00-07:00Yunyaotag:yyhh.org,2011-07-04:/blog/2011/07/cat-drinking-from-wine-glass<p>Mayori loves drinking fresh-served water, especially from a wine glass. Obviously she believes that is the right way to drink water for a cat princess.</p>
<p><img src="https://farm7.static.flickr.com/6037/5899724117_ab11a7d14e.jpg" width="333" height="500" alt="cat drink from wine glass" /></p>Cat in a Drawer2011-07-04T06:36:00-07:002011-07-04T06:36:00-07:00Yunyaotag:yyhh.org,2011-07-04:/blog/2011/07/cat-in-a-drawer<p>Mayori loves to play hide-and-seek with us. The top drawer of our dresser is now her new hiding place.</p>
<p><img src="https://farm6.static.flickr.com/5152/5900257646_9b93849367.jpg" width="500" height="333" alt="cat in a drawer." /></p>Cat Pizza Delivery2011-07-04T06:31:00-07:002011-07-04T06:31:00-07:00Yunyaotag:yyhh.org,2011-07-04:/blog/2011/07/cat-pizza-delivery<p>Cat in a pizza box?</p>
<p>Either Mayori believes that she tastes better than the fresh baked version or that she believe that she needs a new bed smelled like fresh baked pizza. Either way she obviously enjoys the pizza box. </p>
<p><img src="https://farm7.static.flickr.com/6032/5900257594_e659867ea4.jpg" width="500" height="375" /></p>How to redeem British Airways mileages for partner airline flights2011-06-15T05:35:00-07:002011-06-15T05:35:00-07:00Yunyaotag:yyhh.org,2011-06-15:/blog/2011/06/how-to-redeem-british-airways-mileages-for-partner-airline-flights<p>I have accumulated over 60,000 miles on British Airlines Executive Club reward account for a while now, but keep on having problem redeeming them. First of all, it is difficult to find any reward flight available; secondly, the fee is extremely high --- for a flight from SFO to LHR …</p><p>I have accumulated over 60,000 miles on British Airlines Executive Club reward account for a while now, but keep on having problem redeeming them. First of all, it is difficult to find any reward flight available; secondly, the fee is extremely high --- for a flight from SFO to LHR, I would have to pay 50000 miles + over $600 fee, while the same flight costs less than $1000 when paying with cash.</p>
<p>Over the weekend, I have investigated the problem and found out that one of the best ways to spend my BA miles is to redeem for British Airways' partner airline flights. However, it is not straightforward to do so, as BA would show its own flights with steep fee first, except when American Airlines and a couple of other partner airlines operate the same route.</p>
<p>The easiest way I found is the following:</p>
<p>1. First, check AA's <a href="https://www.aa.com/i18n/aboutUs/whereWeFly/maps/world.jsp">route map</a> to find out flight routes operated by AA: </p>
<p>2. Once you find a route of interest, go to BA's <a href="https://www.britishairways.com/travel/home/public/en_us?link=top_logo">website</a></p>
<p>3. Click on the tab "Executive Club", choose "Spending BA miles" on the drop-down menu, then click on "Book with BA miles" on the left-hand side menu.</p>
<p>4. Log in and search with the desired route and time.</p>
<p>For instance, I am interested in booking a flight between SFO and HNL, because I know there are only flights operated by AA for the route.</p>
<p>You will see a screen similar to the following:</p>
<p><img src="https://farm6.static.flickr.com/5108/5835342640_08339d564d.jpg" width="500" height="485" alt="screenshot" /></p>
<p>5. Now you can either click on "Search" or "Include Parnter" for flights operated by AA.</p>
<p>If you see the red error message "Unfortunately our systems are not responding, so we are unable to process your request at the moment. We apologies for this inconvenience and suggest you try again later." Don't panic. Just keep on clicking and it will go through eventually.</p>
<p>With the above method, I was able to book two reward tickets from SFO to HNL with 35,000 miles + $10 fee each.</p>My solutions for problems No. 76-100 on 4clojure.com2011-06-05T05:36:00-07:002011-06-05T05:36:00-07:00Huahaitag:yyhh.org,2011-06-05:/blog/2011/06/my-solutions-for-problems-no-76-100-on-4clojurecom<p>Finally done with all the 100 problems listed on 4clojure.com so far :-). When new problems appears there, I will probably do them when I have some time to kill, but I will not post my solutions here any more. If I found interesting programming exercises, I may submit to …</p><p>Finally done with all the 100 problems listed on 4clojure.com so far :-). When new problems appears there, I will probably do them when I have some time to kill, but I will not post my solutions here any more. If I found interesting programming exercises, I may submit to 4clojure as well.</p>
<p>This has been a great learning experience. I become very familiar with the core Clojure functions, especially the great sequence library. The functional way of writing code is so much fun, I wish I have been exposed to it earlier. Now I am hooked and would like to learn more. It's a pity there ain't many functional algorithm books around. The one I found is Chris Okasaki's "Purely Functional Data Structures", but the exposition language is Standard ML. Let's hope it can be easily translated into Clojure...</p>
<p><font face="monospace"><br>
<font color="#786000">; 77: Write a function which finds all the anagrams in a vector of words. A </font><br>
<font color="#786000">; word x is an anagram of word y if all the letters in x can be rearranged in </font><br>
<font color="#786000">; a different order to form y. Your function should return a set of sets, where</font><br>
<font color="#786000">; each sub-set is a group of words which are anagrams of each other. Each </font><br>
<font color="#786000">; sub-set should have at least two words. Words without any anagrams should not</font><br>
<font color="#786000">; be included in the result.</font><br>
<font color="#786000">; (= (__ ["meat" "mat" "team" "mate" "eat"]) #{#{"meat" "team" "mate"}})</font><br>
<font color="#786000">; (= (__ ["veer" "lake" "item" "kale" "mite" "ever"]) </font><br>
<font color="#786000">; #{#{"veer" "ever"} #{"lake" "kale"} #{"mite" "item"}})</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>coll<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#800090">->></font> <font color="#ee9a00">(</font><font color="#007080">group-by</font> <font color="#007080">frequencies</font> coll<font color="#ee9a00">)</font><br>
<font color="#ee9a00">(</font><font color="#007080">vals</font><font color="#ee9a00">)</font><br>
<font color="#ee9a00">(</font><font color="#1f3f81"><strong>filter</strong></font> <font color="#912f11">#(</font><font color="#007080">></font> <font color="#912f11">(</font><font color="#007080">count</font> %<font color="#912f11">)</font> <font color="#077807">1</font><font color="#912f11">)</font><font color="#ee9a00">)</font><br>
<font color="#ee9a00">(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#007080">set</font> <font color="#ee9a00">)</font><br>
<font color="#007080">set</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; anagrams have the same distribution of characters </font></p>
<p><font color="#786000">; 79: Write a function which calculates the sum of the minimal path through a </font><br>
<font color="#786000">; triangle. The triangle is represented as a vector of vectors. The path should </font><br>
<font color="#786000">; start at the top of the triangle and move to an adjacent number on the next </font><br>
<font color="#786000">; row until the bottom of the triangle is reached. </font><br>
<font color="#786000">; (= (__ [ [1]</font><br>
<font color="#786000">;[2 4]</font><br>
<font color="#786000">;[5 1 4]</font><br>
<font color="#786000">;[2 3 4 5]])</font><br>
<font color="#786000">;(+ 1 2 1 3)</font><br>
<font color="#786000">;7)</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>triangle<font color="#912f11">]</font> <br>
<font color="#cd3700">(</font><font color="#007080">apply</font> <font color="#007080">min</font> <font color="#ee9a00">(</font><font color="#cdcd00">(</font><font color="#912f11">fn</font> path-sum <font color="#912f11">[</font>p<font color="#912f11">]</font> <br>
<font color="#698b22">(</font><font color="#007080">concat</font> <br>
<font color="#008b00">(</font><font color="#912f11">if</font> <font color="#96cdcd">(</font><font color="#007080">=</font> <font color="#00688b">(</font><font color="#007080">count</font> triangle<font color="#00688b">)</font> <font color="#00688b">(</font><font color="#007080">count</font> p<font color="#00688b">)</font><font color="#96cdcd">)</font> <br>
<font color="#912f11">[(</font><font color="#1f3f81"><strong>reduce</strong></font> <font color="#007080">+</font> <font color="#cd3700">(</font><font color="#1f3f81"><strong>map-indexed</strong></font> <font color="#912f11">#(</font><font color="#007080">get-in</font> triangle <font color="#912f11">[</font>%<font color="#077807">1</font> %<font color="#077807">2</font><font color="#912f11">])</font> p<font color="#cd3700">)</font><font color="#912f11">)]</font> <br>
<font color="#96cdcd">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>x <font color="#912f11">(</font><font color="#007080">last</font> p<font color="#912f11">)]</font> <br>
<font color="#00688b">(</font><font color="#007080">concat</font> <br>
<font color="#483d8b">(</font>path-sum <font color="#9400d3">(</font><font color="#007080">conj</font> p x<font color="#9400d3">)</font><font color="#483d8b">)</font> <br>
<font color="#483d8b">(</font>path-sum <font color="#9400d3">(</font><font color="#007080">conj</font> p <font color="#912f11">(</font><font color="#007080">inc</font> x<font color="#912f11">)</font><font color="#9400d3">)</font><font color="#483d8b">)</font><font color="#00688b">)</font><font color="#96cdcd">)</font><font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font> <br>
<font color="#912f11">[</font><font color="#077807">0</font><font color="#912f11">]</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; We enumerate all possible paths. The next step in a path can only go to the </font><br>
<font color="#786000">; same or the plus one row index as the previous step, so the paths form a</font><br>
<font color="#786000">; binary tree. We walk the tree recursively, building a row index vector p for</font><br>
<font color="#786000">; each path.</font></p>
<p><font color="#786000">; 81: Reimplement set intersection</font><br>
<font color="#912f11">#(</font><font color="#007080">set</font> <font color="#912f11">(</font><font color="#1f3f81"><strong>filter</strong></font> %<font color="#077807">1</font> %<font color="#077807">2</font><font color="#912f11">))</font><br>
<font color="#786000">; sets are functions too, so this works</font></p>
<p><font color="#786000">; 82: A word chain consists of a set of words ordered so that each word differs</font><br>
<font color="#786000">; by only one letter from the words directly before and after it. The one </font><br>
<font color="#786000">; letter difference can be either an insertion, a deletion, or a substitution. </font><br>
<font color="#786000">; Here is an example word chain:</font><br>
<font color="#786000">; cat -> cot -> coat -> oat -> hat -> hot -> hog -> dog</font><br>
<font color="#786000">; Write a function which takes a sequence of words, and returns true if they </font><br>
<font color="#786000">; can be arranged into one continous word chain, and false if they cannot.</font><br>
<font color="#786000">; (= false (__ #{"cot" "hot" "bat" "fat"}))</font><br>
<font color="#786000">; (= true (__ #{"spout" "do" "pot" "pout" "spot" "dot"}))</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>word-set<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#800090">letfn</font> <font color="#912f11">[(</font>edit-dist <font color="#912f11">[</font>a b<font color="#912f11">]</font> <br>
<font color="#cd3700">(</font><font color="#1f3f81"><strong>cond</strong></font> <br>
<font color="#ee9a00">(</font><font color="#007080">not</font> <font color="#cdcd00">(</font><font color="#800090">or</font> a b<font color="#cdcd00">)</font><font color="#ee9a00">)</font> <font color="#077807">0</font> <br>
<font color="#ee9a00">(</font><font color="#007080">not</font> b<font color="#ee9a00">)</font> <font color="#ee9a00">(</font><font color="#007080">count</font> a<font color="#ee9a00">)</font> <br>
<font color="#ee9a00">(</font><font color="#007080">not</font> a<font color="#ee9a00">)</font> <font color="#ee9a00">(</font><font color="#007080">count</font> b<font color="#ee9a00">)</font> <br>
<font color="#1f3f81"><strong>:else</strong></font> <font color="#ee9a00">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>ra <font color="#912f11">(</font><font color="#007080">next</font> a<font color="#912f11">)</font> rb <font color="#912f11">(</font><font color="#007080">next</font> b<font color="#912f11">)]</font> <br>
<font color="#cdcd00">(</font><font color="#912f11">if</font> <font color="#698b22">(</font><font color="#007080">=</font> <font color="#008b00">(</font><font color="#007080">first</font> a<font color="#008b00">)</font> <font color="#008b00">(</font><font color="#007080">first</font> b<font color="#008b00">)</font><font color="#698b22">)</font> <br>
<font color="#698b22">(</font>edit-dist ra rb<font color="#698b22">)</font> <br>
<font color="#698b22">(</font><font color="#007080">+</font> <font color="#077807">1</font> <font color="#008b00">(</font><font color="#007080">min</font> <br>
<font color="#96cdcd">(</font>edit-dist ra rb<font color="#96cdcd">)</font> <br>
<font color="#96cdcd">(</font>edit-dist ra b<font color="#96cdcd">)</font> <br>
<font color="#96cdcd">(</font>edit-dist a rb<font color="#96cdcd">)</font><font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#912f11">(</font>find-paths <font color="#912f11">[</font>graph start seen<font color="#912f11">]</font> <br>
<font color="#cd3700">(</font><font color="#912f11">if</font> <font color="#ee9a00">(</font>seen start<font color="#ee9a00">)</font> <br>
seen<br>
<font color="#ee9a00">(</font><font color="#1f3f81"><strong>for</strong></font> <font color="#912f11">[</font>n <font color="#912f11">(</font>graph start<font color="#912f11">)]</font> <br>
<font color="#cdcd00">(</font>find-paths graph n <font color="#698b22">(</font><font color="#007080">conj</font> seen start<font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)]</font> <br>
<font color="#ee9a00">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>graph <font color="#912f11">(</font><font color="#007080">into</font> <font color="#912f11">{}</font> <br>
<font color="#cd3700">(</font><font color="#1f3f81"><strong>for</strong></font> <font color="#912f11">[</font>s word-set<font color="#912f11">]</font> <br>
<font color="#912f11">[</font>s <font color="#912f11">(</font><font color="#1f3f81"><strong>filter</strong></font> <font color="#912f11">#(</font><font color="#007080">=</font> <font color="#077807">1</font> <font color="#912f11">(</font>edit-dist s %<font color="#912f11">))</font> word-set<font color="#912f11">)]</font><font color="#cd3700">)</font><font color="#912f11">)]</font><br>
<font color="#cdcd00">(</font><font color="#912f11">if</font> <font color="#698b22">(</font><font color="#007080">some</font> <font color="#008b00">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>w<font color="#912f11">]</font> <br>
<font color="#96cdcd">(</font><font color="#007080">some</font> <font color="#912f11">#(</font><font color="#007080">=</font> word-set <font color="#912f11">%</font><font color="#912f11">)</font> <br>
<font color="#00688b">(</font><font color="#007080">flatten</font> <font color="#483d8b">(</font>find-paths graph w <font color="#912f11">#{}</font><font color="#483d8b">)</font><font color="#00688b">)</font><font color="#96cdcd">)</font><font color="#008b00">)</font> <br>
word-set<font color="#698b22">)</font> <br>
<font color="#077807">true</font> <font color="#077807">false</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; This problem consists of two sub-problems: A. Determine the edit distance </font><br>
<font color="#786000">; between two strings. For brevity, we just used the standard recursive </font><br>
<font color="#786000">; algorithm instead of dynamic programming. B. For the graph of strings </font><br>
<font color="#786000">; connected by edges of edit distance 1, find a simple (no loop) path that </font><br>
<font color="#786000">; goes through all strings once and only once. The graph is represented as</font><br>
<font color="#786000">; a map of adjacent node lists. We enumerate all simple paths in the graph </font><br>
<font color="#786000">; until we found one going through all nodes.</font></p>
<p><font color="#786000">; 84: Write a function which generates the transitive closure of a binary </font><br>
<font color="#786000">; relation. The relation will be represented as a set of 2 item vectors.</font><br>
<font color="#786000">; (let [divides #{[8 4] [9 3] [4 2] [27 9]}]</font><br>
<font color="#786000">; (= (__ divides) #{[4 2] [8 4] [8 2] [9 3] [27 9] [27 3]}))</font><br>
<font color="#786000">; (let [progeny</font><br>
<font color="#786000">; #{["father" "son"] ["uncle" "cousin"] ["son" "grandson"]}]</font><br>
<font color="#786000">; (= (__ progeny)</font><br>
<font color="#786000">; #{["father" "son"] ["father" "grandson"]</font><br>
<font color="#786000">; ["uncle" "cousin"] ["son" "grandson"]}))</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>relation<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#800090">letfn</font> <font color="#912f11">[(</font>expand <font color="#912f11">[</font>r<font color="#912f11">]</font> <br>
<font color="#cd3700">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>m <font color="#912f11">(</font><font color="#007080">into</font> <font color="#912f11">{}</font> r<font color="#912f11">)]</font> <br>
<font color="#ee9a00">(</font><font color="#800090">->></font> <font color="#cdcd00">(</font><font color="#007080">concat</font> <br>
r<br>
<font color="#698b22">(</font><font color="#1f3f81"><strong>for</strong></font> <font color="#912f11">[[</font>k v<font color="#912f11">]</font> m<font color="#912f11">]</font> <br>
<font color="#008b00">(</font><font color="#1f3f81"><strong>when-let</strong></font> <font color="#912f11">[</font>nv <font color="#912f11">(</font>m v<font color="#912f11">)]</font> <font color="#912f11">[</font>k nv<font color="#912f11">]</font><font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font> <br>
<font color="#cdcd00">(</font><font color="#1f3f81"><strong>filter</strong></font> <font color="#007080">identity</font><font color="#cdcd00">)</font> <br>
<font color="#007080">set</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#912f11">(</font>first-consecutive <font color="#912f11">[</font>pred <font color="#912f11">[</font>f <font color="#912f11">&</font> rs<font color="#912f11">]]</font> <br>
<font color="#cd3700">(</font><font color="#1f3f81"><strong>when</strong></font> rs<br>
<font color="#ee9a00">(</font><font color="#912f11">if</font> <font color="#cdcd00">(</font>pred f <font color="#698b22">(</font><font color="#007080">first</font> rs<font color="#698b22">)</font><font color="#cdcd00">)</font><br>
f<br>
<font color="#cdcd00">(</font><font color="#1f3f81"><strong>recur</strong></font> pred rs<font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)]</font><br>
<font color="#ee9a00">(</font>first-consecutive <font color="#007080">=</font> <font color="#cdcd00">(</font><font color="#007080">iterate</font> expand relation<font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; we iteratively expand the set of transitive relation, until the set no </font><br>
<font color="#786000">; longer changes</font></p>
<p><font color="#786000">; 85: Write a function which generates the power set of a given set. The power </font><br>
<font color="#786000">; set of a set x is the set of all subsets of x, including the empty set and x </font><br>
<font color="#786000">; itself.</font><br>
<font color="#786000">; (= (__ #{1 :a}) #{#{1 :a} #{:a} #{} #{1}})</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>s<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#1f3f81"><strong>reduce</strong></font> <br>
<font color="#ee9a00">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>init e<font color="#912f11">]</font> <br>
<font color="#cdcd00">(</font><font color="#007080">set</font> <font color="#698b22">(</font><font color="#007080">concat</font> init <font color="#008b00">(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#912f11">#(</font><font color="#007080">conj</font> <font color="#912f11">%</font> e<font color="#912f11">)</font> init<font color="#008b00">)</font> <font color="#912f11">[#{</font>e<font color="#912f11">}]</font><font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><br>
<font color="#912f11">#{#{}}</font> s<font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; we just add one element at a time</font></p>
<p><font color="#786000">; 86: Happy numbers are positive integers that follow a particular formula: take</font><br>
<font color="#786000">; each individual digit, square it, and then sum the squares to get a new number</font><br>
<font color="#786000">; Repeat with the new number and eventually, you might get to a number whose </font><br>
<font color="#786000">; squared sum is 1. This is a happy number. An unhappy number (or sad number) is</font><br>
<font color="#786000">; one that loops endlessly. Write a function that determines if a number is </font><br>
<font color="#786000">; happy or not.</font><br>
<font color="#786000">; (= (__ 7) true)</font><br>
<font color="#786000">; (= (__ 986543210) true)</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>x<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#800090">letfn</font> <font color="#912f11">[(</font>digits <font color="#912f11">[</font>n<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#1f3f81"><strong>for</strong></font> <font color="#912f11">[</font>y <font color="#912f11">(</font><font color="#007080">iterate</font> <font color="#cd3700">(</font><font color="#007080">partial</font> <font color="#007080">*</font> <font color="#077807">10</font><font color="#cd3700">)</font> <font color="#077807">1</font><font color="#912f11">)</font> <font color="#1f3f81"><strong>:while</strong></font> <font color="#912f11">(</font><font color="#007080"><=</font> y n<font color="#912f11">)]</font><br>
<font color="#ee9a00">(</font><font color="#007080">rem</font> <font color="#cdcd00">(</font><font color="#007080">int</font> <font color="#698b22">(</font><font color="#007080">/</font> n y<font color="#698b22">)</font><font color="#cdcd00">)</font> <font color="#077807">10</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#912f11">(</font>sqr-sum <font color="#912f11">[</font>ds<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#1f3f81"><strong>reduce</strong></font> <font color="#007080">+</font> <font color="#ee9a00">(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#912f11">#(</font><font color="#007080">*</font> <font color="#912f11">%</font> <font color="#912f11">%</font><font color="#912f11">)</font> ds<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)]</font><br>
<font color="#ee9a00">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>r <font color="#912f11">(</font><font color="#007080">some</font> <font color="#912f11">#{</font><font color="#077807">1</font> <font color="#077807">4</font><font color="#912f11">}</font> <font color="#cd3700">(</font><font color="#007080">iterate</font> <font color="#ee9a00">(</font><font color="#007080">comp</font> sqr-sum digits<font color="#ee9a00">)</font> x<font color="#cd3700">)</font><font color="#912f11">)]</font><br>
<font color="#cdcd00">(</font><font color="#1f3f81"><strong>cond</strong></font><br>
<font color="#698b22">(</font><font color="#007080">=</font> <font color="#077807">1</font> r<font color="#698b22">)</font> <font color="#077807">true</font><br>
<font color="#698b22">(</font><font color="#007080">=</font> <font color="#077807">4</font> r<font color="#698b22">)</font> <font color="#077807">false</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; it turns out that 4 is a sad number, as it results into an infinite loop</font></p>
<p><font color="#786000">; 88: Write a function which returns the symmetric difference of two sets. The</font><br>
<font color="#786000">; symmetric difference is the set of items belonging to one but not both of </font><br>
<font color="#786000">; the two sets.</font><br>
<font color="#786000">; (= (__ #{1 2 3 4 5 6} #{1 3 5 7}) #{2 4 6 7})</font><br>
<font color="#912f11">#(</font><font color="#007080">set</font> <font color="#912f11">(</font><font color="#007080">remove</font> <font color="#cd3700">(</font><font color="#007080">set</font> <font color="#ee9a00">(</font><font color="#1f3f81"><strong>filter</strong></font> %<font color="#077807">1</font> %<font color="#077807">2</font><font color="#ee9a00">)</font><font color="#cd3700">)</font> <font color="#cd3700">(</font><font color="#007080">into</font> %<font color="#077807">1</font> %<font color="#077807">2</font><font color="#cd3700">)</font><font color="#912f11">))</font><br>
<font color="#786000">; we remove the intersection from the union</font></p>
<p><font color="#786000">; 89: Starting with a graph you must write a function that returns true if it </font><br>
<font color="#786000">; is possible to make a tour of the graph in which every edge is visited exactly</font><br>
<font color="#786000">; once. The graph is represented by a vector of tuples, where each tuple </font><br>
<font color="#786000">; represents a single edge. The rules are: </font><br>
<font color="#786000">; - You can start at any node. </font><br>
<font color="#786000">; - You must visit each edge exactly once. </font><br>
<font color="#786000">; - All edges are undirected.</font><br>
<font color="#786000">; (= true (__ [[1 2] [2 3] [3 4] [4 1]]))</font><br>
<font color="#786000">; (= false (__ [[1 2] [2 3] [2 4] [2 5]]))</font><br>
<font color="#786000">; (= false (__ [[:a :b] [:a :b] [:a :c] [:c :a] [:a :d] [:b :d] [:c :d]]))</font><br>
<font color="#786000">; (= true (__ [[:a :b] [:a :c] [:c :b] [:a :e] [:b :e] [:a :d] [:b :d] </font><br>
<font color="#786000">; [:c :e] [:d :e] [:c :f] [:d :f]]))</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>edge-list<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>graph <font color="#912f11">(</font><font color="#007080">apply</font> <font color="#007080">merge-with</font> <br>
<font color="#912f11">#(</font><font color="#007080">into</font> <font color="#912f11">%1</font> <font color="#912f11">%2</font><font color="#912f11">)</font> <br>
<font color="#cd3700">(</font><font color="#007080">apply</font> <font color="#007080">concat</font> <br>
<font color="#ee9a00">(</font><font color="#1f3f81"><strong>map-indexed</strong></font> <br>
<font color="#cdcd00">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>i <font color="#912f11">[</font>k v<font color="#912f11">]]</font> <br>
<font color="#912f11">[{</font>k <font color="#912f11">#{{</font><font color="#1f3f81"><strong>:node</strong></font> v <font color="#1f3f81"><strong>:index</strong></font> i<font color="#912f11">}}}</font> <br>
<font color="#912f11">{</font>v <font color="#912f11">#{{</font><font color="#1f3f81"><strong>:node</strong></font> k <font color="#1f3f81"><strong>:index</strong></font> i<font color="#912f11">}}}]</font><font color="#cdcd00">)</font> <br>
edge-list<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)]</font><br>
<font color="#ee9a00">(</font><font color="#912f11">if</font> <font color="#cdcd00">(</font><font color="#007080">some</font><br>
<font color="#698b22">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>node<font color="#912f11">]</font> <br>
<font color="#008b00">(</font><font color="#007080">some</font> <br>
<font color="#007080">identity</font> <br>
<font color="#96cdcd">(</font><font color="#007080">flatten</font> <br>
<font color="#00688b">(</font><font color="#483d8b">(</font><font color="#912f11">fn</font> visit <font color="#912f11">[</font>n vs<font color="#912f11">]</font> <br>
<font color="#9400d3">(</font><font color="#912f11">if</font> <font color="#912f11">(</font><font color="#007080">every?</font> <font color="#912f11">#(</font>vs <font color="#912f11">(</font><font color="#1f3f81"><strong>:index</strong></font> %<font color="#912f11">))</font> <font color="#cd3700">(</font>graph n<font color="#cd3700">)</font><font color="#912f11">)</font> <br>
<font color="#912f11">(</font><font color="#912f11">if</font> <font color="#cd3700">(</font><font color="#007080">every?</font> <font color="#007080">identity</font> vs<font color="#cd3700">)</font> <font color="#077807">true</font> <font color="#077807">false</font><font color="#912f11">)</font> <br>
<font color="#912f11">(</font><font color="#1f3f81"><strong>for</strong></font> <font color="#912f11">[</font>x <font color="#912f11">(</font>graph n<font color="#912f11">)]</font> <br>
<font color="#cd3700">(</font><font color="#1f3f81"><strong>when-not</strong></font> <font color="#ee9a00">(</font>vs <font color="#cdcd00">(</font><font color="#1f3f81"><strong>:index</strong></font> x<font color="#cdcd00">)</font><font color="#ee9a00">)</font> <br>
<font color="#ee9a00">(</font>visit <font color="#cdcd00">(</font><font color="#1f3f81"><strong>:node</strong></font> x<font color="#cdcd00">)</font> <font color="#cdcd00">(</font><font color="#007080">assoc</font> vs <font color="#698b22">(</font><font color="#1f3f81"><strong>:index</strong></font> x<font color="#698b22">)</font> <font color="#077807">true</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><font color="#9400d3">)</font><font color="#483d8b">)</font><br>
node <font color="#483d8b">(</font><font color="#007080">vec</font> <font color="#9400d3">(</font><font color="#007080">repeat</font> <font color="#912f11">(</font><font color="#007080">count</font> edge-list<font color="#912f11">)</font> <font color="#077807">false</font><font color="#9400d3">)</font><font color="#483d8b">)</font><font color="#00688b">)</font><font color="#96cdcd">)</font><font color="#008b00">)</font><font color="#698b22">)</font> <br>
<font color="#698b22">(</font><font color="#007080">set</font> <font color="#008b00">(</font><font color="#007080">apply</font> <font color="#007080">concat</font> edge-list<font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font> <br>
<font color="#077807">true</font> <font color="#077807">false</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; This problem looks similar to problem 82 as both are graph traversals, but</font><br>
<font color="#786000">; the graphs are quite different. Here redundent edges exist, so we cannot use</font><br>
<font color="#786000">; a set or a map to track edge visits, we instead use a vector of booleans. </font><br>
<font color="#786000">; Also, the condition is to traverse all edges instead of all nodes. We again </font><br>
<font color="#786000">; use a map of adjacent node lists as the graph, but supplement each adjacent </font><br>
<font color="#786000">; node with the index of the corresponding edge. Finally, here a node can be </font><br>
<font color="#786000">; visited multiple times, and we terminates a path at a node only when all of </font><br>
<font color="#786000">; its edges have already been visited.</font></p>
<p><font color="#786000">; 91: Given a graph, determine whether the graph is connected. A connected </font><br>
<font color="#786000">; graph is such that a path exists between any two given nodes. </font><br>
<font color="#786000">; -Your function must return true if the graph is connected and false otherwise.</font><br>
<font color="#786000">; -You will be given a set of tuples representing the edges of a graph. Each </font><br>
<font color="#786000">; member of a tuple being a vertex/node in the graph. </font><br>
<font color="#786000">; -Each edge is undirected (can be traversed either direction). </font><br>
<font color="#786000">; (= false (__ #{[1 2] [2 3] [3 1] [4 5] [5 6] [6 4]}))</font><br>
<font color="#786000">; (= true (__ #{[1 2] [2 3] [3 1][4 5] [5 6] [6 4] [3 4]}))</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>edge-list<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>graph <font color="#912f11">(</font><font color="#007080">apply</font> <font color="#007080">merge-with</font> <br>
<font color="#912f11">#(</font><font color="#007080">into</font> <font color="#912f11">%1</font> <font color="#912f11">%2</font><font color="#912f11">)</font> <br>
<font color="#cd3700">(</font><font color="#007080">apply</font> <font color="#007080">concat</font> <br>
<font color="#ee9a00">(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#cdcd00">(</font><font color="#912f11">fn</font> <font color="#912f11">[[</font>k v<font color="#912f11">]]</font> <font color="#912f11">[{</font>k <font color="#912f11">#{</font>v<font color="#912f11">}}</font> <font color="#912f11">{</font>v <font color="#912f11">#{</font>k<font color="#912f11">}}]</font><font color="#cdcd00">)</font> edeg-list<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)]</font> <br>
<font color="#ee9a00">(</font><font color="#912f11">if</font> <font color="#cdcd00">(</font><font color="#007080">some</font> <font color="#912f11">#(</font><font color="#007080">=</font> <font color="#912f11">(</font><font color="#007080">count</font> %<font color="#912f11">)</font> <font color="#912f11">(</font><font color="#007080">count</font> graph<font color="#912f11">))</font> <br>
<font color="#698b22">(</font><font color="#007080">flatten</font> <br>
<font color="#008b00">(</font><font color="#96cdcd">(</font><font color="#912f11">fn</font> paths <font color="#912f11">[</font>node seen<font color="#912f11">]</font> <br>
<font color="#00688b">(</font><font color="#912f11">if</font> <font color="#483d8b">(</font>seen node<font color="#483d8b">)</font> <br>
seen<br>
<font color="#483d8b">(</font><font color="#1f3f81"><strong>for</strong></font> <font color="#912f11">[</font>x <font color="#912f11">(</font>graph node<font color="#912f11">)]</font> <br>
<font color="#9400d3">(</font>paths x <font color="#912f11">(</font><font color="#007080">conj</font> seen node<font color="#912f11">)</font><font color="#9400d3">)</font><font color="#483d8b">)</font><font color="#00688b">)</font><font color="#96cdcd">)</font> <br>
<font color="#96cdcd">(</font><font color="#007080">ffirst</font> graph<font color="#96cdcd">)</font> <font color="#912f11">#{}</font><font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font> <br>
<font color="#077807">true</font> <font color="#077807">false</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; This graph traversal problem is simpler than both 82 and 89. We only need </font><br>
<font color="#786000">; to start searching from any one of the nodes instead of all nodes. But the </font><br>
<font color="#786000">; pattern of the code is similar.</font></p>
<p><font color="#786000">; 92: Write a function to parse a Roman-numeral string and return the number it</font><br>
<font color="#786000">; represents. You can assume that the input will be well-formed, in upper-case,</font><br>
<font color="#786000">; and follow the subtractive principle. You don't need to handle any numbers </font><br>
<font color="#786000">; greater than MMMCMXCIX (3999), the largest number representable with </font><br>
<font color="#786000">; ordinary letters.</font><br>
<font color="#786000">; (= 827 (__ "DCCCXXVII"))</font><br>
<font color="#786000">; (= 48 (__ "XLVIII"))</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>s<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>snum <font color="#912f11">{[</font><font color="#077807">\C</font> <font color="#077807">\M</font><font color="#912f11">]</font> <font color="#077807">900</font> <font color="#912f11">[</font><font color="#077807">\C</font> <font color="#077807">\D</font><font color="#912f11">]</font> <font color="#077807">400</font> <font color="#912f11">[</font><font color="#077807">\X</font> <font color="#077807">\C</font><font color="#912f11">]</font> <font color="#077807">90</font> <br>
<font color="#912f11">[</font><font color="#077807">\X</font> <font color="#077807">\L</font><font color="#912f11">]</font> <font color="#077807">40</font> <font color="#912f11">[</font><font color="#077807">\I</font> <font color="#077807">\X</font><font color="#912f11">]</font> <font color="#077807">9</font> <font color="#912f11">[</font><font color="#077807">\I</font> <font color="#077807">\V</font><font color="#912f11">]</font> <font color="#077807">4</font><font color="#912f11">}</font><br>
nums <font color="#912f11">{</font><font color="#077807">\I</font> <font color="#077807">1</font> <font color="#077807">\V</font> <font color="#077807">5</font> <font color="#077807">\X</font> <font color="#077807">10</font> <font color="#077807">\L</font> <font color="#077807">50</font> <font color="#077807">\C</font> <font color="#077807">100</font> <font color="#077807">\D</font> <font color="#077807">500</font> <font color="#077807">\M</font> <font color="#077807">1000</font><font color="#912f11">}]</font><br>
<font color="#ee9a00">(</font><font color="#800090">letfn</font> <font color="#912f11">[(</font>sum-snum <font color="#912f11">[[</font>f <font color="#912f11">&</font> r<font color="#912f11">]]</font><br>
<font color="#cd3700">(</font><font color="#912f11">if</font> f<br>
<font color="#ee9a00">(</font><font color="#007080">+</font> <font color="#cdcd00">(</font><font color="#1f3f81"><strong>if-let</strong></font> <font color="#912f11">[</font>n <font color="#912f11">(</font>snum <font color="#912f11">[</font>f <font color="#912f11">(</font><font color="#007080">first</font> r<font color="#912f11">)])]</font> <br>
n <font color="#077807">0</font><font color="#cdcd00">)</font><br>
<font color="#cdcd00">(</font>sum-snum r<font color="#cdcd00">)</font><font color="#ee9a00">)</font><br>
<font color="#077807">0</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#912f11">(</font>del-snum <font color="#912f11">[[</font>f <font color="#912f11">&</font> r<font color="#912f11">]]</font><br>
<font color="#cd3700">(</font><font color="#1f3f81"><strong>when</strong></font> f<br>
<font color="#ee9a00">(</font><font color="#912f11">if</font> <font color="#cdcd00">(</font>snum <font color="#912f11">[</font>f <font color="#912f11">(</font><font color="#007080">first</font> r<font color="#912f11">)]</font><font color="#cdcd00">)</font><br>
<font color="#cdcd00">(</font>del-snum <font color="#698b22">(</font><font color="#007080">rest</font> r<font color="#698b22">)</font><font color="#cdcd00">)</font><br>
<font color="#cdcd00">(</font><font color="#007080">cons</font> f <font color="#698b22">(</font>del-snum r<font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)]</font><br>
<font color="#cdcd00">(</font><font color="#1f3f81"><strong>reduce</strong></font> <font color="#007080">+</font> <font color="#698b22">(</font>sum-snum s<font color="#698b22">)</font> <font color="#698b22">(</font><font color="#1f3f81"><strong>map</strong></font> nums <font color="#008b00">(</font>del-snum s<font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; We first find and sum the special numbers (4, 9, etc), remove them and sum</font><br>
<font color="#786000">; the rest. </font></p>
<p><font color="#786000">; 93: Write a function which flattens any nested combination of sequential </font><br>
<font color="#786000">; things (lists, vectors, etc.), but maintains the lowest level sequential </font><br>
<font color="#786000">; items. The result should be a sequence of sequences with only one level of </font><br>
<font color="#786000">; nesting.</font><br>
<font color="#786000">; (= (__ '((1 2)((3 4)((((5 6))))))) '((1 2)(3 4)(5 6)))</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> pf <font color="#912f11">[</font>coll<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>l <font color="#912f11">(</font><font color="#007080">first</font> coll<font color="#912f11">)</font> r <font color="#912f11">(</font><font color="#007080">next</font> coll<font color="#912f11">)]</font><br>
<font color="#ee9a00">(</font><font color="#007080">concat</font> <br>
<font color="#cdcd00">(</font><font color="#912f11">if</font> <font color="#698b22">(</font><font color="#800090">and</font> <font color="#008b00">(</font><font color="#007080">sequential?</font> l<font color="#008b00">)</font> <font color="#008b00">(</font><font color="#007080">not</font> <font color="#96cdcd">(</font><font color="#007080">sequential?</font> <font color="#00688b">(</font><font color="#007080">first</font> l<font color="#00688b">)</font><font color="#96cdcd">)</font><font color="#008b00">)</font><font color="#698b22">)</font><br>
<font color="#912f11">[</font>l<font color="#912f11">]</font><br>
<font color="#698b22">(</font>pf l<font color="#698b22">)</font><font color="#cdcd00">)</font><br>
<font color="#cdcd00">(</font><font color="#1f3f81"><strong>when</strong></font> <font color="#698b22">(</font><font color="#007080">sequential?</font> r<font color="#698b22">)</font><br>
<font color="#698b22">(</font>pf r<font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; this is just a slight modification of the solution to problem 28.</font></p>
<p><font color="#786000">; 94: The game of life is a cellular automaton devised by mathematician John </font><br>
<font color="#786000">; Conway. The 'board' consists of both live (#) and dead ( ) cells. Each cell </font><br>
<font color="#786000">; interacts with its eight neighbours (horizontal, vertical, diagonal), and its</font><br>
<font color="#786000">; next state is dependent on the following rules: 1) Any live cell with fewer </font><br>
<font color="#786000">; than two live neighbours dies, as if caused by under-population. 2) Any live</font><br>
<font color="#786000">; cell with two or three live neighbours lives on to the next generation. 3) </font><br>
<font color="#786000">; Any live cell with more than three live neighbours dies, as if by overcrowding</font><br>
<font color="#786000">; . 4) Any dead cell with exactly three live neighbours becomes a live cell, as</font><br>
<font color="#786000">; if by reproduction. Write a function that accepts a board, and returns a </font><br>
<font color="#786000">; board representing the next generation of cells.</font><br>
<font color="#786000">;(= (__ [" " </font><br>
<font color="#786000">;" ## "</font><br>
<font color="#786000">;" ## "</font><br>
<font color="#786000">;" ## "</font><br>
<font color="#786000">;" ## "</font><br>
<font color="#786000">;" "])</font><br>
<font color="#786000">;[" " </font><br>
<font color="#786000">;" ## "</font><br>
<font color="#786000">;" # "</font><br>
<font color="#786000">;" # "</font><br>
<font color="#786000">;" ## "</font><br>
<font color="#786000">;" "])</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>board<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>offsets <font color="#912f11">[[</font><font color="#077807">-1</font> <font color="#077807">-1</font><font color="#912f11">]</font> <font color="#912f11">[</font><font color="#077807">-1</font> <font color="#077807">0</font><font color="#912f11">]</font> <font color="#912f11">[</font><font color="#077807">-1</font> <font color="#077807">1</font><font color="#912f11">]</font><br>
<font color="#912f11">[</font><font color="#077807">0</font> <font color="#077807">-1</font><font color="#912f11">]</font> <font color="#912f11">[</font><font color="#077807">0</font> <font color="#077807">1</font><font color="#912f11">]</font><br>
<font color="#912f11">[</font><font color="#077807">1</font> <font color="#077807">-1</font><font color="#912f11">]</font> <font color="#912f11">[</font><font color="#077807">1</font> <font color="#077807">0</font><font color="#912f11">]</font> <font color="#912f11">[</font><font color="#077807">1</font> <font color="#077807">1</font><font color="#912f11">]]</font><br>
height <font color="#912f11">(</font><font color="#007080">count</font> board<font color="#912f11">)</font><br>
width <font color="#912f11">(</font><font color="#007080">count</font> <font color="#cd3700">(</font><font color="#007080">first</font> board<font color="#cd3700">)</font><font color="#912f11">)</font><br>
get-state <font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[[</font>x y<font color="#912f11">]</font> <font color="#912f11">[</font>dx dy<font color="#912f11">]]</font><br>
<font color="#cd3700">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>c <font color="#912f11">(</font><font color="#007080">+</font> x dx<font color="#912f11">)</font> r <font color="#912f11">(</font><font color="#007080">+</font> y dy<font color="#912f11">)]</font> <br>
<font color="#ee9a00">(</font><font color="#912f11">if</font> <font color="#cdcd00">(</font><font color="#800090">or</font> <font color="#698b22">(</font><font color="#007080"><</font> c <font color="#077807">0</font><font color="#698b22">)</font> <font color="#698b22">(</font><font color="#007080">=</font> c width<font color="#698b22">)</font> <font color="#698b22">(</font><font color="#007080"><</font> r <font color="#077807">0</font><font color="#698b22">)</font> <font color="#698b22">(</font><font color="#007080">=</font> r height<font color="#698b22">)</font><font color="#cdcd00">)</font><br>
<font color="#077807">\space</font><br>
<font color="#cdcd00">(</font><font color="#007080">get-in</font> board <font color="#912f11">[</font>r c<font color="#912f11">]</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
count-lives <font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>p<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#1f3f81"><strong>reduce</strong></font> <font color="#007080">+</font> <font color="#ee9a00">(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#912f11">#(</font><font color="#912f11">if</font> <font color="#912f11">(</font><font color="#007080">=</font> <font color="#077807">\#</font> <font color="#cd3700">(</font>get-state p %<font color="#cd3700">)</font><font color="#912f11">)</font> <font color="#077807">1</font> <font color="#077807">0</font><font color="#912f11">)</font> offsets<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
next-state <font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>s p<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>n <font color="#912f11">(</font>count-lives p<font color="#912f11">)]</font> <br>
<font color="#ee9a00">(</font><font color="#912f11">if</font> <font color="#cdcd00">(</font><font color="#800090">or</font> <font color="#698b22">(</font><font color="#007080">=</font> n <font color="#077807">3</font><font color="#698b22">)</font><br>
<font color="#698b22">(</font><font color="#800090">and</font> <font color="#008b00">(</font><font color="#007080">=</font> s <font color="#077807">\#</font><font color="#008b00">)</font> <font color="#008b00">(</font><font color="#007080">=</font> n <font color="#077807">2</font><font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font><br>
<font color="#077807">\#</font><br>
<font color="#077807">\space</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)]</font> <br>
<font color="#ee9a00">(</font><font color="#800090">->></font> <font color="#cdcd00">(</font><font color="#1f3f81"><strong>for</strong></font> <font color="#912f11">[</font>y <font color="#912f11">(</font><font color="#007080">range</font> height<font color="#912f11">)</font> x <font color="#912f11">(</font><font color="#007080">range</font> width<font color="#912f11">)]</font><br>
<font color="#698b22">(</font>next-state <font color="#008b00">(</font><font color="#007080">get-in</font> board <font color="#912f11">[</font>y x<font color="#912f11">]</font><font color="#008b00">)</font> <font color="#912f11">[</font>x y<font color="#912f11">]</font><font color="#698b22">)</font><font color="#cdcd00">)</font><br>
<font color="#cdcd00">(</font><font color="#007080">partition</font> width<font color="#cdcd00">)</font><br>
<font color="#cdcd00">(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#912f11">#(</font><font color="#007080">apply</font> <font color="#007080">str</font> <font color="#912f11">%</font><font color="#912f11">)</font><font color="#cdcd00">)</font><br>
<font color="#007080">vec</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; This is straight-forward. The only tricky part is to remember that the order </font><br>
<font color="#786000">; of paramaters for the get-in function and the x-y coordinates is opposite to </font><br>
<font color="#786000">; each other. </font></p>
<p><font color="#786000">; 95: Write a predicate which checks whether or not a given sequence represents</font><br>
<font color="#786000">; a binary tree. Each node in the tree must have a value, a left child, and a </font><br>
<font color="#786000">; right child.</font><br>
<font color="#786000">; (= (__ '(:a (:b nil nil) nil)) true)</font><br>
<font color="#786000">; (= (__ '(:a (:b nil nil))) false)</font><br>
<font color="#786000">; (= (__ [1 nil [2 [3 nil nil] [4 nil nil]]]) true)</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> bt? <font color="#912f11">[</font>t<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#912f11">if</font> <font color="#ee9a00">(</font><font color="#800090">or</font> <font color="#cdcd00">(</font><font color="#007080">not</font> <font color="#698b22">(</font><font color="#007080">sequential?</font> t<font color="#698b22">)</font><font color="#cdcd00">)</font><br>
<font color="#cdcd00">(</font><font color="#800090">and</font> <font color="#698b22">(</font><font color="#007080">=</font> <font color="#077807">3</font> <font color="#008b00">(</font><font color="#007080">count</font> t<font color="#008b00">)</font><font color="#698b22">)</font><br>
<font color="#698b22">(</font>bt? <font color="#008b00">(</font><font color="#007080">second</font> t<font color="#008b00">)</font><font color="#698b22">)</font><br>
<font color="#698b22">(</font>bt? <font color="#008b00">(</font><font color="#007080">last</font> t<font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><br>
<font color="#077807">true</font> <font color="#077807">false</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; I think one of the unit tests of the problem is wrong: </font><br>
<font color="#786000">; (= (__ [1 [2 [3 [4 false nil] nil] nil] nil]) false)</font><br>
<font color="#786000">; why shouldn't "false" be a legal tree node, or why should leaf have to be nil? </font></p>
<p><font color="#786000">; 96: Let us define a binary tree as "symmetric" if the left half of the tree </font><br>
<font color="#786000">; is the mirror image of the right half of the tree. Write a predicate to </font><br>
<font color="#786000">; determine whether or not a given binary tree is symmetric.</font><br>
<font color="#786000">; (= (__ '(:a (:b nil nil) (:b nil nil))) true)</font><br>
<font color="#786000">; (= (__ '(:a (:b nil nil) nil)) false)</font><br>
<font color="#786000">; (= (__ [1 [2 nil [3 [4 [5 nil nil] [6 nil nil]] nil]]</font><br>
<font color="#786000">;[2 [3 nil [4 [6 nil nil] [5 nil nil]]] nil]]) true)</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>t<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#ee9a00">(</font><font color="#912f11">fn</font> mir? <font color="#912f11">[</font>l r<font color="#912f11">]</font><br>
<font color="#cdcd00">(</font><font color="#912f11">if</font> <font color="#698b22">(</font><font color="#800090">or</font> <font color="#008b00">(</font><font color="#007080">=</font> <font color="#077807">nil</font> l r<font color="#008b00">)</font><br>
<font color="#008b00">(</font><font color="#800090">and</font> <font color="#96cdcd">(</font><font color="#007080">=</font> <font color="#00688b">(</font><font color="#007080">first</font> l<font color="#00688b">)</font> <font color="#00688b">(</font><font color="#007080">first</font> r<font color="#00688b">)</font><font color="#96cdcd">)</font><br>
<font color="#96cdcd">(</font>mir? <font color="#00688b">(</font><font color="#007080">second</font> l<font color="#00688b">)</font> <font color="#00688b">(</font><font color="#007080">last</font> r<font color="#00688b">)</font><font color="#96cdcd">)</font><br>
<font color="#96cdcd">(</font>mir? <font color="#00688b">(</font><font color="#007080">last</font> l<font color="#00688b">)</font> <font color="#00688b">(</font><font color="#007080">second</font> r<font color="#00688b">)</font><font color="#96cdcd">)</font><font color="#008b00">)</font><font color="#698b22">)</font><br>
<font color="#077807">true</font> <font color="#077807">false</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font> <br>
<font color="#ee9a00">(</font><font color="#007080">second</font> t<font color="#ee9a00">)</font> <font color="#ee9a00">(</font><font color="#007080">last</font> t<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font></p>
<p><font color="#786000">; 97: Pascal's triangle is a triangle of numbers computed using the following </font><br>
<font color="#786000">; rules: </font><br>
<font color="#786000">; - The first row is 1.</font><br>
<font color="#786000">; - Each successive row is computed by adding together adjacent numbers in the </font><br>
<font color="#786000">; row above, and adding a 1 to the beginning and end of the row. </font><br>
<font color="#786000">; Write a function which returns the nth row of Pascal's Triangle.</font><br>
<font color="#786000">; (= (map __ (range 1 6))</font><br>
<font color="#786000">;[ [1]</font><br>
<font color="#786000">;[1 1]</font><br>
<font color="#786000">;[1 2 1]</font><br>
<font color="#786000">;[1 3 3 1]</font><br>
<font color="#786000">;[1 4 6 4 1]])</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>n<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#007080">nth</font> <font color="#ee9a00">(</font><font color="#007080">iterate</font> <br>
<font color="#cdcd00">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>pre<font color="#912f11">]</font> <br>
<font color="#698b22">(</font><font color="#007080">vec</font> <br>
<font color="#008b00">(</font><font color="#007080">concat</font> <br>
<font color="#912f11">[</font><font color="#077807">1</font><font color="#912f11">]</font> <br>
<font color="#96cdcd">(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#00688b">(</font><font color="#912f11">fn</font> <font color="#912f11">[[</font>f s<font color="#912f11">]]</font> <font color="#483d8b">(</font><font color="#007080">+</font> f s<font color="#483d8b">)</font><font color="#00688b">)</font> <font color="#00688b">(</font><font color="#007080">partition</font> <font color="#077807">2</font> <font color="#077807">1</font> pre<font color="#00688b">)</font><font color="#96cdcd">)</font> <br>
<font color="#912f11">[</font><font color="#077807">1</font><font color="#912f11">]</font><font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font><br>
<font color="#912f11">[</font><font color="#077807">1</font><font color="#912f11">]</font><font color="#ee9a00">)</font><br>
<font color="#ee9a00">(</font><font color="#007080">dec</font> n<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font> </p>
<p></font></p>My solutions for problems No. 51-75 on 4clojure.com2011-05-25T01:59:00-07:002011-05-25T01:59:00-07:00Huahaitag:yyhh.org,2011-05-25:/blog/2011/05/my-solutions-for-problems-no-51-75-on-4clojurecom<p>This post continues the <a href="https://yyhh.org/blog/2011/05/my-solutions-first-50-problems-4clojure-com">previous one</a>, on my solutions for small clojure programming problems on <a href="https://www.4clojure.com">4clojure.com</a>. Doing these problems seems to be addictive as I could not seem to stop myself. The site recently added a golf league feature, so one can see how short one's own solution compared …</p><p>This post continues the <a href="https://yyhh.org/blog/2011/05/my-solutions-first-50-problems-4clojure-com">previous one</a>, on my solutions for small clojure programming problems on <a href="https://www.4clojure.com">4clojure.com</a>. Doing these problems seems to be addictive as I could not seem to stop myself. The site recently added a golf league feature, so one can see how short one's own solution compared with others. If a lot of people got a much shorter solution than yours, you know you are not thinking in the right way. This little competition makes the site even more attractive. Anyhow, the code is here:</p>
<p><font face="monospace"><br>
<font color="#786000">; 53: Given a vector of integers, find the longest consecutive sub-sequence of</font><br>
<font color="#786000">; increasing numbers. If two sub-sequences have the same length, use the one </font><br>
<font color="#786000">; that occurs first. An increasing sub-sequence must have a length of 2 or </font><br>
<font color="#786000">; greater to qualify.</font><br>
<font color="#786000">; (= (__ [1 0 1 2 3 0 4 5]) [0 1 2 3])</font><br>
<font color="#786000">; (= (__ [7 6 5 4]) [])</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>coll<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#800090">->></font> <font color="#ee9a00">(</font><font color="#007080">partition</font> <font color="#077807">2</font> <font color="#077807">1</font> coll<font color="#ee9a00">)</font> <br>
<font color="#ee9a00">(</font><font color="#007080">partition-by</font> <font color="#912f11">#(</font><font color="#007080">-</font> <font color="#912f11">(</font><font color="#007080">second</font> %<font color="#912f11">)</font> <font color="#912f11">(</font><font color="#007080">first</font> %<font color="#912f11">))</font><font color="#ee9a00">)</font> <br>
<font color="#ee9a00">(</font><font color="#1f3f81"><strong>filter</strong></font> <font color="#912f11">#(</font><font color="#007080">=</font> <font color="#077807">1</font> <font color="#912f11">(</font><font color="#007080">-</font> <font color="#cd3700">(</font><font color="#007080">second</font> <font color="#ee9a00">(</font><font color="#007080">first</font> %<font color="#ee9a00">)</font><font color="#cd3700">)</font> <font color="#cd3700">(</font><font color="#007080">ffirst</font> %<font color="#cd3700">)</font><font color="#912f11">))</font><font color="#ee9a00">)</font> <br>
<font color="#ee9a00">(</font><font color="#1f3f81"><strong>reduce</strong></font> <font color="#912f11">#(</font><font color="#912f11">if</font> <font color="#912f11">(</font><font color="#007080"><</font> <font color="#cd3700">(</font><font color="#007080">count</font> %<font color="#077807">1</font><font color="#cd3700">)</font> <font color="#cd3700">(</font><font color="#007080">count</font> %<font color="#077807">2</font><font color="#cd3700">)</font><font color="#912f11">)</font> <font color="#912f11">%2</font> <font color="#912f11">%1</font><font color="#912f11">)</font> <font color="#912f11">[]</font><font color="#ee9a00">)</font><br>
<font color="#007080">flatten</font><br>
<font color="#007080">distinct</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; we first create a list of neighoring pairs, partition them by their pair </font><br>
<font color="#786000">; differences, keep those with difference 1, finally return the longest one</font></p>
<p><font color="#786000">; 54: Write a function which returns a sequence of lists of x items each. </font><br>
<font color="#786000">; Lists of less than x items should not be returned. </font><br>
<font color="#786000">; (= (__ 3 (range 8)) '((0 1 2) (3 4 5))) </font><br>
<font color="#786000">; forbidden: partition, partition-all</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> partition2 <font color="#912f11">[</font>n coll<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#1f3f81"><strong>when</strong></font> <font color="#ee9a00">(</font><font color="#007080"><=</font> n <font color="#cdcd00">(</font><font color="#007080">count</font> coll<font color="#cdcd00">)</font><font color="#ee9a00">)</font><br>
<font color="#ee9a00">(</font><font color="#007080">cons</font> <font color="#cdcd00">(</font><font color="#007080">take</font> n coll<font color="#cdcd00">)</font> <font color="#cdcd00">(</font>partition2 n <font color="#698b22">(</font><font color="#007080">drop</font> n coll<font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; we recursively take n items till not enough items</font></p>
<p><font color="#786000">; 55: Write a function that returns a map containing the number of occurences </font><br>
<font color="#786000">; of each distinct item in a sequence.</font><br>
<font color="#786000">; (= (__ [1 1 2 3 2 1 1]) {1 4, 2 2, 3 1})</font><br>
<font color="#786000">; forbidden: frequencies</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>coll<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>gp <font color="#912f11">(</font><font color="#007080">group-by</font> <font color="#007080">identity</font> coll<font color="#912f11">)]</font> <br>
<font color="#ee9a00">(</font><font color="#007080">zipmap</font> <font color="#cdcd00">(</font><font color="#007080">keys</font> gp<font color="#cdcd00">)</font> <font color="#cdcd00">(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#912f11">#(</font><font color="#007080">count</font> <font color="#912f11">(</font><font color="#007080">second</font> %<font color="#912f11">))</font> gp<font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; note a map entry is just a two item vector, first item is the key, the</font><br>
<font color="#786000">; second item is the value</font></p>
<p><font color="#786000">; 56: Write a function which removes the duplicates from a sequence. Order of </font><br>
<font color="#786000">; the items must be maintained.</font><br>
<font color="#786000">; (= (__ [1 2 1 3 1 2 4]) [1 2 3 4])</font><br>
<font color="#786000">; forbidden: distinct</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>coll<font color="#912f11">]</font> <br>
<font color="#cd3700">(</font><font color="#ee9a00">(</font><font color="#912f11">fn</font> step <font color="#912f11">[[</font>x <font color="#912f11">&</font> xs<font color="#912f11">]</font> seen<font color="#912f11">]</font> <br>
<font color="#cdcd00">(</font><font color="#1f3f81"><strong>when</strong></font> x<br>
<font color="#698b22">(</font><font color="#912f11">if</font> <font color="#008b00">(</font>seen x<font color="#008b00">)</font> <br>
<font color="#008b00">(</font>step xs seen<font color="#008b00">)</font><br>
<font color="#008b00">(</font><font color="#007080">cons</font> x <font color="#96cdcd">(</font>step xs <font color="#00688b">(</font><font color="#007080">conj</font> seen x<font color="#00688b">)</font><font color="#96cdcd">)</font><font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font> <br>
coll <font color="#912f11">#{}</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; we recursively go through the sequence, use a set to keep track of items </font><br>
<font color="#786000">; we've seen, only return those we have not seen before. </font><br>
</p>
<p><font color="#786000">; 58: Write a function which allows you to create function compositions. The </font><br>
<font color="#786000">; parameter list should take a variable number of functions, and create a </font><br>
<font color="#786000">; function applies them from right-to-left.</font><br>
<font color="#786000">; (= [3 2 1] ((__ rest reverse) [1 2 3 4]))</font><br>
<font color="#786000">; forbidden: comp</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>x <font color="#912f11">&</font> xs<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font><font color="#912f11">&</font> args<font color="#912f11">]</font><br>
<font color="#ee9a00">(</font><font color="#cdcd00">(</font><font color="#912f11">fn</font> step <font color="#912f11">[[</font>f <font color="#912f11">&</font> fs<font color="#912f11">]</font> a<font color="#912f11">]</font><br>
<font color="#698b22">(</font><font color="#912f11">if</font> fs<br>
<font color="#008b00">(</font>f <font color="#96cdcd">(</font>step fs a<font color="#96cdcd">)</font><font color="#008b00">)</font><br>
<font color="#008b00">(</font><font color="#007080">apply</font> f a<font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font><br>
<font color="#cdcd00">(</font><font color="#007080">cons</font> x xs<font color="#cdcd00">)</font> args<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; step function takes the function list and the arguments, recursively builds</font><br>
<font color="#786000">; an ever deeper call stack till at the end of the list, where the right most </font><br>
<font color="#786000">; function is called with the given arguments.</font><br>
</p>
<p><font color="#786000">; 59: Take a set of functions and return a new function that takes a variable </font><br>
<font color="#786000">; number of arguments and returns sequence containing the result of applying </font><br>
<font color="#786000">; each function left-to-right to the argument list.</font><br>
<font color="#786000">; (= [21 6 1] ((__ + max min) 2 3 5 1 6 4))</font><br>
<font color="#786000">; forbidden: juxt</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>x <font color="#912f11">&</font> xs<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font><font color="#912f11">&</font> args<font color="#912f11">]</font><br>
<font color="#ee9a00">(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#912f11">#(</font><font color="#007080">apply</font> <font color="#912f11">%</font> args<font color="#912f11">)</font> <font color="#cdcd00">(</font><font color="#007080">cons</font> x xs<font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font></p>
<p><font color="#786000">; 60: Write a function which behaves like reduce, but returns each </font><br>
<font color="#786000">; intermediate value of the reduction. Your function must accept either two </font><br>
<font color="#786000">; or three arguments, and the return sequence must be lazy.</font><br>
<font color="#786000">; (= (take 5 (__ + (range))) [0 1 3 6 10])</font><br>
<font color="#786000">; (= (__ conj [1] [2 3 4]) [[1] [1 2] [1 2 3] [1 2 3 4]])</font><br>
<font color="#786000">; forbidden: reductions</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> reductions2<br>
<font color="#cd3700">(</font><font color="#912f11">[</font>f init <font color="#912f11">[</font>x <font color="#912f11">&</font> xs<font color="#912f11">]]</font> <br>
<font color="#ee9a00">(</font><font color="#007080">cons</font> init <font color="#cdcd00">(</font><font color="#800090">lazy-seq</font> <font color="#698b22">(</font><font color="#1f3f81"><strong>when</strong></font> x <font color="#008b00">(</font>reductions2 f <font color="#96cdcd">(</font>f init x<font color="#96cdcd">)</font> xs<font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font> <br>
<font color="#cd3700">(</font><font color="#912f11">[</font>f coll<font color="#912f11">]</font> <br>
<font color="#ee9a00">(</font>reductions2 f <font color="#cdcd00">(</font><font color="#007080">first</font> coll<font color="#cdcd00">)</font> <font color="#cdcd00">(</font><font color="#007080">rest</font> coll<font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font></p>
<p><font color="#786000">; 61: Write a function which takes a vector of keys and a vector of values </font><br>
<font color="#786000">; and constructs a map from them.</font><br>
<font color="#786000">; (= (__ [:a :b :c] [1 2 3]) {:a 1, :b 2, :c 3})</font><br>
<font color="#786000">; forbidden: zipmap</font><br>
<font color="#912f11">#(</font><font color="#007080">into</font> <font color="#912f11">{}</font> <font color="#912f11">(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#007080">vector</font> %<font color="#077807">1</font> %<font color="#077807">2</font><font color="#912f11">))</font></p>
<p><font color="#786000">; 62. Given a side-effect free function f and an initial value x </font><br>
<font color="#786000">; write a function which returns an infinite lazy sequence of x,</font><br>
<font color="#786000">; (f x), (f (f x)), (f (f (f x))), etc. </font><br>
<font color="#786000">; (= (take 5 (__ #(* 2 %) 1)) [1 2 4 8 16])</font><br>
<font color="#786000">; forbidden: iterate</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> iterate2 <font color="#912f11">[</font>f x<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#007080">cons</font> x <font color="#ee9a00">(</font><font color="#800090">lazy-seq</font> <font color="#cdcd00">(</font>iterate2 f <font color="#698b22">(</font>f x<font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; it turns out that clojure's own implmentation is the same </font></p>
<p><font color="#786000">; 63. Given a function f and a sequence s, write a function which returns a </font><br>
<font color="#786000">; map. The keys should be the values of f applied to each item in s. The value</font><br>
<font color="#786000">; at each key should be a vector of corresponding items in the order they </font><br>
<font color="#786000">; appear in s.</font><br>
<font color="#786000">; (= (__ #(> % 5) #{1 3 6 8}) {false [1 3], true [6 8]})</font><br>
<font color="#786000">; forbidden group-by</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>f s<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#ee9a00">(</font><font color="#912f11">fn</font> step <font color="#912f11">[</font>ret f <font color="#912f11">[</font>x <font color="#912f11">&</font> xs<font color="#912f11">]]</font><br>
<font color="#cdcd00">(</font><font color="#912f11">if</font> x<br>
<font color="#698b22">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>k <font color="#912f11">(</font>f x<font color="#912f11">)]</font><br>
<font color="#008b00">(</font>step <font color="#96cdcd">(</font><font color="#007080">assoc</font> ret k <font color="#00688b">(</font><font color="#007080">conj</font> <font color="#483d8b">(</font><font color="#007080">get</font> ret k <font color="#912f11">[]</font><font color="#483d8b">)</font> x<font color="#00688b">)</font><font color="#96cdcd">)</font> f xs<font color="#008b00">)</font><font color="#698b22">)</font><br>
ret<font color="#cdcd00">)</font><font color="#ee9a00">)</font><br>
<font color="#912f11">{}</font> f <font color="#ee9a00">(</font><font color="#007080">seq</font> s<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; the get function takes a default argument for when the key is not found,</font><br>
<font color="#786000">; which is used to initialize a vector here. Note the use of seq for s, as</font><br>
<font color="#786000">; the collection may be a set, where the [x & xs] destructering doesn't work.</font><br>
<font color="#786000">; Intead of recursively going over a sequence, we can also use reduce:</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>f s<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#1f3f81"><strong>reduce</strong></font> <br>
<font color="#ee9a00">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>ret x<font color="#912f11">]</font><br>
<font color="#cdcd00">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>k <font color="#912f11">(</font>f x<font color="#912f11">)]</font><br>
<font color="#698b22">(</font><font color="#007080">assoc</font> ret k <font color="#008b00">(</font><font color="#007080">conj</font> <font color="#96cdcd">(</font><font color="#007080">get</font> ret k <font color="#912f11">[]</font><font color="#96cdcd">)</font> x<font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><br>
<font color="#912f11">{}</font> s<font color="#cd3700">)</font><font color="#912f11">)</font></p>
<p><font color="#786000">; 65: Write a function which takes a collection and returns one of :map, :set,</font><br>
<font color="#786000">; :list, or :vector - describing the type of collection it was given. </font><br>
<font color="#786000">; (= :map (__ {:a 1, :b 2}))</font><br>
<font color="#786000">; forbidden: class, type, Class, vector?, sequential?, list?, seq?, map?, set?</font><br>
<font color="#786000">; instance? getClass</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>coll<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>x <font color="#912f11">(</font><font color="#007080">rand-int</font> <font color="#077807">100</font><font color="#912f11">)</font> y <font color="#912f11">(</font><font color="#007080">rand-int</font> <font color="#077807">100</font><font color="#912f11">)</font> <br>
p <font color="#912f11">[</font>x y<font color="#912f11">]</font> c <font color="#912f11">(</font><font color="#007080">conj</font> coll z<font color="#912f11">)]</font><br>
<font color="#ee9a00">(</font><font color="#1f3f81"><strong>cond</strong></font> <br>
<font color="#cdcd00">(</font><font color="#007080">=</font> y <font color="#698b22">(</font><font color="#007080">get</font> c x<font color="#698b22">)</font><font color="#cdcd00">)</font> <font color="#1f3f81"><strong>:map</strong></font><br>
<font color="#cdcd00">(</font><font color="#007080">=</font> p <font color="#698b22">(</font><font color="#007080">get</font> c p<font color="#698b22">)</font><font color="#cdcd00">)</font> <font color="#1f3f81"><strong>:set</strong></font><br>
<font color="#cdcd00">(</font><font color="#007080">=</font> x <font color="#698b22">(</font><font color="#007080">last</font> <font color="#008b00">(</font><font color="#007080">conj</font> c x<font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font> <font color="#1f3f81"><strong>:vector</strong></font><br>
<font color="#1f3f81"><strong>:else</strong></font> <font color="#1f3f81"><strong>:list</strong></font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; we conj a random two element vector into the collection, map will treat it </font><br>
<font color="#786000">; as a new key value pair, others treat it as a single item; set is a map too,</font><br>
<font color="#786000">; so we can get the vector back with itself as the key; vector and list are </font><br>
<font color="#786000">; differentiated by the position of the conj.</font></p>
<p><font color="#786000">; 67: Write a function which returns the first x number of prime numbers. </font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>x<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#007080">take</font> x<br>
<font color="#ee9a00">(</font><font color="#007080">remove</font> <br>
<font color="#cdcd00">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>n<font color="#912f11">]</font> <br>
<font color="#698b22">(</font><font color="#007080">some</font> <font color="#912f11">#(</font><font color="#007080">=</font> <font color="#077807">0</font> <font color="#912f11">(</font><font color="#007080">mod</font> n %<font color="#912f11">))</font> <font color="#008b00">(</font><font color="#007080">range</font> <font color="#077807">2</font> <font color="#96cdcd">(</font><font color="#007080">inc</font> <font color="#00688b">(</font><font color="#007080">int</font> <font color="#483d8b">(</font>Math/sqrt n<font color="#483d8b">)</font><font color="#00688b">)</font><font color="#96cdcd">)</font><font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font><br>
<font color="#cdcd00">(</font><font color="#007080">iterate</font> <font color="#007080">inc</font> <font color="#077807">2</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; we just test each number n, each divided by numbers from 2 up to sqrt(n)</font></p>
<p><font color="#786000">; 69: Write a function which takes a function f and a variable number of maps.</font><br>
<font color="#786000">; Your function should return a map that consists of the rest of the maps </font><br>
<font color="#786000">; conj-ed onto the first. If a key occurs in more than one map, the mapping(s)</font><br>
<font color="#786000">; from the latter (left-to-right) should be combined with the mapping in the </font><br>
<font color="#786000">; result by calling (f val-in-result val-in-latter)</font><br>
<font color="#786000">; (= (__ - {1 10, 2 20} {1 3, 2 10, 3 15}) {1 7, 2 10, 3 15})</font><br>
<font color="#786000">; forbidden: merge-with</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>f m <font color="#912f11">&</font> ms<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#1f3f81"><strong>reduce</strong></font> <br>
<font color="#ee9a00">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>ret x<font color="#912f11">]</font><br>
<font color="#cdcd00">(</font><font color="#1f3f81"><strong>reduce</strong></font> <br>
<font color="#698b22">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>r k<font color="#912f11">]</font> <br>
<font color="#008b00">(</font><font color="#007080">conj</font> r <font color="#96cdcd">(</font><font color="#912f11">if</font> <font color="#00688b">(</font>r k<font color="#00688b">)</font> <font color="#912f11">[</font>k <font color="#912f11">(</font>f <font color="#cd3700">(</font>r k<font color="#cd3700">)</font> <font color="#cd3700">(</font>x k<font color="#cd3700">)</font><font color="#912f11">)]</font> <font color="#00688b">(</font><font color="#007080">find</font> x k<font color="#00688b">)</font><font color="#96cdcd">)</font><font color="#008b00">)</font><font color="#698b22">)</font> <br>
ret <font color="#698b22">(</font><font color="#007080">keys</font> x<font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font> <br>
<font color="#ee9a00">(</font><font color="#007080">cons</font> m ms<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; note a map is a function itself, so (r k) and (x k) works</font></p>
<p><font color="#786000">; 70: Write a function which splits a sentence up into a sorted list of words.</font><br>
<font color="#786000">; Capitalization should not affect sort order and punctuation should be ignored</font><br>
<font color="#786000">; (= (__ "Have a nice day.") ["a" "day" "Have" "nice"])</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>s<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#007080">sort-by</font> <font color="#912f11">#(</font>.toLowerCase <font color="#912f11">%</font><font color="#912f11">)</font> <font color="#ee9a00">(</font><font color="#007080">re-seq</font> <font color="#077807">#"\w+"</font> s<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font></p>
<p><font color="#786000">; 73: A tic-tac-toe board is represented by a two dimensional vector. X is </font><br>
<font color="#786000">; represented by :x, O is represented by :o, and empty is represented by :e. A </font><br>
<font color="#786000">; player wins by placing three Xs or three Os in a horizontal, vertical, or </font><br>
<font color="#786000">; diagonal row. Write a function which analyzes a tic-tac-toe board and returns</font><br>
<font color="#786000">; :x if X has won, :o if O has won, and nil if neither player has won.</font><br>
<font color="#786000">; (= nil (__ [[:e :e :e]</font><br>
<font color="#786000">;[:e :e :e]</font><br>
<font color="#786000">;[:e :e :e]]))</font><br>
<font color="#786000">;(= :x (__ [[:x :e :o]</font><br>
<font color="#786000">;[:x :e :e]</font><br>
<font color="#786000">;[:x :e :o]]))</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>board<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>i <font color="#912f11">[</font><font color="#077807">0</font> <font color="#077807">1</font> <font color="#077807">2</font><font color="#912f11">]</font><br>
c <font color="#912f11">(</font><font color="#007080">take</font> <font color="#077807">12</font> <font color="#cd3700">(</font><font color="#007080">cycle</font> i<font color="#cd3700">)</font><font color="#912f11">)</font><br>
p <font color="#912f11">(</font><font color="#007080">flatten</font> <font color="#cd3700">(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#912f11">#(</font><font color="#007080">repeat</font> <font color="#077807">3</font> <font color="#912f11">%</font><font color="#912f11">)</font> i<font color="#cd3700">)</font><font color="#912f11">)</font><br>
zip <font color="#912f11">#(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#007080">vector</font> <font color="#912f11">%1</font> <font color="#912f11">%2</font><font color="#912f11">)</font><br>
win? <font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>w<font color="#912f11">]</font> <br>
<font color="#cd3700">(</font><font color="#007080">some</font> <br>
<font color="#ee9a00">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>x<font color="#912f11">]</font> <font color="#cdcd00">(</font><font color="#007080">every?</font> <font color="#912f11">#(</font><font color="#007080">=</font> w <font color="#912f11">(</font><font color="#007080">get-in</font> board %<font color="#912f11">))</font> x<font color="#cdcd00">)</font><font color="#ee9a00">)</font> <br>
<font color="#ee9a00">(</font><font color="#007080">partition</font> <br>
<font color="#077807">3</font> <font color="#cdcd00">(</font><font color="#007080">into</font> <font color="#698b22">(</font>zip <font color="#008b00">(</font><font color="#007080">into</font> i p<font color="#008b00">)</font> c<font color="#698b22">)</font> <font color="#698b22">(</font>zip c <font color="#008b00">(</font><font color="#007080">into</font> <font color="#96cdcd">(</font><font color="#007080">reverse</font> i<font color="#96cdcd">)</font> p<font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)]</font><br>
<font color="#ee9a00">(</font><font color="#1f3f81"><strong>cond</strong></font> <br>
<font color="#cdcd00">(</font>win? <font color="#1f3f81"><strong>:x</strong></font><font color="#cdcd00">)</font> <font color="#1f3f81"><strong>:x</strong></font><br>
<font color="#cdcd00">(</font>win? <font color="#1f3f81"><strong>:o</strong></font><font color="#cdcd00">)</font> <font color="#1f3f81"><strong>:o</strong></font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; we basically enumerate all possible winning positions, which fall into</font><br>
<font color="#786000">; some regular patterns. I am sure there are better ways, but in the </font><br>
<font color="#786000">; interest of time... Note the use of get-in to fetech value in a multiple </font><br>
<font color="#786000">; dimensional vector: (get-in board [x y])</font></p>
<p><font color="#786000">; 74: Given a string of comma separated integers, write a function which </font><br>
<font color="#786000">; returns a new comma separated string that only contains the numbers </font><br>
<font color="#786000">; which are perfect squares.</font><br>
<font color="#786000">; (= (__ "4,5,6,7,8,9") "4,9")</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>s<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#800090">->></font> <font color="#ee9a00">(</font><font color="#007080">re-seq</font> <font color="#077807">#"\d+"</font> s<font color="#ee9a00">)</font><br>
<font color="#ee9a00">(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#912f11">#(</font>Integer/parseInt <font color="#912f11">%</font><font color="#912f11">)</font><font color="#ee9a00">)</font><br>
<font color="#ee9a00">(</font><font color="#1f3f81"><strong>filter</strong></font> <font color="#cdcd00">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>x<font color="#912f11">]</font><br>
<font color="#698b22">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>r <font color="#912f11">(</font><font color="#007080">int</font> <font color="#cd3700">(</font>Math/sqrt x<font color="#cd3700">)</font><font color="#912f11">)]</font><br>
<font color="#008b00">(</font><font color="#007080">=</font> x <font color="#96cdcd">(</font><font color="#007080">*</font> r r<font color="#96cdcd">)</font><font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><br>
<font color="#ee9a00">(</font><font color="#007080">interpose</font> <font color="#077807">","</font><font color="#ee9a00">)</font><br>
<font color="#ee9a00">(</font><font color="#007080">apply</font> <font color="#007080">str</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font></p>
<p><font color="#786000">; 75: Two numbers are coprime if their greatest common divisor equals 1. </font><br>
<font color="#786000">; Euler's totient function f(x) is defined as the number of positive integers </font><br>
<font color="#786000">; less than x which are coprime to x. The special case f(1) equals 1. Write a </font><br>
<font color="#786000">; function which calculates Euler's totient function.</font><br>
<font color="#786000">; (= (__ 10) (count '(1 3 7 9)) 4)</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>n<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#800090">->></font> <font color="#ee9a00">(</font><font color="#007080">range</font> <font color="#077807">2</font> n<font color="#ee9a00">)</font><br>
<font color="#ee9a00">(</font><font color="#1f3f81"><strong>filter</strong></font> <font color="#cdcd00">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>x<font color="#912f11">]</font><br>
<font color="#698b22">(</font><font color="#007080">=</font> <font color="#077807">1</font> <font color="#008b00">(</font><font color="#96cdcd">(</font><font color="#912f11">fn</font> gcd <font color="#912f11">[</font>a b<font color="#912f11">]</font><br>
<font color="#00688b">(</font><font color="#912f11">if</font> <font color="#483d8b">(</font><font color="#007080">=</font> <font color="#077807">0</font> b<font color="#483d8b">)</font> a <font color="#483d8b">(</font>gcd b <font color="#9400d3">(</font><font color="#007080">mod</font> a b<font color="#9400d3">)</font><font color="#483d8b">)</font><font color="#00688b">)</font><font color="#96cdcd">)</font><br>
x n<font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><br>
<font color="#007080">count</font><br>
<font color="#007080">inc</font><font color="#cd3700">)</font><font color="#912f11">)</font></p>
<p></font></p>My solutions for the first 50 problems on 4clojure.com2011-05-18T23:13:00-07:002011-05-18T23:13:00-07:00Huahaitag:yyhh.org,2011-05-18:/blog/2011/05/my-solutions-for-the-first-50-problems-on-4clojurecom<p>For someone without previous Lisp experience, the hardest part of learning <a href="https://clojure.org">Clojure</a> programming seems to be the functional way of doing things. It is like math, one really needs to do some exercises in order to master it. At this point, <a href="https://www.4clojure.com">4clojure.com</a> seems to be the best place for …</p><p>For someone without previous Lisp experience, the hardest part of learning <a href="https://clojure.org">Clojure</a> programming seems to be the functional way of doing things. It is like math, one really needs to do some exercises in order to master it. At this point, <a href="https://www.4clojure.com">4clojure.com</a> seems to be the best place for getting such exercises. It has a lot of problems for new clojurians to solve. These problems ask one to fill in the blank __ so the given expressions are true. To give a little challenge, some clojure built-in functions are forbidden to use for some problems. New problems are added from time to time on the site, so it surely can keep me entertained for a while.</p>
<p>I just finished the first 50 problems and think it might be helpful to post the solutions here. I tried to be functional and avoided using loops in the code. Some solutions are skipped as they seem trivial even for a functional newbie like myself. My solutions are probably just awful, but it is a fun experience nevertheless. I will post more solutions when I am done with them (Solutions <a href="https://yyhh.org/blog/2011/05/my-solutions-problems-no-51-75-4clojure-com">No.50-75</a> and <a href="https://yyhh.org/blog/2011/06/my-solutions-problems-no-76-100-4clojure-com">76-100</a>) Update: there are better solutions for problem 21, 27 and 44, contributed by visitors to the old site. But those comments are lost during system switch over. </p>
<p><font face="monospace"><font color="#786000">; 21: Write a function which returns the Nth element from a sequence.</font><br>
<font color="#786000">; (= (__ '(4 5 6 7) 2) 6)</font><br>
<font color="#786000">; forbidden: nth</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>coll n<font color="#912f11">]</font> <br>
<font color="#cd3700">(</font><font color="#ee9a00">(</font><font color="#007080">apply</font> <font color="#007080">comp</font> <font color="#cdcd00">(</font><font color="#007080">cons</font> <font color="#007080">first</font> <font color="#698b22">(</font><font color="#007080">repeat</font> n <font color="#007080">rest</font><font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font> coll<font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; We first compose n rest functions to get progressively shorter lists </font></font></p>
<p><font face="monospace"><font color="#786000">; till the </font><font color="#786000">desired element is the head, then take the head. A less </font></font></p>
<p><font face="monospace"><font color="#786000">; </font></font><font face="monospace"><font color="#786000">fancy version just </font><font color="#786000">uses nthnext, but it feels like cheating:</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>coll n<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#007080">first</font> <font color="#ee9a00">(</font><font color="#007080">nthnext</font> coll n<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font></font></p>
<p><font face="monospace"><font color="#786000">; 22: Write a function which returns the total number of elements in </font></font></p>
<p><font face="monospace"><font color="#786000">; a sequence.</font><br>
<font color="#786000">; (= (__ '(1 2 3 3 1)) 5)</font><br>
<font color="#786000">; forbidden: count</font><br>
<font color="#912f11">#(</font><font color="#1f3f81"><strong>reduce</strong></font> <font color="#007080">+</font> <font color="#912f11">(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#cd3700">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>x<font color="#912f11">]</font> <font color="#077807">1</font><font color="#cd3700">)</font> %<font color="#912f11">))</font><br>
<font color="#786000">; We just turn each element into 1 and then add them up</font><br>
<font color="#786000">; Note that (fn [x] 1) can be replaced by (constantly 1)</font></font></p>
<p><font face="monospace"><font color="#786000">; 23: Write a function which reverses a sequence.</font><br>
<font color="#786000">; (= (__ [1 2 3 4 5]) [5 4 3 2 1])</font><br>
<font color="#786000">; forbidden: reverse</font><br>
<font color="#912f11">#(</font><font color="#007080">into</font> <font color="#912f11">()</font> <font color="#912f11">%</font><font color="#912f11">)</font><br>
<font color="#786000">; We exploit the property of the list, which alway add new element </font><br>
<font color="#786000">; in front of the head. Also that the clojure sequences' equality</font><br>
<font color="#786000">; evaluation is element based, so [1 2 3] equals to '(1 2 3)</font></font></p>
<p><font face="monospace"><font color="#786000">; 26: Write a function which returns the first X fibonacci numbers.</font><br>
<font color="#786000">; (= (__ 6) '(1 1 2 3 5 8))</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>x<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#007080">take</font> x<br>
<font color="#ee9a00">(</font><font color="#cdcd00">(</font><font color="#912f11">fn</font> fib <font color="#912f11">[</font>a b<font color="#912f11">]</font><br>
<font color="#698b22">(</font><font color="#007080">cons</font> a <font color="#008b00">(</font><font color="#800090">lazy-seq</font> <font color="#96cdcd">(</font>fib b <font color="#00688b">(</font><font color="#007080">+</font> a b<font color="#00688b">)</font><font color="#96cdcd">)</font><font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font> <br>
<font color="#077807">1</font> <font color="#077807">1</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font> <br>
<font color="#786000">; we first recursively construct a lazy sequence of infinite number of </font><br>
<font color="#786000">; fibonacci numbers</font></font></p>
<p><font face="monospace"><font color="#786000">; 27: Write a function which returns true if the given sequence is</font></font></p>
<p><font face="monospace"><font color="#786000">; a palindrome.</font><br>
<font color="#786000">; (true? (__ '(1 1 3 3 1 1))) </font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>coll<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>rc <font color="#912f11">(</font><font color="#007080">reverse</font> coll<font color="#912f11">)</font> n <font color="#912f11">(</font><font color="#007080">count</font> coll<font color="#912f11">)]</font><br>
<font color="#ee9a00">(</font><font color="#007080">every?</font> <font color="#007080">identity</font> <br>
<font color="#cdcd00">(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#912f11">#(</font><font color="#007080">=</font> <font color="#912f11">(</font><font color="#007080">nth</font> coll %<font color="#912f11">)</font> <font color="#912f11">(</font><font color="#007080">nth</font> rc %<font color="#912f11">))</font> <font color="#698b22">(</font><font color="#007080">range</font> <font color="#008b00">(</font><font color="#007080">/</font> <font color="#96cdcd">(</font><font color="#007080">dec</font> n<font color="#96cdcd">)</font> <font color="#077807">2</font><font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; we naively compare half of the pairs of elment e(i) and e(n-i-1)</font></font></p>
<p><font face="monospace"><font color="#786000">; 28: Write a function which flattens a sequence.</font><br>
<font color="#786000">; (= (__ '((1 2) 3 [4 [5 6]])) '(1 2 3 4 5 6)) </font><br>
<font color="#786000">; forbidden: flatten</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> flt <font color="#912f11">[</font>coll<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>l <font color="#912f11">(</font><font color="#007080">first</font> coll<font color="#912f11">)</font> r <font color="#912f11">(</font><font color="#007080">next</font> coll<font color="#912f11">)]</font><br>
<font color="#ee9a00">(</font><font color="#007080">concat</font> <br>
<font color="#cdcd00">(</font><font color="#912f11">if</font> <font color="#698b22">(</font><font color="#007080">sequential?</font> l<font color="#698b22">)</font><br>
<font color="#698b22">(</font>flt l<font color="#698b22">)</font><br>
<font color="#912f11">[</font>l<font color="#912f11">]</font><font color="#cdcd00">)</font><br>
<font color="#cdcd00">(</font><font color="#1f3f81"><strong>when</strong></font> <font color="#698b22">(</font><font color="#007080">sequential?</font> r<font color="#698b22">)</font><br>
<font color="#698b22">(</font>flt r<font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; we basically treat the nested collection as a tree and recursively </font></font></p>
<p><font face="monospace"><font color="#786000">; walk the </font><font color="#786000">tree. Clojure's flatten use a tree-seq to walk the tree.</font></font></p>
<p><font face="monospace"><font color="#786000">; 29: Write a function which takes a string and returns a new </font></font></p>
<p><font face="monospace"><font color="#786000">; string containing</font><font color="#786000"> only the capital letters.</font><br>
<font color="#786000">; (= (__ "HeLlO, WoRlD!") "HLOWRD") </font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>coll<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#007080">apply</font> <font color="#007080">str</font> <font color="#ee9a00">(</font><font color="#1f3f81"><strong>filter</strong></font> <font color="#912f11">#(</font>Character/isUpperCase <font color="#912f11">%</font><font color="#912f11">)</font> coll<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; note the use of apply here, as str takes a number of args instead</font><br>
<font color="#786000">; of a character collection</font></font></p>
<p><font face="monospace"><font color="#786000">; 30: Write a function which removes consecutive duplicates from a sequence.</font><br>
<font color="#786000">; (= (apply str (__ "Leeeeeerrroyyy")) "Leroy")</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> cmprs <font color="#912f11">[</font>coll<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#1f3f81"><strong>when-let</strong></font> <font color="#912f11">[[</font>f <font color="#912f11">&</font> r<font color="#912f11">]</font> <font color="#912f11">(</font><font color="#007080">seq</font> coll<font color="#912f11">)]</font> <br>
<font color="#ee9a00">(</font><font color="#912f11">if</font> <font color="#cdcd00">(</font><font color="#007080">=</font> f <font color="#698b22">(</font><font color="#007080">first</font> r<font color="#698b22">)</font><font color="#cdcd00">)</font> <br>
<font color="#cdcd00">(</font>cmprs r<font color="#cdcd00">)</font> <br>
<font color="#cdcd00">(</font><font color="#007080">cons</font> f <font color="#698b22">(</font>cmprs r<font color="#698b22">)</font><font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font> <br>
<font color="#786000">; Basically a variant of the filter function. Note the sequence </font></font></p>
<p><font face="monospace"><font color="#786000">; is destructed</font><font color="#786000"> into first element f and the rest r. </font></p>
<p><font color="#786000">; 31: Write a function which packs consecutive duplicates into sub-lists.</font><br>
<font color="#786000">; (= (__ [1 1 2 1 1 1 3 3]) '((1 1) (2) (1 1 1) (3 3)))</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>coll<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#ee9a00">(</font><font color="#912f11">fn</font> pack <font color="#912f11">[</font>res prev coll<font color="#912f11">]</font><br>
<font color="#cdcd00">(</font><font color="#1f3f81"><strong>if-let</strong></font> <font color="#912f11">[[</font>f <font color="#912f11">&</font> r<font color="#912f11">]</font> <font color="#912f11">(</font><font color="#007080">seq</font> coll<font color="#912f11">)]</font> <br>
<font color="#698b22">(</font><font color="#912f11">if</font> <font color="#008b00">(</font><font color="#007080">=</font> f <font color="#96cdcd">(</font><font color="#007080">first</font> prev<font color="#96cdcd">)</font><font color="#008b00">)</font> <br>
<font color="#008b00">(</font>pack res <font color="#96cdcd">(</font><font color="#007080">conj</font> prev f<font color="#96cdcd">)</font> r<font color="#008b00">)</font> <br>
<font color="#008b00">(</font>pack <font color="#96cdcd">(</font><font color="#007080">conj</font> res prev<font color="#96cdcd">)</font> <font color="#912f11">[</font>f<font color="#912f11">]</font> r<font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font> <br>
<font color="#cdcd00">(</font><font color="#007080">conj</font> res prev<font color="#cdcd00">)</font><font color="#ee9a00">)</font><br>
<font color="#912f11">[]</font> <font color="#912f11">[(</font><font color="#007080">first</font> coll<font color="#912f11">)]</font> <font color="#ee9a00">(</font><font color="#007080">rest</font> coll<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font> <br>
<font color="#786000">; res is the final list, prev keeps the immediate previous sub-list. </font><br>
<font color="#786000">; A much simpler version use partition-by:</font><br>
<font color="#912f11">#(</font><font color="#007080">partition-by</font> <font color="#007080">identity</font> <font color="#912f11">%</font><font color="#912f11">)</font></p>
<p><font color="#786000">; 33: Write a function which replicates each element of a sequence </font></p>
<p></font></p>
<p><font face="monospace"><font color="#786000">; n number of </font><font color="#786000">times.</font><br>
<font color="#786000">; (= (__ [1 2 3] 2) '(1 1 2 2 3 3)) </font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>coll n<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#007080">apply</font> <font color="#007080">concat</font> <font color="#ee9a00">(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#912f11">#(</font><font color="#007080">repeat</font> n <font color="#912f11">%</font><font color="#912f11">)</font> coll<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; or more succintly: </font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>coll n<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#1f3f81"><strong>mapcat</strong></font> <font color="#912f11">#(</font><font color="#007080">repeat</font> n <font color="#912f11">%</font><font color="#912f11">)</font> coll<font color="#cd3700">)</font><font color="#912f11">)</font></p>
<p><font color="#786000">; 34: Write a function which creates a list of all integers in a </font></p>
<p></font></p>
<p><font face="monospace"><font color="#786000">; given range. </font><br>
<font color="#786000">; (= (__ 1 4) '(1 2 3))</font><br>
<font color="#786000">; forbidden: range</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>s e<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#007080">take</font> <font color="#ee9a00">(</font><font color="#007080">-</font> e s<font color="#ee9a00">)</font> <font color="#ee9a00">(</font><font color="#007080">iterate</font> <font color="#007080">inc</font> s<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font></p>
<p><font color="#786000">; 38: Write a function which takes a variable number of parameters </font></p>
<p></font></p>
<p><font face="monospace"><font color="#786000">; and returns </font><font color="#786000">the maximum value.</font><br>
<font color="#786000">; forbidden: max, max-key</font><br>
<font color="#786000">; (= (__ 1 8 3 4) 8)</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>x <font color="#912f11">&</font> xs<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#1f3f81"><strong>reduce</strong></font> <font color="#912f11">#(</font><font color="#912f11">if</font> <font color="#912f11">(</font><font color="#007080"><</font> %<font color="#077807">1</font> %<font color="#077807">2</font><font color="#912f11">)</font> <font color="#912f11">%2</font> <font color="#912f11">%1</font><font color="#912f11">)</font> x xs<font color="#cd3700">)</font><font color="#912f11">)</font></p>
<p><font color="#786000">; 39: Write a function which takes two sequences and returns the first</font></p>
<p></font></p>
<p><font face="monospace"><font color="#786000">; item </font><font color="#786000">from each, then the second item from each, then the third, etc.</font><br>
<font color="#786000">; (= (__ [1 2] [3 4 5 6]) '(1 3 2 4))</font><br>
<font color="#786000">; forbidden: interleave</font><br>
<font color="#912f11">#(</font><font color="#1f3f81"><strong>mapcat</strong></font> <font color="#007080">vector</font> <font color="#912f11">%1</font> <font color="#912f11">%2</font><font color="#912f11">)</font> </p>
<p><font color="#786000">; 40: Write a function which separates the items of a sequence by </font></p>
<p></font></p>
<p><font face="monospace"><font color="#786000">; an arbitrary </font><font color="#786000">value.</font><br>
<font color="#786000">; (= (__ 0 [1 2 3]) [1 0 2 0 3])</font><br>
<font color="#786000">; forbidden: interpose</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>sep coll<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#007080">drop-last</font> <font color="#ee9a00">(</font><font color="#1f3f81"><strong>mapcat</strong></font> <font color="#007080">vector</font> coll <font color="#cdcd00">(</font><font color="#007080">repeat</font> sep<font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font></p>
<p><font color="#786000">; 41: Write a function which drops every Nth item from a sequence.</font><br>
<font color="#786000">; (= (__ [1 2 3 4 5 6 7 8] 3) [1 2 4 5 7 8]) </font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>coll n<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#007080">flatten</font> <br>
<font color="#ee9a00">(</font><font color="#007080">concat</font> <br>
<font color="#cdcd00">(</font><font color="#1f3f81"><strong>map</strong></font> <font color="#912f11">#(</font><font color="#007080">drop-last</font> <font color="#912f11">%</font><font color="#912f11">)</font> <font color="#698b22">(</font><font color="#007080">partition</font> n coll<font color="#698b22">)</font><font color="#cdcd00">)</font> <br>
<font color="#cdcd00">(</font><font color="#007080">take-last</font> <font color="#698b22">(</font><font color="#007080">rem</font> <font color="#008b00">(</font><font color="#007080">count</font> coll<font color="#008b00">)</font> n<font color="#698b22">)</font> coll<font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; We partition the sequence, drop last one from each, then stitch them</font></p>
<p></font></p>
<p><font face="monospace"><font color="#786000">; back</font><font color="#786000"> take care the remaining elements too</font></p>
<p><font color="#786000">; 42: Write a function which calculates factorials.</font><br>
<font color="#786000">; (= (__ 5) 120)</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>n<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#007080">apply</font> <font color="#007080">*</font> <font color="#ee9a00">(</font><font color="#007080">range</font> <font color="#077807">1</font> <font color="#cdcd00">(</font><font color="#007080">inc</font> n<font color="#cdcd00">)</font><font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; clojure arithmetic functions can take a variable number of arguments</font></p>
<p><font color="#786000">; 43: Write a function which reverses the interleave process into n </font></p>
<p></font></p>
<p><font face="monospace"><font color="#786000">; number of </font><font color="#786000">subsequences.</font><br>
<font color="#786000">; (= (__ [1 2 3 4 5 6] 2) '((1 3 5) (2 4 6)))</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>coll n<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#007080">apply</font> <font color="#1f3f81"><strong>map</strong></font> <font color="#007080">list</font> <font color="#ee9a00">(</font><font color="#007080">partition</font> n coll<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#786000">; exploit map function's ability to take a variable number of </font></font></p>
<p><font face="monospace"><font color="#786000">; collections as </font><font color="#786000">arguments</font></p>
<p><font color="#786000">; 44: Write a function which can rotate a sequence in either direction.</font><br>
<font color="#786000">; (= (__ 2 [1 2 3 4 5]) '(3 4 5 1 2))</font><br>
<font color="#786000">; (= (__ -2 [1 2 3 4 5]) '(4 5 1 2 3))</font><br>
<font color="#912f11">(</font><font color="#912f11">fn</font> <font color="#912f11">[</font>n coll<font color="#912f11">]</font><br>
<font color="#cd3700">(</font><font color="#912f11">let</font> <font color="#912f11">[</font>ntime <font color="#912f11">(</font><font color="#912f11">if</font> <font color="#cd3700">(</font><font color="#007080">neg?</font> n<font color="#cd3700">)</font> <font color="#cd3700">(</font><font color="#007080">-</font> n<font color="#cd3700">)</font> n<font color="#912f11">)</font><br>
lshift <font color="#912f11">#(</font><font color="#007080">concat</font> <font color="#912f11">(</font><font color="#007080">rest</font> %<font color="#912f11">)</font> <font color="#912f11">[(</font><font color="#007080">first</font> %<font color="#912f11">)])</font><br>
rshift <font color="#912f11">#(</font><font color="#007080">cons</font> <font color="#912f11">(</font><font color="#007080">last</font> %<font color="#912f11">)</font> <font color="#912f11">(</font><font color="#007080">drop-last</font> %<font color="#912f11">))]</font><br>
<font color="#ee9a00">(</font><font color="#cdcd00">(</font><font color="#007080">apply</font> <font color="#007080">comp</font> <font color="#698b22">(</font><font color="#007080">repeat</font> ntime <font color="#008b00">(</font><font color="#912f11">if</font> <font color="#96cdcd">(</font><font color="#007080">neg?</font> n<font color="#96cdcd">)</font> rshift lshift<font color="#008b00">)</font><font color="#698b22">)</font><font color="#cdcd00">)</font> coll<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font></p>
<p><font color="#786000">; 50: Write a function which takes a sequence consisting of items </font></p>
<p></font></p>
<p><font face="monospace"><font color="#786000">; with different</font><font color="#786000"> types and splits them up into a set of homogeneous </font></font></p>
<p><font face="monospace"><font color="#786000">; sub-sequences. The internal</font><font color="#786000"> order of each sub-sequence should be </font></font></p>
<p><font face="monospace"><font color="#786000">; maintained, but the sub-sequences </font><font color="#786000">themselves can be returned in </font></font></p>
<p><font face="monospace"><font color="#786000">; any order (this is why 'set' is used in the </font><font color="#786000">test cases).</font><br>
<font color="#786000">; (= (set (__ [1 :a 2 :b 3 :c])) #{[1 2 3] [:a :b :c]})</font><br>
<font color="#912f11">#(</font><font color="#007080">vals</font> <font color="#912f11">(</font><font color="#007080">group-by</font> <font color="#007080">type</font> %<font color="#912f11">))</font></font></p>Develop clojure Web applications with vim2011-05-02T23:02:00-07:002011-05-02T23:02:00-07:00Huahaitag:yyhh.org,2011-05-02:/blog/2011/05/develop-clojure-web-applications-with-vim<p>I recently started to learn <a href="https://clojure.org">clojure</a> programming. It is an interesting experience. Ever since I learned computer programming almost 20 years ago, in Pascal, on a VAX minicomputer terminal, I have not experienced this newbie sensation with a computer language. The sense of excitement and novelty is high, and the …</p><p>I recently started to learn <a href="https://clojure.org">clojure</a> programming. It is an interesting experience. Ever since I learned computer programming almost 20 years ago, in Pascal, on a VAX minicomputer terminal, I have not experienced this newbie sensation with a computer language. The sense of excitement and novelty is high, and the eagerness to put the language to use is higher still. So for my new project at work, I am doing it with clojure.</p>
<p>This is a visual analytics project, and the visual part will be on the Web. It amazes me <a href="https://www.glenstampoultzis.net/blog/clojure-web-infrastructure/">how much work</a> has already been done for the Web using this 3 years old language. So it should be easy for me to get started. Here's what I have so far.</p>
<p><strong><br>
Know your lein<br>
</strong></p>
<p>The standard build tool for clojure projects these days seems to be lein, short for <a href="https://github.com/technomancy/leiningen">leiningen</a>. It is just a script, download it, make it executable, put it on your path. Also make sure you have java installed. Now go to whatever directory your project will live in, run lein:</p>
<p><code>lein new myproject</code></p>
<p>This creates the default project structure for a project creatively named "myproject", and downloads dependencies from the Internet, including clojure itself (clojure is built on java virtual machine, so the clojure language runtime is just a jar file).</p>
<p>Now in the "mypoject" directory, there is a "project.clj" file. This file controls everything about the project, except the writing code part. Edit the file according to your needs. There is a very extensive <a href="https://github.com/technomancy/leiningen/blob/master/sample.project.clj">sample project.clj</a> that I find very informative. My project.clj so far looks like this:</p>
<p><font face="monospace" size="1em"><br>
<font color="#375288"> 1 </font><font color="#912f11">(</font>defproject myproject <font color="#077807">"0.0.1-SNAPSHOT"</font><br>
<font color="#375288"> 2 </font> <font color="#1f3f81"><strong>:description</strong></font> <font color="#077807">"MyProject has super duper visual analytics capabilities"</font><br>
<font color="#375288"> 3 </font> <font color="#1f3f81"><strong>:dependencies</strong></font> <font color="#912f11">[[</font>org.clojure/clojure <font color="#077807">"1.2.1"</font><font color="#912f11">]</font><br>
<font color="#375288"> 4 </font> <font color="#912f11">[</font>org.clojure/clojure-contrib <font color="#077807">"1.2.0"</font><font color="#912f11">]</font><br>
<font color="#375288"> 5 </font> <font color="#912f11">[</font>compojure <font color="#077807">"0.6.2"</font><font color="#912f11">]</font><br>
<font color="#375288"> 6 </font> <font color="#912f11">[</font>hiccup <font color="#077807">"0.3.4"</font><font color="#912f11">]</font><br>
<font color="#375288"> 7 </font> <font color="#912f11">[</font>ring <font color="#077807">"0.3.7"</font><font color="#912f11">]</font><br>
<font color="#375288"> 8 </font> <font color="#912f11">[</font>commons-logging <font color="#077807">"1.1.1"</font><font color="#912f11">]</font><br>
<font color="#375288"> 9 </font> <font color="#912f11">[</font>org.apache.lucene/lucene-core <font color="#077807">"3.1.0"</font><font color="#912f11">]</font><br>
<font color="#375288">10 </font> <font color="#912f11">[</font>xalan <font color="#077807">"2.7.1"</font><font color="#912f11">]</font><br>
<font color="#375288">11 </font> <font color="#912f11">[</font>javaewah <font color="#077807">"0.1.0"</font><font color="#912f11">]</font><br>
<font color="#375288">12 </font> <font color="#912f11">[</font>com.my.work/secret-lib1 <font color="#077807">"0.3.4b"</font><font color="#912f11">]</font><br>
<font color="#375288">13 </font> <font color="#912f11">[</font>com.my.work/secret-lib2 <font color="#077807">"0.1.0"</font><font color="#912f11">]]</font><br>
<font color="#375288">14 </font> <font color="#1f3f81"><strong>:dev-dependencies</strong></font> <font color="#912f11">[[</font>lein-ring <font color="#077807">"0.4.0"</font><font color="#912f11">]</font><br>
<font color="#375288">15 </font> <font color="#786000">;[org.clojars.autre/lein-vimclojure "1.0.0"]</font><br>
<font color="#375288">16 </font> <font color="#912f11">[</font>clj-stacktrace <font color="#077807">"0.2.1"</font><font color="#912f11">]]</font> <br>
<font color="#375288">17 </font> <font color="#1f3f81"><strong>:repositories</strong></font> <br>
<font color="#375288">18 </font> <font color="#912f11">{</font><font color="#077807">"myrepo"</font> <br>
<font color="#375288">19 </font> <font color="#912f11">{</font><font color="#1f3f81"><strong>:url</strong></font> <br>
<font color="#375288">20 </font> <font color="#077807">"<a href="https://myrepo.my.com:8080/artifactory/libs-release-local">https://myrepo.my.com:8080/artifactory/libs-release-local</a>"</font><font color="#912f11">}}</font><br>
<font color="#375288">21 </font> <font color="#1f3f81"><strong>:source-path</strong></font> <font color="#077807">"src/clojure"</font><br>
<font color="#375288">22 </font> <font color="#1f3f81"><strong>:java-source-path</strong></font> <font color="#077807">"src/java"</font><br>
<font color="#375288">23 </font> <font color="#1f3f81"><strong>:warn-on-reflection</strong></font> <font color="#077807">true</font><br>
<font color="#375288">24 </font> <font color="#786000">;:main com.my.myproject.runtime.core)</font><br>
<font color="#375288">25 </font> <font color="#1f3f81"><strong>:ring</strong></font> <font color="#912f11">{</font><font color="#1f3f81"><strong>:handler</strong></font> com.my.myproject.runtime.core/app<font color="#912f11">})</font><br>
</font></p>
<p>Let me explain line by line. The first line is the project name and the current version number (using the so called <a href="https://semver.org">semantic versioning</a> scheme).</p>
<p>The third line starts the dependencies definition. These dependencies are libraries written in jvm languages such as java or clojure. lein will automatically find and download them from public repositories if they are publicly available. This is the case for libraries referred in line 3 - 10, where the last three libs are open source java libs and the rest are open source clojure libs: <a href="https://github.com/weavejester/compojure">compojure</a> is a lightweight Web framework, which builds upon <a href="https://github.com/mmcgrana/ring">ring</a>, which abstract HTTP into a simple API, <a href="https://github.com/weavejester/hiccup">hiccup</a> allows one to write html in clojure syntax.</p>
<p>The lib on line 11 is also open source, however, it has not been packaged by the author and submitted to a pubic repository, so lein will not be able to find it. What I did was to package it as a jar file myself and deploy it to a private repository I setup for my team, so my team members can all access to the same libs without needing to commit the libs to our version control system, which is not suitable for handling binary data. This private repository is defined on line 17 to 20. Here the repository server is a standard installation of <a href="https://www.jfrog.com/products.php">artifactory</a>. The libs on line 12 and 13 are our in-house developed java libraries, which are deployed the same way.</p>
<p>By default, lein expect clojure code in "myproject/src". Since we will be mixing java code and clojure code, we put them in separate folders. These are defined in line 21 and 22.</p>
<p>Line 14 starts the dev-dependencies. These are the dependencies for developers' convenience and will not be included in the final product. <a href="https://github.com/weavejester/lein-ring">lein-ring</a> is a plugin for facilitating Web development in clojure that utilizes ring. Basically, it adds a ring command for lein. For example,</p>
<p><code>lein ring server-headless</code></p>
<p>will start a jetty server with the Web app running on port 3000 (default). The Web app is defined on line 25, which is just a simple app to show a greeting in this case. The code consists of two files. core.clj defines the main routing table for the Web app:</p>
<p><font face="monospace"><br>
<font color="#375288"> 1 </font><font color="#912f11">(</font><font color="#800090">ns</font> com.my.myproject.runtime.core<br>
<font color="#375288"> 2 </font> <font color="#cd3700">(</font><font color="#1f3f81"><strong>:use</strong></font> compojure.core<br>
<font color="#375288"> 3 </font> hiccup.middleware<br>
<font color="#375288"> 4 </font> com.my.myproject.runtime.views<font color="#cd3700">)</font><br>
<font color="#375288"> 5 </font> <font color="#cd3700">(</font><font color="#1f3f81"><strong>:require</strong></font> <font color="#912f11">[</font>compojure.route <font color="#1f3f81"><strong>:as</strong></font> route<font color="#912f11">]</font><br>
<font color="#375288"> 6 </font> <font color="#912f11">[</font>compojure.handler <font color="#1f3f81"><strong>:as</strong></font> handler<font color="#912f11">]</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#375288"> 7 </font><br>
<font color="#375288"> 8 </font><font color="#912f11">(</font>defroutes main-routes<br>
<font color="#375288"> 9 </font> <font color="#cd3700">(</font>GET <font color="#077807">"/"</font> <font color="#912f11">[]</font> <font color="#ee9a00">(</font>index-page<font color="#ee9a00">)</font><font color="#cd3700">)</font><br>
<font color="#375288">10 </font> <font color="#cd3700">(</font>route/not-found <font color="#ee9a00">(</font>page-404<font color="#ee9a00">)</font><font color="#cd3700">)</font><br>
<font color="#375288">11 </font> <font color="#cd3700">(</font>route/resources <font color="#077807">"/"</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#375288">12 </font><br>
<font color="#375288">13 </font><font color="#912f11">(</font><font color="#912f11">def</font> app<br>
<font color="#375288">14 </font> <font color="#cd3700">(</font><font color="#800090">-></font> <font color="#ee9a00">(</font>handler/site main-routes<font color="#ee9a00">)</font><br>
<font color="#375288">15 </font> <font color="#ee9a00">(</font>wrap-base-url<font color="#ee9a00">)</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
</font></p>
<p>views.clj defines the pages to show:</p>
<p><font face="monospace"><br>
<font color="#375288"> 1 </font><font color="#912f11">(</font><font color="#800090">ns</font> com.my.myproject.runtime.views<br>
<font color="#375288"> 2 </font> <font color="#cd3700">(</font><font color="#1f3f81"><strong>:use</strong></font> <font color="#912f11">[</font>hiccup core page-helpers<font color="#912f11">]</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#375288"> 3 </font><br>
<font color="#375288"> 4 </font><font color="#912f11">(</font><font color="#800090">defn</font> index-page <font color="#912f11">[]</font><br>
<font color="#375288"> 5 </font> <font color="#cd3700">(</font>html<br>
<font color="#375288"> 6 </font> <font color="#912f11">[</font><font color="#1f3f81"><strong>:head</strong></font> <br>
<font color="#375288"> 7 </font> <font color="#912f11">[</font><font color="#1f3f81"><strong>:title</strong></font> <font color="#077807">"Welcome"</font><font color="#912f11">]</font> <br>
<font color="#375288"> 8 </font> <font color="#912f11">(</font>include-css <font color="#077807">"/css/style.css"</font><font color="#912f11">)]</font><br>
<font color="#375288"> 9 </font> <font color="#912f11">[</font><font color="#1f3f81"><strong>:body</strong></font><br>
<font color="#375288">10 </font> <font color="#912f11">[</font><font color="#1f3f81"><strong>:h1</strong></font> <br>
<font color="#375288">11 </font> <font color="#077807">"Hello World!"</font><font color="#912f11">]]</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
<font color="#375288">12 </font><br>
<font color="#375288">13 </font><font color="#912f11">(</font><font color="#800090">defn</font> page-404 <font color="#912f11">[]</font><br>
<font color="#375288">14 </font> <font color="#cd3700">(</font>html<br>
<font color="#375288">15 </font> <font color="#912f11">[</font><font color="#1f3f81"><strong>:head</strong></font> <br>
<font color="#375288">16 </font> <font color="#912f11">[</font><font color="#1f3f81"><strong>:title</strong></font> <font color="#077807">"Sorry"</font><font color="#912f11">]</font> <br>
<font color="#375288">17 </font> <font color="#912f11">(</font>include-css <font color="#077807">"/css/style.css"</font><font color="#912f11">)]</font><br>
<font color="#375288">18 </font> <font color="#912f11">[</font><font color="#1f3f81"><strong>:body</strong></font><br>
<font color="#375288">19 </font> <font color="#912f11">[</font><font color="#1f3f81"><strong>:h1</strong></font> <font color="#077807">"Page not found"</font><font color="#912f11">]]</font><font color="#cd3700">)</font><font color="#912f11">)</font><br>
</font></p>
<p>One very nice thing about lein-ring is that it will automatically pick up any changes made in the project. That's right, live changes, no need to wait for the code to compile, restart the server, etc, just refresh the browser and you will see the changes. This is extremely convenient for Web development, especially for experimentation in clojure REPL.</p>
<p><strong>vimclojure</strong></p>
<p>I am a vi addict. For my fix, there is a <a href="https://www.vim.org/scripts/script.php?script_id=2501">vimclojure</a> plugin for clojure development with vim. To have dynamic features such as code snippet evaluation, code completion etc, there is a need to start a nailgun server so vimclojure can contact with a clojure REPL. This script is what I use:</p>
<p><font face="monospace" size="1em"><br>
<font color="#375288"> 1 </font><font color="#786000"># clojure jar is also installed in ~/.vim/lib</font><br>
<font color="#375288"> 2 </font><font color="#007080">CL_CP</font>=.:~/.vim/lib/*<br>
<font color="#375288"> 3 </font><br>
<font color="#375288"> 4 </font><font color="#1f3f81"><strong>if</strong> </font><font color="#1f3f81"><strong>[</strong></font> <font color="#1f3f81"><strong>-f</strong></font> <font color="#1f3f81"><strong>"</strong></font><font color="#077807">project.clj</font><font color="#1f3f81"><strong>"</strong></font> <font color="#1f3f81"><strong>]</strong></font><font color="#1f3f81"><strong>;</strong></font> <font color="#1f3f81"><strong>then</strong></font><br>
<font color="#375288"> 5 </font> <font color="#007080">CP</font>=<font color="#912f11">`lein classpath`</font>:<font color="#1f3f81"><strong>"</strong></font><font color="#800090"> $CL_CP</font><font color="#1f3f81"><strong>"</strong></font><br>
<font color="#375288"> 6 </font><font color="#1f3f81"><strong>else</strong></font><br>
<font color="#375288"> 7 </font> <font color="#007080">CP</font>=<font color="#1f3f81"><strong>"</strong></font><font color="#800090"> $CL_CP</font><font color="#1f3f81"><strong>"</strong></font><br>
<font color="#375288"> 8 </font><font color="#1f3f81"><strong>fi</strong></font><br>
<font color="#375288"> 9 </font><br>
<font color="#375288">10 </font><font color="#1f3f81"><strong>if</strong> </font><font color="#1f3f81"><strong>[</strong></font> <font color="#800090"> $#</font> <font color="#1f3f81"><strong>-eq</strong></font> <font color="#077807">0</font> <font color="#1f3f81"><strong>]</strong></font><font color="#1f3f81"><strong>;</strong></font> <font color="#1f3f81"><strong>then</strong></font> <br>
<font color="#375288">11 </font> <font color="#1f3f81"><strong>exec</strong></font> java -server -cp <font color="#1f3f81"><strong>"</strong></font><font color="#800090"> $CP</font><font color="#1f3f81"><strong>"</strong></font> vimclojure.nailgun.NGServer <font color="#077807">127</font>.<font color="#077807">0</font>.<font color="#077807">0</font>.<font color="#077807">1</font><br>
<font color="#375288">12 </font><font color="#1f3f81"><strong>else</strong></font><br>
<font color="#375288">13 </font> <font color="#1f3f81"><strong>exec</strong></font> java -server -cp <font color="#1f3f81"><strong>"</strong></font><font color="#800090"> $CP</font><font color="#1f3f81"><strong>"</strong></font> vimclojure.nailgun.NGServer <font color="#800090"> $1</font> <br>
<font color="#375288">14 </font><font color="#1f3f81"><strong>fi</strong></font><br>
</font></p>
<p>I normally run this script in the root directory of the project, this allows "lein classpath" to pick up all the classpaths for the REPL session. There's also a lein-vimclojure plungin that will install vimclojure and start a nailgun server for you, but I found it does not load "user.clj", so my convenient functions defined there are not autoloaded. I will stick to my script.</p>
<p>For better navigation of clojure source code, vim users need <a href="https://www.vim.org/scripts/script.php?script_id=273">TagList</a> plugin. The plugin does not automatically work with clojure though. <a href="https://kuriqoo.blogspot.com/2011/02/using-clojure-in-vim.html">This blog post</a> has a solution, and it worked for me. Basically, this tells TagList to treat clojure code just like other Lisp code, which it is.</p>
<p>That's all folks.</p>A conversation about the job talks of new Ph.D. graduates in computer science2011-03-07T20:40:00-08:002011-03-07T20:40:00-08:00Huahaitag:yyhh.org,2011-03-07:/blog/2011/03/a-conversation-about-the-job-talks-of-new-phd-graduates-in-computer-science<p>Yunyao and I work in a research center of a major technology company. At this time of a year, we attend job talks every week. These talks are technical presentations given by candidates for our research or development positions, as part of their two day job interviews here. Not surprisingly …</p><p>Yunyao and I work in a research center of a major technology company. At this time of a year, we attend job talks every week. These talks are technical presentations given by candidates for our research or development positions, as part of their two day job interviews here. Not surprisingly, the majority of the talks are given by newly graduated computer science PhDs who have published a lot of technical papers in premier computer science conferences. After a while, we kind of see some common deficiencies of these new graduates. Below is an instant messaging conversation we had right after attending a talk, which I hope would be helpful for some people.</p>
<p>YY: How do you like the talk?</p>
<p>HH: good slides</p>
<p>YY: yes, very well made</p>
<p>HH: lack of big picture in question handling</p>
<p>YY: but he seems to have some problem explaining the details (to outsider)</p>
<p>HH: I think he lacks big picture. Those questions could normally be answered by a few simple sentences</p>
<p>YY: yeah</p>
<p>HH: but he tried to explain the details, which further confused people. All the questions were about the big pictures, but he couldn't even understand what people were asking</p>
<p>YY: that's typical when the work is all about formulas, because he puts slides in such a way to help people understand, but it is not clear what the exact output his program would generate</p>
<p>HH: right</p>
<p>YY: it would be better that he first goes through actual input/output, and then explain the meaning of the output</p>
<p>HH: yeah, I am afraid they have not thought about that</p>
<p>YY: we are not interested in blackbox. For example, it is still unclear to me how he ... (omitted)</p>
<p>(a few exchanges on technical details are omitted)...</p>
<p>YY: I didn't ask too many questions, because I didn't want to make the situation worse for him</p>
<p>HH: right, I think he should have stepped back from the stories of his papers. Do not use the same ones in the job talk, instead, create a coherent new story for the job talk. It is the same problem with B (another candidate who gave talk here before).</p>
<p>YY: yes, and don't refer back to the paper. I am not going to read it.</p>
<p>HH: right, the talk should be self contained and coherent. The stories of the papers are normally not coherently fit to one another.</p>
<p>YY: No. Anyway, I am under-impressed.</p>
<p>HH: he just tried to repeat the stories of his papers, which are tenuous at best.</p>
<p>YY: yeah, I think the fact that his slides use simplified examples made things worse because it confuses people</p>
<p>HH: right. Anyway, I think it is a common problem with new graduates. They didn't seem to think too much about the problems they were solving. Everything is paper driven, and they just can't tell a story straight.</p>
<p>YY: exactly. This is because most people are not driven by problems, but by writing papers.</p>
<p>HH: right. They have a hunch, an idea, and they start writing a paper about it.</p>
<p>YY: (two smiles)</p>
<p>HH: I think this conference driven publishing culture in computer science contributes to this problem</p>
<p>YY: I think so</p>
<p>HH: well, these are the things beyond individual's control, so we can't really blame the student. If they are lucky, they get good adviser or mentors, then it is less of a problem...</p>
<p>YY: yeah, the student start from scratch, so it's really up to the adviser</p>
<p>HH: well then students often look up the publications of faculty members. If one faculty member publishes a lot, students will swarm to him instead of another one who publishes less (but maybe with higher quality). So it is a self perpetuating problem. Anyway, there's nothing we (in industry) can do about it.</p>
<p>YY: yeah.</p>Thinkpad Hotkeys in KDE42010-12-01T22:00:00-08:002010-12-01T22:00:00-08:00Huahaitag:yyhh.org,2010-12-01:/blog/2010/12/thinkpad-hotkeys-in-kde4<p>I have kept my Thinkpad X61 laptop up to date with Debian sid for a few years. The KDE4 in Debian sid is at version <strong>4.4.5</strong> at this moment, and I think it is mature enough for me to switch the laptop power management from <a href="/blog/2007/10/thinkpad-x61-hotkeys-solution-debian-linux">my own hacked …</a></p><p>I have kept my Thinkpad X61 laptop up to date with Debian sid for a few years. The KDE4 in Debian sid is at version <strong>4.4.5</strong> at this moment, and I think it is mature enough for me to switch the laptop power management from <a href="/blog/2007/10/thinkpad-x61-hotkeys-solution-debian-linux">my own hacked up solution</a> to a KDE integrated one. My old solution still works for the most part, but there are some glitches after repeated supsend-resume cycles. As the system keeps evolving, I suspect more things would break.</p>
<p>Power management in KDE4 is handled by PowerDevil, which is disabled if powersaved is running (my old solution relied on powersaved). First I uninstalled powersaved and reboot, sure enough, all Fn hotkeys stops working. Now I go to KDE <strong>System Settings -> Advanced -> Power Management</strong>, and see the PowerDevil seems to be in a health state. The problem is that the hotkey presses are intercepted by ACPI so KDE does not receive these events. To stop the interruption, I edit <strong>/etc/modules</strong> as root and comment out <strong>thinkpad_acpi</strong> module, reboot. Now the Fn hotkeys should be registered in KDE, all we need to do is to make them do things we want. </p>
<p>To set up global hotkeys, we go to <strong>System Settings -> Input Actions</strong>, I add a new group called <em>My Shortcuts</em> and enabled it. Right-click <em>My Shortcuts</em>, <strong>New->Global Shortcut->DBus Command</strong>, I create a new entry <em>Hibernate</em>, and in the <strong>Action</strong> tab fill in needed dbus information for hibernating the system with PowerDevil (See screenshot). Basically, this is similar to issuing a console command "qdbus org.kde.powerdevil /modules/powerdevil suspend 4". Here, the parameter 4 is for hibernate (suspend to disk), 2 is for sleep (suspend to memory), and 1 for lock screen. In the <strong>Trigger</strong> tab, click the button, and press Fn+F12, notice that KDE recognizes this key as a Suspend key. Now click <strong>Apply</strong>, the Fn+F12 hotkey is setup. Now try Fn+F12, the system should hibernate. So far, the hibernate-resume cycles seem to be clean and problem free for me. I am using 2.6.36 kernel. </p>
<p>Overall, this seems to be easy enough. No scripts, no hacks.</p>
<p><img src="https://farm6.static.flickr.com/5082/5224299173_5c53303d52.jpg" width="500" height="378" alt="hibernate-snapshot2" /></p>Config Spring and DWR on Jetty with zero XML2009-08-09T10:51:00-07:002009-08-09T10:51:00-07:00Huahaitag:yyhh.org,2009-08-09:/blog/2009/08/config-spring-and-dwr-on-jetty-with-zero-xml<p>I hate xml configuation files. They look awful. As a result, they can be very time-consuming to write, and are very error-prone. There's no type-safty checking whatsoever. I would rather keep configurations within my Java source code. After all, we programmers are the only people looking at these configurations, why …</p><p>I hate xml configuation files. They look awful. As a result, they can be very time-consuming to write, and are very error-prone. There's no type-safty checking whatsoever. I would rather keep configurations within my Java source code. After all, we programmers are the only people looking at these configurations, why create trouble for ourselves? Luckily, with annotation support in Java, we can now completely do away with xml files for developing Web applications. Here is my recent experience integrating Spring framework with DWR on a Jetty sever.</p>
<p><strong>Spring</strong></p>
<p>Spring framework seems to be very popular in enterprise Java world. The core idea of "inversion of control (IoC)" seems to be trival (I bet any good programmers are already doing IoC without knowing the name). But sometimes, taking a simple idea seriously can get you a lot of mileage. Map-Reduce is another example on top of my head. Anyway, I decided to use Spring to manage objects in one of my dependency-rapidly-getting-out-of-hand Web projejcts. Spring was known for its xml hell, but recently advances have given it annotation-based configuration and JavaConfig. Now we can do Spring configuration completely in Java source code. To do this, I put these jars in my java built path:</p>
<ul>
<li>spring.jar (Note that this is spring 2.5.6)</li>
<li>asm-3.2.jar</li>
<li>aspectj-1.6.5.jar</li>
<li>org.springframework.config.java-1.0.0.M4.jar</li>
<li>cglib-2.2.jar</li>
<li>dwr.jar</li>
<li>all jetty modules</li>
</ul>
<p>JavaConfig needs at least one class annotated with @Configuation. Here's mine:</p>
<p><font color="#800090">@Configuration</font><br>
<font color="#800090">@AnnotationDrivenConfig</font><br>
<font color="#800090">@ComponentScan</font>(<font color="#077807">"com.company.app"</font>)<br>
<font color="#912f11"><strong>public</strong></font> <font color="#912f11"><strong>class</strong></font> AppConfig {<br>
<font color="#786000">// no need to list our own beans here </font><br>
<font color="#786000">// since we use autowiring and component scan</font><br>
}</p>
<p>Yeah, the configuation file is pretty empty. In fact, @ComponentScan tells Spring to search for classes annotated with @Component (or several other stereotypes: @Controller, @Service, etc. See Spring doc for details) under "com.company.app" base package, and automatically inject all the dependencies labeled @Autowired. For example:</p>
<p><font color="#800090">@Controller</font><br>
<font color="#800090">@RemoteProxy</font>(<br>
creator = SpringCreator.<font color="#912f11"><strong>class</strong></font>,<br>
creatorParams =<br>
{<br>
<font color="#800090">@Param</font>(name = <font color="#077807">"beanName"</font>, value = <font color="#077807">"UIController"</font>),<br>
<font color="#786000">// this is needed due to a DWR bug</font><br>
<font color="#800090">@Param</font>(name = <font color="#077807">"javascript"</font>, value = <font color="#077807">"UIController"</font>)<br>
},<br>
name = <font color="#077807">"UIController"</font>)<br>
<font color="#912f11"><strong>public</strong></font> <font color="#912f11"><strong>class</strong></font> UIController {<br>
<font color="#800090">@Autowired</font><br>
<font color="#912f11"><strong>private</strong></font> BackEnd backEnd;<br>
<font color="#800090">@Autowired</font><br>
<font color="#912f11"><strong>private</strong></font> QueryProcessor queryProcessor;</p>
<p><font color="#786000">// other stuff here </font><br>
}</p>
<p>Both backEnd and queryProcessor will be automatically instantiated and injected here. This is really cool! What a time saver! Oh, don't forget to write setter for these private members. And the @RemoteProxy annotation is for DWR. More later.</p>
<p><strong>Jetty</strong></p>
<p>Now we can start our Web server this way too, without the damned web.xml and all that. Basically, we will embody a Jetty server in our Java application. Why Jetty? It's small, fast and flexible. I created a class to wrap it up and also created two servlets for it. One serves regular files, another handles ajax request using DWR. </p>
<p><font color="#800090">@Component</font><br>
<font color="#912f11"><strong>public</strong></font> <font color="#912f11"><strong>class</strong></font> UIServer {<br>
<font color="#912f11"><strong>public</strong></font> <font color="#912f11"><strong>static</strong></font> <font color="#912f11"><strong>final</strong></font> File HTML_FILE_DIR = <font color="#1f3f81"><strong>new</strong></font> File(<font color="#077807">"../Web"</font>);<br>
<font color="#912f11"><strong>private</strong></font> <font color="#912f11"><strong>int</strong></font> port = <font color="#077807">80</font>;<br>
<font color="#912f11"><strong>private</strong></font> Server jettyServer; </p>
<p><font color="#912f11"><strong>public</strong></font> <font color="#912f11"><strong>void</strong></font> start() {<br>
<font color="#1f3f81"><strong>try</strong></font> {<br>
<font color="#786000">// Create an instance of Jetty Web server</font><br>
jettyServer = <font color="#1f3f81"><strong>new</strong></font> Server(port);<br>
ContextHandlerCollection contexts = <font color="#1f3f81"><strong>new</strong></font> ContextHandlerCollection();<br>
jettyServer.setHandler(contexts);</p>
<p><font color="#786000">// this servlet serves static files</font><br>
ServletContextHandler ctxDocs=<br>
<font color="#1f3f81"><strong>new</strong></font> ServletContextHandler(contexts, <font color="#077807">"/"</font>, ServletContextHandler.SESSIONS);<br>
ctxDocs.setResourceBase(HTML_FILE_DIR.toString());<br>
ServletHolder ctxDocHolder= <font color="#1f3f81"><strong>new</strong></font> ServletHolder();<br>
ctxDocHolder.setInitParameter(<font color="#077807">"dirAllowed"</font>, <font color="#077807">"false"</font>);<br>
ctxDocHolder.setServlet(<font color="#1f3f81"><strong>new</strong></font> DefaultServlet());<br>
ctxDocs.addServlet(ctxDocHolder, <font color="#077807">"/*"</font>);</p>
<p><font color="#786000">// this DWR servlet handles UI requests</font><br>
ServletContextHandler ctxUI =<br>
<font color="#1f3f81"><strong>new</strong></font> ServletContextHandler(contexts, <font color="#077807">"/ui"</font>, ServletContextHandler.SESSIONS );<br>
ServletHolder ctxUIHolder= <font color="#1f3f81"><strong>new</strong></font> ServletHolder();<br>
ctxUIHolder.setInitParameter(<font color="#077807">"debug"</font>, <font color="#077807">"true"</font>);<br>
ctxUIHolder.setInitParameter(<font color="#077807">"jsonpEnabled"</font>, <font color="#077807">"true"</font>);<br>
ctxUIHolder.setInitParameter(<font color="#077807">"crossDomainSessionSecurity"</font>, <font color="#077807">"false"</font>);</p>
<p><font color="#786000">// Specify the classes (comma delimited fully qualified class names)</font><br>
<font color="#786000">// to be exposed to Web browser</font><br>
ctxUIHolder.setInitParameter(<font color="#077807">"classes"</font>, <font color="#077807">"com.company.app.UIController"</font>);<br>
ctxUIHolder.setServlet(<font color="#1f3f81"><strong>new</strong></font> DwrServlet());</p>
<p>ctxUI.addServlet(ctxUIHolder, <font color="#077807">"/*"</font>);<br>
contexts.setHandlers(<font color="#1f3f81"><strong>new</strong></font> Handler[]{ctxUI, ctxDocs});</p>
<p>jettyServer.start();<br>
jettyServer.join();</p>
<p>} <font color="#1f3f81"><strong>catch</strong></font> (Exception e) {<br>
e.printStackTrace();<br>
}<br>
}</p>
<p>We now need to bootstrap our application with JavaConfig by creating an application context. </p>
<p><font color="#912f11"><strong>public</strong></font> <font color="#912f11"><strong>class</strong></font> App {</p>
<p><font color="#912f11"><strong>public</strong></font> <font color="#912f11"><strong>static</strong></font> <font color="#912f11"><strong>void</strong></font> main(String[] args) <font color="#912f11"><strong>throws</strong></font> Exception {<br>
JavaConfigApplicationContext ctx =<br>
<font color="#1f3f81"><strong>new</strong></font> JavaConfigApplicationContext(MidasConfig.<font color="#912f11"><strong>class</strong></font>);</p>
<p><font color="#786000">// so DWR knows where to find classes</font><br>
SpringCreator.setOverrideBeanFactory(ctx);</p>
<p>UIServer uiServer = ctx.getBean(UIServer.<font color="#912f11"><strong>class</strong></font>);<br>
uiServer.start();<br>
}<br>
}</p>
<p><strong>DWR</strong></p>
<p>DWR allows javascript on browser to directly call Java methods on server. It's like a RPC thing, which is pretty convenient. It's my favirate ajax communication layer. Notice we have already covered most of the configurations needed for DWR in the code fragments above. Here's some explanations. The @RemoteProxy annotation basically says that "expose this class to javascript". Within such classes, @RemoteMethod annotation makes annotated methods visible for javascript to call. More details please see DWR documentation. In addition to such annotations, we did two tricks here to make DWR configuration completely devoid of any xml files. First we passed DWR some configurations through jetty's servletholder. Second, we used SpringCreator of DWR, which basically ask Spring for objects. </p>
<p>Well, it took me lots of googling to put this together. Hope it would be useful for someone.</p>Tails & No Tales Cat Show2009-01-04T07:37:00-08:002009-01-04T07:37:00-08:00Yunyaotag:yyhh.org,2009-01-04:/blog/2009/01/tails-no-tales-cat-show<p>This is the first time we have even been to a cat show. We have enjoyed it a lot!</p>
<p>The show cats are all very tidy and cute. Too bad that spectaculors like me cannot touch or pet any of them. :(</p>
<p>But I still love my kitties adopted from shelter …</p><p>This is the first time we have even been to a cat show. We have enjoyed it a lot!</p>
<p>The show cats are all very tidy and cute. Too bad that spectaculors like me cannot touch or pet any of them. :(</p>
<p>But I still love my kitties adopted from shelter the most. :) Even though they could not come to the show (well, even if they were allowed to, I really doubt that they would enjoy it), they liked the peacock feather we bought for them very much.</p>
<p>Here are some photos taken today.</p>
<p><img src="https://farm4.static.flickr.com/3120/3164888505_a44e7cfcc0.jpg?v=0" width="500" height="333" /></p>
<p><img src="https://farm2.static.flickr.com/1195/3164932121_0edaac41b2.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3281/3164890249_d0c1ef9d7d.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3264/3165731044_78cf62f37c.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3108/3164897565_457fa6f4b9.jpg?v=1231054710" width="333" height="500" /><img src="https://farm2.static.flickr.com/1066/3164894431_30c251d800.jpg?v=0" width="500" height="333" /><img src="https://farm2.static.flickr.com/1225/3165746230_14fa975341.jpg?v=0" width="500" height="333" /><img src="https://farm2.static.flickr.com/1056/3164909929_b2b1223f30.jpg?v=1231054910" width="353" height="500" /><img src="https://farm2.static.flickr.com/1175/3165754608_98b67aec47.jpg?v=0" width="500" height="333" /><img src="https://farm2.static.flickr.com/1125/3164922681_d44f474e06.jpg?v=1231055103" width="500" height="384" /><img src="https://farm4.static.flickr.com/3120/3164929073_a3825263cc.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3100/3164945823_cbd01a180d.jpg?v=0" width="333" height="500" /><img src="https://farm4.static.flickr.com/3263/3165766746_fba6244090.jpg?v=0" width="500" height="333" /><img src="https://farm2.static.flickr.com/1168/3164943517_00d3b6d1c2.jpg?v=0" width="500" height="333" /><img src="https://farm2.static.flickr.com/1032/3165785772_7989bb28b3.jpg?v=0" width="500" height="333" /><img src="https://farm2.static.flickr.com/1121/3165776280_8539898e57.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3260/3165798306_1fbdef3bb9.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3116/3164973051_3b5076be0c.jpg?v=0" width="500" height="333" /></p>
<p>A cat looks like Yoda. </p>
<p><img src="https://farm4.static.flickr.com/3268/3165795356_515bbb4c05.jpg?v=0" width="333" height="500" /><img src="https://farm2.static.flickr.com/1167/3164968367_0d08196003.jpg?v=0" width="333" height="500" /></p>
<p>Notice the curly fur.</p>
<p><img src="https://farm4.static.flickr.com/3080/3165792936_a19eba0f29.jpg?v=0" width="500" height="333" /></p>
<p>Notice the tail</p>
<p><img src="https://farm4.static.flickr.com/3268/3164984665_1cde9812b8.jpg?v=1231055626" width="500" height="317" /><img src="https://farm2.static.flickr.com/1079/3164980739_076647982c.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3083/3165805668_a040bc3f6d.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3261/3164976629_0c1205b9a5.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3260/3164973769_cea79b0d7b.jpg?v=0" width="500" height="333" /><img src="https://farm2.static.flickr.com/1115/3165829874_f221546b73.jpg?v=0" width="333" height="500" /><img src="https://farm2.static.flickr.com/1143/3165823066_ba45111db3.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3098/3164992937_f0988ac34d.jpg?v=0" width="500" height="333" /></p>
<p><img src="https://farm4.static.flickr.com/3123/3165816478_300b1acf4d.jpg?v=0" width="500" height="333" /></p>
<p>The cat loved the feather so much that he jumped out of the stage to get it.</p>
<p><img src="https://farm4.static.flickr.com/3121/3165009151_9db7a9f636.jpg?v=0" width="500" height="333" /></p>
<p>Cas without fur is not my cup of tea, but she seems to be very sweet.</p>
<p><img src="https://farm4.static.flickr.com/3088/3165857382_deeefcf20c.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3087/3165055789_e5f145955e.jpg?v=0" width="500" height="333" /><img src="https://farm2.static.flickr.com/1077/3165033033_dbf544163c.jpg?v=0" width="333" height="500" /></p>
<p>Want a hug ...</p>
<p><img src="https://farm4.static.flickr.com/3095/3165863060_425e2cc612.jpg?v=0" width="500" height="333" /></p>
<p>A beautiful red cat. </p>
<p><img src="https://farm4.static.flickr.com/3076/3165854316_cf59503a37.jpg?v=0" width="333" height="500" /><img src="https://farm2.static.flickr.com/1117/3165853528_31a2ef36cb.jpg?v=1231056188" width="333" height="500" /><img src="https://farm4.static.flickr.com/3104/3165850218_28cf92ce07.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3100/3165849408_33f1ef3ab3.jpg?v=0" width="500" height="333" /><img src="https://farm2.static.flickr.com/1051/3165846802_33f832a2af.jpg?v=0" width="500" height="333" /><img src="https://farm2.static.flickr.com/1047/3165872228_cf2d7ed757.jpg?v=0" width="333" height="500" /><img src="https://farm4.static.flickr.com/3119/3165037747_6bcf7c1af2.jpg?v=0" width="500" height="333" /></p>
<p>Curly ears</p>
<p><img src="https://farm2.static.flickr.com/1221/3165053557_8d777a0aca.jpg?v=0" width="500" height="333" /></p>
<p>A sleeping beauty</p>
<p><img src="https://farm2.static.flickr.com/1393/3165052625_86c7a44a22.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3091/3165877550_6ab8769b17.jpg?v=0" width="500" height="333" /></p>
<p>Pose for a picture<img src="https://farm2.static.flickr.com/1061/3165875272_8237856e89.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3087/3165071581_71eabfe1d3.jpg?v=0" width="333" height="500" /><img src="https://farm4.static.flickr.com/3110/3165068585_7f56a98f0f.jpg?v=1231056699" width="500" height="333" /><img src="https://farm2.static.flickr.com/1068/3165065435_308850753b.jpg?v=1231056818" width="500" height="363" /><img src="https://farm2.static.flickr.com/1143/3165888306_58ed47cfab.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3128/3165910776_5b136eae59.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3080/3165902348_d7b0496545.jpg?v=0" width="333" height="500" /><img src="https://farm4.static.flickr.com/3086/3165096625_f951d233db.jpg?v=0" width="333" height="500" /><img src="https://farm4.static.flickr.com/3099/3165092243_47ffd20230.jpg?v=0" width="500" height="333" /></p>
<p><img src="https://farm2.static.flickr.com/1028/3165923206_a5a8633074.jpg?v=0" width="333" height="500" /></p>
<p>Relaxing during the break.</p>
<p><img src="https://farm4.static.flickr.com/3103/3165088515_691d22c52d.jpg?v=1231057189" width="500" height="343" /><img src="https://farm2.static.flickr.com/1010/3165107153_f4dfee19a7.jpg?v=1231057366" width="500" height="342" /><img src="https://farm4.static.flickr.com/3122/3165103143_967b1b21d2.jpg?v=1231057448" width="500" height="298" /><img src="https://farm2.static.flickr.com/1159/3166240364_e478bf0bdf.jpg?v=0" width="444" height="500" /><img src="https://farm2.static.flickr.com/1137/3165118099_5bf71accfa.jpg?v=1231057698" width="466" height="500" /><img src="https://farm4.static.flickr.com/3112/3165116167_1c5d3a9896.jpg?v=0" width="500" height="333" /><img src="https://farm2.static.flickr.com/1192/3165135145_fa7b3c1665.jpg?v=1231053828" width="333" height="500" /><img src="https://farm2.static.flickr.com/1080/3165959034_2b609c2ae1.jpg?v=0" width="500" height="333" /><img src="https://farm2.static.flickr.com/1094/3165955690_721e572615.jpg?v=1231057891" width="500" height="335" /><img src="https://farm2.static.flickr.com/1355/3165977402_bd307145a5.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3196/3165147143_79dabe6838.jpg?v=1231058010" width="333" height="500" /><img src="https://farm4.static.flickr.com/3076/3165965248_ff4d052c3f.jpg?v=1231053967" width="500" height="333" /><img src="https://farm2.static.flickr.com/1020/3165970416_f135124081.jpg?v=0" width="333" height="500" /><img src="https://farm4.static.flickr.com/3107/3165138803_d7ec155d20.jpg?v=1231053650" width="317" height="500" /><img src="https://farm2.static.flickr.com/1133/3165989864_ca7d21550a.jpg?v=1231058246" width="333" height="500" /><img src="https://farm2.static.flickr.com/1107/3165157219_7fce584bf8.jpg?v=1231058361" width="333" height="500" /><img src="https://farm2.static.flickr.com/1166/3165155075_ef2cdf95f3.jpg?v=0" width="500" height="333" /><img src="https://farm2.static.flickr.com/1012/3165436165_89367a2190.jpg?v=0" width="500" height="500" /><img src="https://farm2.static.flickr.com/1028/3166003328_35d52a3dd9.jpg?v=0" width="333" height="500" /><img src="https://farm2.static.flickr.com/1071/3165994844_3c5f2de4fa.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3265/3165163543_c132a15d6d.jpg?v=1231058711" width="500" height="387" /><img src="https://farm4.static.flickr.com/3103/3165185243_3f016cedc9.jpg?v=0" width="333" height="500" /><img src="https://farm2.static.flickr.com/1111/3166010218_3a988e1bc8.jpg?v=0" width="500" height="333" /><img src="https://farm2.static.flickr.com/1119/3166004012_06a06f854b.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3117/3165191133_62f5aea988.jpg?v=0" width="333" height="500" /><img src="https://farm2.static.flickr.com/1247/3165193577_926cb24f07.jpg?v=1231058981" width="333" height="500" /><img src="https://farm2.static.flickr.com/1102/3166027234_55d9aee319.jpg?v=0" width="500" height="333" /><img src="https://farm4.static.flickr.com/3092/3166064328_a529d7c4d2.jpg?v=0" width="333" height="500" /><img src="https://farm4.static.flickr.com/3256/3166063164_0f34595521.jpg?v=0" width="333" height="500" /></p>Seasonal Greetings from the Cats2008-12-31T22:20:00-08:002008-12-31T22:20:00-08:00Yunyaotag:yyhh.org,2008-12-31:/blog/2008/12/seasonal-greetings-from-the-cats<p><img src="https://farm4.static.flickr.com/3235/3136652664_8ff94c4266.jpg?v=0" width="500" height="333" /></p>
<p>Tom is waiting for Santa ...</p>
<p><img src="https://farm4.static.flickr.com/3294/3135823833_f42943d49a.jpg?v=0" width="333" height="500" /></p>
<p>Mayori want to be Santa's little helper ...</p>Thanksgiving Dinner2008-12-06T18:02:00-08:002008-12-06T18:02:00-08:00Yunyaotag:yyhh.org,2008-12-06:/blog/2008/12/thanksgiving-dinner<p>I have been waiting to try the Tofurkey for a few weeks ever since I saw the ad from Trader Joe about it. So I finally tried out on Thanksgiving.</p>
<p>This is what Tofurkey looks like out of the box. Then I cooked it in the oven. It tastes better …</p><p>I have been waiting to try the Tofurkey for a few weeks ever since I saw the ad from Trader Joe about it. So I finally tried out on Thanksgiving.</p>
<p>This is what Tofurkey looks like out of the box. Then I cooked it in the oven. It tastes better than I expected, but a little too much for two people.</p>
<p><img src="https://farm4.static.flickr.com/3090/3086604265_39fd710dac.jpg?v=0" width="500" height="333" /></p>Wedding Gift from Huahai's Mom2008-11-14T03:57:00-08:002008-11-14T03:57:00-08:00Yunyaotag:yyhh.org,2008-11-14:/blog/2008/11/wedding-gift-from-huahais-mom<p><img src="https://farm4.static.flickr.com/3139/3028284061_29fe78f4bd.jpg?v=0" width="230" height="235" /></p>
<p>Finally, after our trip to China this year, we got our wedding gifts from Huahai's parents --- a special Olympic umbrella. 😛</p>Winking Tom & Superman2008-06-15T06:37:00-07:002008-06-15T06:37:00-07:00Yunyaotag:yyhh.org,2008-06-15:/blog/2008/06/winking-tom-superman<p><img src="https://farm4.static.flickr.com/3003/2579895048_acecea6edc.jpg?v=0" width="500" height="333" /></p>
<p><img src="https://i.pinimg.com/236x/83/d6/27/83d627ecca8b358f383fb2c8acc64f9b--real-superman-superman-stuff.jpg" width="308" height="391" /> </p>"Finding happiness: a cat's story"2008-06-06T20:56:00-07:002008-06-06T20:56:00-07:00Yunyaotag:yyhh.org,2008-06-06:/blog/2008/06/finding-happiness-a-cats-story<p>Long long time ago, there's a prince named Thomas. He's a handsome boy, but often sad, because he's parents passed away when he's very young.</p>
<p>很久很久以前,有一个年轻英俊的王子叫作唐唐。他名如其人 …</p><p>Long long time ago, there's a prince named Thomas. He's a handsome boy, but often sad, because he's parents passed away when he's very young.</p>
<p>很久很久以前,有一个年轻英俊的王子叫作唐唐。他名如其人,长得仪表唐唐。可是因为从小就父母双亡的缘故,他的心里总是充满了淡淡的忧伤。</p>
<p><img src="https://farm4.static.flickr.com/3047/2555910847_1502df458c.jpg?v=0" width="500" height="333" /></p>
<p>One day, Thomas prays to Godess Felines: dear goddess, I have been good all these years. Please give me something that will bring me happiness.</p>
<p>终于有一天,唐唐王子鼓起勇气向猫神巴思特祈祷道:"亲爱的巴思特女神,这么多年以来我一直都努力做一个合格的猫王子,可是我并不快乐。您可以用您的魔力赐与我快乐吗?</p>
<p><img src="https://farm3.static.flickr.com/2131/2270170498_f02511ca36.jpg?v=0" width="500" height="333" /></p>
<p>Goddess Felines says: I know you are a good boy, but happiness is not something handed out by gods. You have to find your own happiness.</p>
<p>Where can I find my happiness, asks Thomas?</p>
<p>Search in the basket of life, you will find it, answered Godess Felines.</p>
<p>巴思特女神说"唐唐,我知道你是一个好孩子。可是幸福不是神仙可以赐与的。你必须自己寻找到幸福。"</p>
<p>"那么我在哪里可以找到幸福呢?"唐唐急切的问道。</p>
<p>"它在生命的篮子里"巴思特女神回答道。</p>
<p><img src="https://farm4.static.flickr.com/3120/2556740896_67367c8638.jpg?v=1213488675" width="500" height="324" /></p>
<p>Basket of life? Thomas is puzzled: "I have a basket, all my toys are in it. Is that basket of life?". Godess Felines smiles and leaves. Disappointed, Thomas goes to his basket, and takes out his favirate toy, a green shining ball.</p>
<p>"生命的篮子?"唐唐困惑的问道。"我倒确实有一个篮子,里面放满了我的玩具。那个是生命的篮子吗?"</p>
<p>可是巴思特女神什么也没说便微笑着消失掉了。</p>
<p>唐唐很失望的走到玩具篮子之前,取出平时最心爱的闪光的小绿球。</p>
<p><img src="https://farm4.static.flickr.com/3150/2556741086_d95e63c69e.jpg?v=1213488474" width="500" height="356" /></p>
<p>Thomas carries the shining ball to play ground.</p>
<p>唐唐叼着闪光的小绿球来到游乐场。</p>
<p><img src="https://farm4.static.flickr.com/3009/2556741242_07dd071e21.jpg?v=1213488876" width="334" height="500" /></p>
<p>Thomas plays with the shining ball upside down.</p>
<p>他把小球抛到半空中然后接住。</p>
<p><img src="https://farm4.static.flickr.com/3036/2555914171_091f86e3e2.jpg?v=1213489000" width="500" height="344" /></p>
<p>He plays the ball downside up.</p>
<p>接着再前空翻后滚翻。</p>
<p><img src="https://farm4.static.flickr.com/3088/2555913725_990341c23b.jpg?v=0" width="500" height="334" /></p>
<p>Thomas spins with the ball.</p>
<p>唐唐抱着小球翻滚得越来越快,最后只见他灰色的影子在快速地移动。</p>
<p><img src="https://farm4.static.flickr.com/3177/2556739252_8728798092.jpg?v=0" width="500" height="334" /></p>
<p>Thomas is tired, but is still not happy.</p>
<p>玩了很久以后,唐唐觉得有些累了,可是却没有觉得开心。</p>
<p><img src="https://farm4.static.flickr.com/3169/2555913101_1cf2337503.jpg?v=0" width="500" height="334" /></p>
<p>Unbekown to Thomas, a wild wild cat is watching him in the shadow all the time.</p>
<p>但唐唐却万万没有想到,就在他玩耍的时候,不远的地方有一双蓝色的眼睛一直在暗地里观察着他的一举一动。</p>
<p><img src="https://farm3.static.flickr.com/2171/2555909537_38a4f2139e.jpg?v=0" width="500" height="333" /></p>
<p>Seeing Thomas is tired and unable to defend himself, the wild cat rushs out of thedarkness, and goes for the shinning ball!</p>
<p><img src="https://farm4.static.flickr.com/3271/2555913339_3ec7dcce3b.jpg?v=0" width="500" height="334" /></p>
<p><img src="https://farm4.static.flickr.com/3274/2556734506_c2fb6b7964.jpg?v=0" width="500" height="333" /><img src="https://farm3.static.flickr.com/2072/2579857814_dc73799608.jpg?v=0" width="333" height="500" /><img src="https://farm4.static.flickr.com/3115/2579855222_88e0a1a9a9.jpg?v=0" width="333" height="500" /><img src="https://farm4.static.flickr.com/3087/2556738650_3b90d004da.jpg?v=0" width="333" height="500" /><img src="https://farm4.static.flickr.com/3001/2579821378_fe5b17f4b7.jpg?v=0" width="333" height="500" /></p>Kitty Singing a Birdy Song2008-06-03T23:42:00-07:002008-06-03T23:42:00-07:00Yunyaotag:yyhh.org,2008-06-03:/blog/2008/06/kitty-singing-a-birdy-song<p>偶家的娇娇爱唱歌</p>
<iframe frameborder="0" height="350" src="https://www.youtube.com/embed/cMHzCMtk4PE" width="425"></iframe>How to save millions per year for your newspaper?2008-04-20T07:45:00-07:002008-04-20T07:45:00-07:00Yunyaotag:yyhh.org,2008-04-20:/blog/2008/04/how-to-save-millions-per-year-for-your-newspaper<p>Dear CEO of XXX News:</p>
<p>I am writing in regard to an automatic news article writer (NAW) that can ** **save your company millions of dolloar per year (see appendix below for peudo code). The basic idea of NAW is to be able to automatically generate news articles with comparable quality …</p><p>Dear CEO of XXX News:</p>
<p>I am writing in regard to an automatic news article writer (NAW) that can ** **save your company millions of dolloar per year (see appendix below for peudo code). The basic idea of NAW is to be able to automatically generate news articles with comparable quality to news articles written by actual human reporters by your company.</p>
<p>As a proof of concept, I have conducted a comprehensive comparison study. The results show that on issues with regard to Olympic Torch Relay 2008, the similarity of the automatically generated news articles and those manually written by human reporters is higher than 99%, making them undistinguishable by any of your valuable readers. With a click of a button, you can generate news articles using NAW at your wish anytime anywhere. More importantly, your readers will not realize the differences.</p>
<p>Since issues with regard to the Olymipic Torch Relay 2008 refect most if not all the issues about China, the above result safely indicates that NAW can be used to replace your news reporters on any issues with regard to China, thus allowing them to concentrate on more important issues such as Iraq, human right issues in US inner cities, independent requests from Hawaii, Porto Rico and Alaska, and so on.</p>
<p>Assume that your news paper needs one report with regard to China about every other day. That is about 180 news articles each year. Assume the cost of writing each news articles, including transportation, lodging, meals, salary for your news reporter and his/her crew members, is merely $8000. By investing on this software, with a fix cost of $500 and no operating cost (since it can work on any of the existing computers of your company), you can save nearly $1.5 millions per year from now on!</p>
<p>More importantly, with a little more input from human reporters, NAW can be adopted to report issues on many other countries. That is again over millions of saving each year!</p>
<p>Thank you very much for your time. Please do let me know should you have any questions. I am looking forward to discuss you next steps.</p>
<p>Best regards,</p>
<p>an inventor</p>
<hr>
<p>Appendix:</p>
<div class="highlight"><pre><span></span><code><span class="k">Input</span><span class="err">:</span><span class="w"> </span>
<span class="err">$</span><span class="nl">event</span><span class="p">:</span><span class="w"> </span><span class="n">event</span><span class="w"> </span><span class="n">name</span>
<span class="err">$</span><span class="nl">location</span><span class="p">:</span><span class="w"> </span><span class="n">event</span><span class="w"> </span><span class="n">location</span>
<span class="err">$</span><span class="nc">date</span><span class="err">:</span><span class="w"> </span><span class="n">event</span><span class="w"> </span><span class="nc">date</span>
<span class="w"> </span>
<span class="k">Output</span><span class="err">:</span><span class="w"> </span>
<span class="err">$</span><span class="nl">news</span><span class="p">:</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">article</span>
<span class="w"> </span>
<span class="k">Function</span><span class="err">:</span>
<span class="n">NewsArticleWriter</span><span class="w"> </span><span class="p">(</span><span class="n">event</span><span class="p">,</span><span class="w"> </span><span class="n">location</span><span class="p">,</span><span class="w"> </span><span class="nc">date</span><span class="p">)</span>
<span class="w"> </span><span class="k">Begin</span><span class="err">:</span>
<span class="w"> </span><span class="n">Let</span><span class="w"> </span><span class="err">$</span><span class="n">numProtester</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">random</span><span class="w"> </span><span class="n">number</span><span class="w"> </span><span class="ow">between</span><span class="w"> </span><span class="mi">3000</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="mi">10000</span>
<span class="w"> </span><span class="n">Let</span><span class="w"> </span><span class="err">$</span><span class="n">numSupporter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">numProester</span><span class="o">/</span><span class="mi">10</span>
<span class="w"> </span><span class="n">Let</span><span class="w"> </span><span class="err">$</span><span class="n">issues</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">{</span><span class="ss">"Tibet"</span><span class="p">,</span><span class="w"> </span><span class="ss">"FLG"</span><span class="p">,</span><span class="w"> </span><span class="ss">"AgainstChinaMade"</span><span class="p">,</span><span class="w"> </span><span class="ss">"HumanRightIssues"</span><span class="p">,</span><span class="w"> </span><span class="ss">"Free $ProvinceName"</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="n">AnyOtherCurrentHotIssue</span><span class="err">}</span>
<span class="w"> </span><span class="n">Let</span><span class="w"> </span><span class="err">$</span><span class="n">typesProtesters</span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">random</span><span class="w"> </span><span class="n">subset</span><span class="w"> </span><span class="k">from</span><span class="w"> </span>
<span class="w"> </span><span class="n">Let</span><span class="w"> </span><span class="err">$</span><span class="n">typesSupporters</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">{</span><span class="n">aggressive</span><span class="w"> </span><span class="n">males</span><span class="w"> </span><span class="n">bused</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="n">paid</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">Chinese</span><span class="w"> </span><span class="n">consolate</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">Pro</span><span class="o">-</span><span class="n">China</span><span class="w"> </span><span class="n">organization</span><span class="err">}</span>
<span class="w"> </span><span class="n">Let</span><span class="w"> </span><span class="err">$</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">random</span><span class="w"> </span><span class="n">popular</span><span class="w"> </span><span class="n">Chinese</span><span class="w"> </span><span class="n">name</span>
<span class="w"> </span><span class="n">Let</span><span class="w"> </span><span class="err">$</span><span class="n">locations</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">an</span><span class="w"> </span><span class="k">array</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="n">nearby</span><span class="w"> </span><span class="n">locations</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="err">$</span><span class="n">location</span>
<span class="w"> </span><span class="n">news</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="k">Write</span><span class="p">(</span><span class="n">event</span><span class="p">,</span><span class="w"> </span><span class="n">location</span><span class="p">,</span><span class="w"> </span><span class="nc">date</span><span class="p">)</span>
<span class="w"> </span><span class="n">news</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="k">Write</span><span class="p">(</span><span class="n">event</span><span class="p">,</span><span class="w"> </span><span class="n">typesProtesters</span><span class="p">)</span>
<span class="w"> </span><span class="n">news</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="k">Write</span><span class="p">(</span><span class="n">numProtester</span><span class="p">,</span><span class="w"> </span><span class="n">numSupporter</span><span class="p">)</span>
<span class="w"> </span><span class="o">//</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">function</span><span class="w"> </span><span class="n">writing</span><span class="w"> </span><span class="n">elaborated</span><span class="w"> </span><span class="n">version</span><span class="w"> </span><span class="k">on</span><span class="w"> </span>
<span class="w"> </span><span class="o">//</span><span class="w"> </span><span class="n">predefined</span><span class="w"> </span><span class="n">topics</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">each</span><span class="w"> </span><span class="n">types</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="n">protesters</span>
<span class="w"> </span><span class="n">news</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">WriteMore</span><span class="p">(</span><span class="n">typesProtesters</span><span class="p">)</span><span class="w"> </span>
<span class="w"> </span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="err">$</span><span class="n">i</span><span class="w"> </span><span class="ow">between</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="n">lengthOf</span><span class="p">(</span><span class="err">$</span><span class="n">locations</span><span class="p">)</span>
<span class="w"> </span><span class="n">news</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="k">Write</span><span class="p">(</span><span class="err">$</span><span class="n">location</span><span class="o">[</span><span class="n">i</span><span class="o">]</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="n">typesProtesters</span><span class="p">)</span>
<span class="w"> </span><span class="n">news</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="k">Write</span><span class="p">(</span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">typesSupporters</span><span class="p">)</span>
<span class="w"> </span><span class="k">End</span>
</code></pre></div>Suspending to RAM on Debian laptop2008-04-17T23:39:00-07:002008-04-17T23:39:00-07:00Huahaitag:yyhh.org,2008-04-17:/blog/2008/04/suspending-to-ram-on-debian-laptop<p>I am tracking Debian sid on my Thinkpad laptop, a few months ago it started to use <em>pm-utils</em> and broke suspending to RAM (sleep) functionality. Basically, the machine would go to sleep then immediately resume.<br>
It turned out that this problem can be easily fixed by creating a file <em>/etc …</em></p><p>I am tracking Debian sid on my Thinkpad laptop, a few months ago it started to use <em>pm-utils</em> and broke suspending to RAM (sleep) functionality. Basically, the machine would go to sleep then immediately resume.<br>
It turned out that this problem can be easily fixed by creating a file <em>/etc/pm/config.d/local</em>, and put in a line</p>
<p>SUSPEND_MODULES="e1000"</p>
<p>The reason is that <em>pm-utils</em> by default does not unload Ethernet card module <em>e1000</em>, so the machine would be waken up by Ethernet card activities.</p>YouTube censors BBC's documentary in USA2008-03-10T15:15:00-07:002008-03-10T15:15:00-07:00Huahaitag:yyhh.org,2008-03-10:/blog/2008/03/youtube-censors-bbcs-documentary-in-usa<p>BBC is broadcasting a documentary series titled "A year in Tibet". From <a href="https://www.bbc.co.uk/bbcfour/listings/programme.shtml?day=today&filename=20080306/20080306_2100_4544_2145_60&service_id=4544">the program description on BBC Web site,</a> this documentary shows the real life today in Tibet. The first segment was shown on Mar. 6. Not surprisingly, there is a Youtube video of this first show. Surprisingly, if you …</p><p>BBC is broadcasting a documentary series titled "A year in Tibet". From <a href="https://www.bbc.co.uk/bbcfour/listings/programme.shtml?day=today&filename=20080306/20080306_2100_4544_2145_60&service_id=4544">the program description on BBC Web site,</a> this documentary shows the real life today in Tibet. The first segment was shown on Mar. 6. Not surprisingly, there is a Youtube video of this first show. Surprisingly, if you attempt to access this video in US, Youtube says <a href="https://youtube.com/?v=HZ98sP2GSCE">"This video is not available in your country."</a> Interestingly, people in UK have confirmed that this video is accessible in UK!</p>
<p>Obviously, this block of access could not have been requested by BBC on the basis of copyright violation. Or how could you explain the availability of the video on Youtube for UK visitors? One can only speculate on who is behind this blockage. The Free Tibet people? What are they afraid of? Shouldn't showing the reality of Tibet today further their cause? The Chinese government? Since when Youtube is afraid of Chinese government? If Youtube is afraid of them, how to explain the abundant Free Tibet videos on Youtube?</p>
<p>One thing is clear, people in US are now proved to be actively and specifically targeted for information blockage. I thought only China has the Great Firewall. Where's the outrage?</p>
<p>Update 03/12/2008: if you are looking for confirmation, check out the <a href="https://digg.com/political_opinion/Youtube_censors_BBC_s_documentary_in_US">comments on digg</a></p>
<p>Update 03/17/2008: some people point out that it is BBC's policy to not allow access to their video outside UK. One comment on Slashdot pointed out that the video is blocked in Netherland as well. If these are true, my speculation could be wrong.</p>
<p>However, it is rather depressing to see that some of the comments to my post display an unabated bias and contempt towards people of my heritage. For example, the comment below accusing me of justifying totalitarianism is so unwarranted to the point of absurdity, especially considering that some of my posts here would be considered subversive to party rule. </p>
<p><a href="https://yro.slashdot.org/comments.pl?sid=489386&cid=22771430">Another comment on Slashdot</a> put it in plain words: <em>Identifying yourself as Han Chinese has already shown how biased you are so no more needs to be said.</em> I simply cannot understand the reasoning behind this statement. Why would identifying one's own ethnic identity automatically disqualify one from being listened to? I hope this is another cultural gap that I have yet to overcome, is it? Can any one enlighten me a bit on this? Anyway, I hope these people are not representative of the general population here in the West.</p>an interesting birthday gift2008-03-02T22:34:00-08:002008-03-02T22:34:00-08:00Huahaitag:yyhh.org,2008-03-02:/blog/2008/03/an-interesting-birthday-gift<p><img alt="gift" src="https://farm4.static.flickr.com/3269/2305955534_80d0caf8e5.jpg?v=0"></p>
<p>Huahai has received his birthday gift from Yunyao, a few days early.</p>
<p>What's inside?</p>
<p><img src="https://farm4.static.flickr.com/3171/2305157953_2633a3fed6.jpg?v=0" width="500" height="375" /></p>
<p>Wow, a scenic flight certificate, what a lovely gift! Thank you, babe.</p>A nice political commercial is for girls everywhere.2008-02-17T23:22:00-08:002008-02-17T23:22:00-08:00Yunyaotag:yyhh.org,2008-02-17:/blog/2008/02/a-nice-political-commercial-is-for-girls-everywhere<p><a href="https://www.youtube.com/watch?v=l9z-Aatd0wA">https://www.youtube.com/watch?v=l9z-Aatd0wA</a></p>
<p>Girls need role models like Hilary Clinton, not fancy dressed Hollywood teenagers stars (not all of them are that bad; but you know what I mean).</p>Create Multiple Modules Maven Project in Eclipse2008-02-14T04:49:00-08:002008-02-14T04:49:00-08:00Huahaitag:yyhh.org,2008-02-14:/blog/2008/02/create-multiple-modules-maven-project-in-eclipse<p>Modularized software system design is often a good idea. Maven is the new software build system that is purported to be better than ant. For my new project, I want to create a maven build consisting of multiple modules. To do this, and let Eclipse treats these modules as parts …</p><p>Modularized software system design is often a good idea. Maven is the new software build system that is purported to be better than ant. For my new project, I want to create a maven build consisting of multiple modules. To do this, and let Eclipse treats these modules as parts of a single Eclipse project, I used the following procedure.</p>
<p>First create the top level maven project, which will be the container of the modules. Our top level maven project is called "cool".</p>
<p><code>mvn archetype:create -DgroupId=org.yyhh -DartifactId=cool -Dversion=0.0.1-SNAPSHOT</code></p>
<p>By default, newly created maven projects has "jar" packaging type, so it cannot have sub-modules. To let our <em>cool</em> project become a container project, we need to edit its <em>pom.xml</em>, changing "jar" to "pom" for the " packaging " tag. Also, the <em>src</em> folder just created by maven is not necessary, and can be deleted.</p>
<p>Now we are ready to create module projects with maven. Change current directory (cd) to the newly created "cool" directory. For each module desired, create a maven project</p>
<p><code>mvn archetype:create -DgroupId=org.yyhh.cool.module-name -DartifactId=module-name -Dversion=0.0.1-SNAPSHOT</code></p>
<p>Maven is smart enough to figure out that these new projects are actually modules of the <em>cool</em> project, and will do appropriate modifications on all of the <em>pom.xml</em> files automatically.</p>
<p>Now we need to let Eclipse know about these maven project. Issue</p>
<p><code>mvn eclipse:eclipse</code></p>
<p>Finally, launch Eclipse, and create a generic project that uses <em>cool</em> directory as the project directory, and mission accomplished!</p>
<p>P.S. To install third-party jars in local maven repository, use </p>
<p><code>mvn install:install-file -Dfile= -DgroupId= \ -DartifactId= -Dversion= -Dpackaging=</code></p>
<p>P.P.S. For some reason my default central maven repository is not very up-to-date, I have to rsync what I want manually from an up-to-date mirror. For example, I had to do this to get the latest batik library. </p>
<p><code>cd ~/.m2/repository/org/apache rsync -v -t -l -r mirrors.ibiblio.org::pub/mirrors/maven2/org/apache/xmlgraphics .</code></p>Chrismas Vacation --- Mexico Riviera Cruise (Draft)2008-02-10T03:42:00-08:002008-02-10T03:42:00-08:00Yunyaotag:yyhh.org,2008-02-10:/blog/2008/02/chrismas-vacation-mexico-riviera-cruise-draft<p>Place Holder for now.</p>
<p>Day1:</p>
<p>12/16/2007</p>
<p>Lunch with Junwen</p>
<p>Boarding at San Diego Port</p>
<p>Drill</p>
<p>First Dinner</p>
<p>Debarkation Celebration</p>
<p>Raffle at many places (of course we did not win any of them)</p>
<p>12/17/2007</p>
<p>Men's golf tournament (27 vs. 25)</p>
<p>Table tennis</p>
<p>Hairy Chest Contest</p>
<p>First Formal …</p><p>Place Holder for now.</p>
<p>Day1:</p>
<p>12/16/2007</p>
<p>Lunch with Junwen</p>
<p>Boarding at San Diego Port</p>
<p>Drill</p>
<p>First Dinner</p>
<p>Debarkation Celebration</p>
<p>Raffle at many places (of course we did not win any of them)</p>
<p>12/17/2007</p>
<p>Men's golf tournament (27 vs. 25)</p>
<p>Table tennis</p>
<p>Hairy Chest Contest</p>
<p>First Formal Night</p>
<p>Photo</p>
<p>Choose Shore Excuirsion</p>
<p>Dance</p>
<p>12/18/2007</p>
<p>Women's golf tournament (28 vs. 20)</p>
<p>Shore Excuirsion workshop</p>
<p>70's disco</p>
<p>Dinner at Super Club</p>
<p>Dance Club</p>
<p>12/19/2007</p>
<p>Acalpulco: Cliff Divers & Coyoca Lagoon Tour (a water dog and people learning water ski, Sunset beach)</p>
<p>12/20/2007</p>
<p>Zihuatanejo/Ixtapa</p>Java time resolution2008-02-09T20:21:00-08:002008-02-09T20:21:00-08:00Huahaitag:yyhh.org,2008-02-09:/blog/2008/02/java-time-resolution<p>I am writing a Java program to run psychology experiments. Since this is a generic program that may be configured for running some reaction time (RT) experiments, I am worried about the time resolution of Java. It turns out that I don't need to worry too much, except on Windows …</p><p>I am writing a Java program to run psychology experiments. Since this is a generic program that may be configured for running some reaction time (RT) experiments, I am worried about the time resolution of Java. It turns out that I don't need to worry too much, except on Windows. </p>
<p>On Linux, one millisecond time resolution can be consistently achieved using either <em>System.currentTimeMillis()</em> or <em>System.nanoTime()</em> call. </p>
<p>On Windows, the former call can only get resolution on the order of ten millisecond, and the later one can get one millisecond most of the times, but can be far worse some times. You can download <a href="https://www.simongbrown.com/blog/2007/08/20/millisecond_accuracy_in_java.html">this code</a> to test it out on your own system.</p>
<p>BTW, this test code apparently was edited on Windows, whose text files end each line with an extra character. In *nix, it shows up as ^M. To remove them, use <em>:%s/^v^m//g</em> in vim, where ^v (control-v) is a control character (SYN).</p>Interesting Comments on The Election From New York Times2008-02-07T19:03:00-08:002008-02-07T19:03:00-08:00Yunyaotag:yyhh.org,2008-02-07:/blog/2008/02/interesting-comments-on-the-election-from-new-york-times<p>I found that comments on the news for the election are often much more entertaining than the news acticles themslves. For the next few months, I will keep on updating this blog entry with comments that I found interesting, regardless whether I agree with the comments themselves or not.</p>
<p>==================================</p>
<p>02 …</p><p>I found that comments on the news for the election are often much more entertaining than the news acticles themslves. For the next few months, I will keep on updating this blog entry with comments that I found interesting, regardless whether I agree with the comments themselves or not.</p>
<p>==================================</p>
<p>02/07/2008</p>
<p>The way the BIASED media goes about<br>
openly promoting Obama is disgusting. The media is playing a covert<br>
game with the democrats… and we are like fools falling for it. Almost<br>
all news channels are owned by big corporations…. and they want a<br>
Republican in the White House for their benefit. That’s the reason why<br>
the Andrea Mitchells, the Chris Mattews’,the Scarboroughs, the<br>
Hannitys, the John Kings and the Soledad O’Briens keep on gloating over<br>
their darling Obama. When will the media realize that more than half<br>
the country is fed up of their cunning, evil tactics. We Americans have<br>
every right to have a fair media. Right now we are deprived of it and<br>
we need to take action and stop buying products adverised during<br>
prejudiced news reporters.</p>
<p><cite>— Posted by amabo </cite></p>
<p>03/05/2008</p>
<p>Ladies and Gents,<br>
Please, please, please. Grow up.<br>
Politics is the art of divisiveness.<br>
Don’t be so naive.<br>
Uniter??? Give me a break. Remember who said that the last time, huh?<br>
“I’m the uniter. I’ll end the politics of divisiveness”.<br>
No, it’s not your beloved and naive Obama.<br>
It’s GWB.<br>
Look at where we are now?<br>
Accept it and move on with your life.<br>
Just let the process take care of itself.<br>
Fool me once—shame on you fool me twice — shame on ME.</p>
<p>For Obama — Talk to me…Do not read me my bedtime stories from your teleprompter.<br>
I’m not like your typical supporters out there, hungry for any bedtime stories.<br>
Life doesn’t start with “once upon a time”. Neither it ends with “live happily ever after”.</p>
<p><cite>— Posted by Anthony </cite></p>
<p>03/18/3008</p>
<p>Can we please focus on the economy?</p>
<p>Im tired of the Obama campaign saying that he didnt place the race<br>
card. It is funny how his campaign didnt bring to “light” the Ferraro<br>
comments until a shortly before the Mississippi primary… even though<br>
the speech was given several days earlier. Now, who is playing the race<br>
card?</p>
<p>Can he please step aside already and let Hillary and McCain discuss the current issues?</p>
<p>Also, do note before you judge me, that I am a minority that understands that playing the victim wont get me anywhere.</p>
<p><cite>— Posted by Talimee</cite></p>
<p>03/18/2008</p>
<p>The speech is a brilliant web of deceit that gullible journalists will eat up.</p>
<p>His pastor has frequently spewed hatred against whites, Jews, and<br>
other Americans from the pulpit, repeatedly said “God Damn America,”<br>
praised the anti-semite Farrakhan, and accused the government of<br>
inventing the AIDS virus and selling drugs to inner-city youth.</p>
<p>But Obama avoids so much as mentioning that, and manages to<br>
guilt-trip his audience, even while disparaging his doting grandmother,<br>
who ensured that he was a spoiled and pampered adolescent, as a racist.</p>
<p>He really knows how to use the race card. If it’s true that there’s a sucker born every minute, he’ll be our next president.</p>
<p>Can you imagine Clinton or McCain surviving politically if their<br>
spiritual mentor said such hateful things? I can’t. He’s a brilliant<br>
manipulator.</p>
<p><cite>— Posted by Hans Bader </cite></p>
<p>03/18/2008</p>
<p>What makes Sen. Obama uniquely<br>
qualified to talk about race? Because mom was white, dad was black? My<br>
cousin has the same genes but he’s not yet a moral leader. You have to<br>
lead from the heart, not from your bloodlines. MLK was qualified. He<br>
connected heart to heart. His dream was/is for all of us. He spoke in a<br>
time of strife, a time when it took daring/faith from blacks/whites to<br>
accept his message. MLK never asked us to follow him. Yet people of all<br>
colors ended up marching alongside him. He was a man of substance,<br>
conviction, compassion. Like his spiritual mentor, Ghandi, MLK never<br>
confused himself with “the movement.” But Sen. Obama insists he’s<br>
qualified to “unite” us. Eager to dazzle with words. His spiritual<br>
mentor is Pastor Wright. What a long strange trip from Ghandi to Pastor<br>
Wright. Apparently, there are many people eager to listen to/follow<br>
Sen. Obama. Today’s show isn’t about race in America, it’s about Sen.<br>
Obama. The words may be beautiful, even seductive. I’ve heard enough.<br>
The “gradual” distancing from Pastor Wright (to see how much was really<br>
needed in lieu of a clean break), “gradual” distancing from Tony Rezko<br>
(waiting long enough to close on the mansion and as late as last<br>
Friday, beginning to admit the Rezko contributions were a lot more than<br>
originally stated) … “gradual,” steady charges of “racism” directed at<br>
anyone who dares to challenge him. Enough.</p>
<p><cite>— Posted by Mandelay </cite></p>"Women Are Never Front-Runners - From NY Times"2008-01-08T21:36:00-08:002008-01-08T21:36:00-08:00Yunyaotag:yyhh.org,2008-01-08:/blog/2008/01/women-are-never-front-runners-from-ny-times<p>With only basic cable subscription, I am so sick of all the political news by now. But I found this article very interesting.</p>
<p>Edit: Yet another confirmation on the topic <a href="https://www.nytimes.com/2008/02/07/opinion/07kristof.html?em&ex=1202619600&en=0ada286aade52b12&ei=5087%0A">https://www.nytimes.com/2008/02/07/opinion/07kristof.html?em&ex=12026196…</a> </p>"txt2tags: a Lightweight Document Authoring Format"2008-01-04T00:07:00-08:002008-01-04T00:07:00-08:00Huahaitag:yyhh.org,2008-01-04:/blog/2008/01/txt2tags-a-lightweight-document-authoring-format<p><img alt="txt2tags" src="https://txt2tags.sourceforge.net/img/t2tgems.png"></p>
<p>Fresh ideas often pop up when one is not working, e.g. while in shower or in bed. When that happens, one needs to jot them down fast. Of course, a piece of paper and a pen is still the best solution in term of speed. However, if a computer …</p><p><img alt="txt2tags" src="https://txt2tags.sourceforge.net/img/t2tgems.png"></p>
<p>Fresh ideas often pop up when one is not working, e.g. while in shower or in bed. When that happens, one needs to jot them down fast. Of course, a piece of paper and a pen is still the best solution in term of speed. However, if a computer is conveniently available, typing in text has the advantage of saving text re-entry time, being easily re-organizable and expandable into something more substantial, such as an article. For these advantages to materialize, a good document format is needed for quick document creation and text entry. MS Word may work for many people if MS Office is the only environment they work in. For others, especially those who value portability, a platform agnostic solution would be better. Another point against a WYSIWYG editor like Word is that it mixes presentation with content, which is generally bad. When I use Word, I habitually try to adjust the font, the layout, etc, which basically interrupt text input.</p>
<p>Speaking of portability, plain text is without question the king. So, when we need extra features, such as structure, list, table, links and so on, we add them on top of plain text. The question now becomes how much to add? Many formats trade power over simplicity. For example, LaTeX is great, many people I know write papers with LaTeX, myself included. However, LaTeX is too complex for quick text entry. Wiki is great for documentation, but there are just too many different kinds of wiki tags for me to remember. Here, I think <a href="https://txt2tags.sourceforge.net">txt2tags</a> strikes the right balance between power and simplicity.</p>
<p>txt2tags has a minimalist markup language. All the marks are non-word symbols (so they won't confuse spell checkers) that are fairly intuitive. For example, =this is top level section title=, ==this is second level==, +this top level title is numbered+, **this text is bold**, //this text is italic//, - this is a list item, + this is a numbered list item. Many of these marks are what people are already using in informal text such as email messages. There really ain't much to learn here. Compared with <a href="https://en.wikipedia.org/wiki/Lightweight_markup_language">other lightweight markup language</a>, I think txt2tags has the most natural syntax.</p>
<p>txt2tags format additionally supports tables, links, images, comments, quotations, and horizontal lines. However, cross-references and footnotes are not supported. As an initial authoring format, I think this feature set is sufficient. If more complex structures such as complicated tables, formulas, and cross-references are needed, they can be inserted at the final document production stage. At the authoring stage, there is generally no need to worry about them. If it is necessary to include them, e.g. important formula, txt2tags allows them to be inserted as already tagged code.</p>
<p>A single python script takes txt2tags files (*.t2t) and converts them into different formatted documents, including LaTeX, HTML, Unix manual page, PageMaker, plain text (yes, you sometimes need them), among others. This blog is written in txt2tags and then converted to HTML. In fact, <a href="https://txt2tags.sourceforge.net/writing-book.html">books</a> can be written in text2tags, because it supports multiple file includes, so each chapter can live in its own file. txt2tags can also automatically generate table of content.</p>
<p>As vim user, we expect niceties such as syntax highlighting and vim key-mappings for txt2tags. These can all be found on txt2tags Web site. Or if one uses Debian, these are included in the txt2tags Debian package already. For people like to have GUI, there's a Tcl/Tk GUI interface for txt2tags. And a Web interface is available too.</p>
<p>For quickly jotting down ideas, I have tried mind-mapping tools (freemind, kdissert), outliners (TVO, vimoutliners), and note-takers (basket, knotes). They work to some degree but are all very limited in term of content expandability and portability. I just wish I had found txt2tags earlier.</p>
<p>txt2tags also makes a good addition to my text based GTD solution. I will be using it as my main information collection format. Because txt2tags' list format is very compatible with <a href="https://yyhh.org/blog/2007/12/simple-gtd-list-solution-desktop-web-and-possibly-mobile">taskpaper</a>'s list -- both use "-" to indicate list item, and use indention to indicate nesting level -- I can simply yank a list from a t2t file, and put it in my taskpaper project list. Nice.</p>2008 coming soon - Time to make another new year resolution2007-12-31T20:17:00-08:002007-12-31T20:17:00-08:00Yunyaotag:yyhh.org,2007-12-31:/blog/2007/12/2008-coming-soon-time-to-make-another-new-year-resolution<p>Year 2008 is less than 12 hours away for me. In fact, it is already 2008 in most part of the world. For many people, it is time to make their new year resolution. It is true for me as well.</p>
<p>Before I make a new one for 2008, though …</p><p>Year 2008 is less than 12 hours away for me. In fact, it is already 2008 in most part of the world. For many people, it is time to make their new year resolution. It is true for me as well.</p>
<p>Before I make a new one for 2008, though. Let me first review the one I have made for 2007 --- learning practical Spanish. How well I do with this one? Well, one thing I can tell you is that I have just returned from a trip to Mexico and could barely bargain price in Spanish. The good news is, though, I do learn a little and will continue learning Spanish. So my 2007 resolution should not count as a total failure. :-P</p>
<p>So what is my new year resolution for year 2008? Nothing special, actually. My focus on year 2008 is to live a healthy and happy life, which means many small things such as regular physical exercises, healthy diet, good balance of work and life, etc. These things are hard to measure but extremely import for all human being. I hope a year later, before I make another new year resolution, I could proudly pronounce that I have reached my goal in 2008.</p>How to load context of text files into DB22007-12-29T00:48:00-08:002007-12-29T00:48:00-08:00Yunyaotag:yyhh.org,2007-12-29:/blog/2007/12/how-to-load-context-of-text-files-into-db2<p>The task is fairly simply --- I need to load the content of some text files into DB2. There are many ways to do so, but since I only need to this only once (hopefully), I want to find an easy way without writing any external code.</p>
<p>So here is the …</p><p>The task is fairly simply --- I need to load the content of some text files into DB2. There are many ways to do so, but since I only need to this only once (hopefully), I want to find an easy way without writing any external code.</p>
<p>So here is the solution:</p>
<p>(1) create a table containing a CLOB (VARCHAR should work as well, if we know the maxium size of the files in advance) column. For example:</p>
<blockquote>
<p>create table test (docid INTEGER GENERATED BY DEFAULT AS IDENTITY,doc CLOB)</p>
</blockquote>
<p>(2) put the files to be loaded into one directory and create a .del file based on their names. The content in the .del file should based on the table you have just created. For instance, a .del file for the example table created in (1) should look like the following:</p>
<blockquote>
<p>1,"doc1.txt"</p>
<p>2, "doc2, txt"</p>
<p>.....</p>
</blockquote>
<p>where the first value is the id, and the second value is the name of a file to be loaded.</p>
<p>(3) load the content</p>
<blockquote>
<p>import from test.del of del lobs from /home/dirName/ modified by lobsinfile replace into test</p>
</blockquote>
<p>Depends on the exact nature of your task, you may add additional modifiers to the import command. But the above three steps should be adequate in many cases.</p>
<p>Finally, just to make sure that the files are properly loaded into the database, we can export part of the table and view the content:</p>
<blockquote>
<p>export to myfile.del of del lobs to outDirName lobfile lobs1, lobs2 modified by lobsinfile select * from test where docid < 10</p>
</blockquote>Reference to Individual Email Message in Plain Text File2007-12-13T22:40:00-08:002007-12-13T22:40:00-08:00Huahaitag:yyhh.org,2007-12-13:/blog/2007/12/reference-to-individual-email-message-in-plain-text-file<p>A lot of people implement <a href="https://saw.themurdaughs.com/gtd-with-gmail-whitepaper">GTD methodology entirely with Gmail</a>. I don't feel comfortable doing that because gmail is not that secure. And I think depending on a network service is a bad idea for a GTD system. So I still download all my emails to my local computers. As …</p><p>A lot of people implement <a href="https://saw.themurdaughs.com/gtd-with-gmail-whitepaper">GTD methodology entirely with Gmail</a>. I don't feel comfortable doing that because gmail is not that secure. And I think depending on a network service is a bad idea for a GTD system. So I still download all my emails to my local computers. As <a href="https://yyhh.org/blog/2007/12/simple-gtd-list-solution-desktop-web-and-possibly-mobile">my plain text based GTD implementation</a> was taking shape, I realized that I needed to refer to individual email messages in my local mail folders, both in the "Projects/Next-Action" list and as reference materials. For example, in my list, there would be an item "think about Johon's request", and it should include a link to the email message containing John's request. Ideally, invoking this link should open up this email message in <em>kmail</em>, my email reader. Also, I would like the creation of such a link in my list to be semi-automatic.</p>
<p>The first problem is to find the unique id for the email message. Although there's an Message-ID field in standard email format, kmail does not make it easy to use that field. It turns out that just using the unique filename of email messages is sufficient. Kmail by default uses <em>maildir</em> format to store emails, and maildir stores each message as an individual file with a unique name. This situation makes linking to email messages as easy as linking to files. Now the question is, how do I know what filename an individual email message is saved as?</p>
<p>The answer is I don't know, kmail does not reveal that information. At least I don't know the filename when the email is first saved in my email folder. But, the good news is, I don't need to know the filename when the email is in my inbox. Because, as GTD methodology decrees, stuff in inbox should not be permanent, but is to be moved into either projects/next-action list or reference collection. Now, when I process my inbox, and move a message into my GTD email folder, I can figure out what name it is saved in. No, I am not suggesting using kmail's "save-as" method. That's still too much work, because I then have to open a file browser, choose a filename for the email to save as, and manually put a link to that file in my list. Besides, kmail can only "save-as" mbox format, and it sucks.</p>
<p>What I now end up with is a neat solution. Basically, all I need to do, is to drag a message into my local GTD mail folder in kmail. And a link to the saved message will be automatically inserted into my plain-text project/next-action list or my reference file, depending on a dialog selection. This screen shot shows an email being dragged into GTD folder in kmail: <img alt="kmail" src="https://i274.photobucket.com/albums/jj251/huahaiy/kmail-drag-gtd.png"></p>
<p>A dialog then shows up:<img alt="dialog" src="https://i274.photobucket.com/albums/jj251/huahaiy/kmail-drag-gtd-dialog.png">.</p>
<p>After making a selection, a reference to the email message is inserted in vim, which looks like this: </p>
<p><mail:~/Mail/GTD/cur/1197479411.14855.WSF8K:2,S></p>
<p>This implementation depends on <a href="https://inotify-tools.sourceforge.net/">inotify-tools</a>, which utilizes newer Linux kernel's <em>inotify</em> capability. It watches GTD mail folder. When an email message is moved into this folder, a script records its filename, and inserts a link to the email in my project/next-action list. This solution also depends on <em>vim</em> with server mode support, so other program can send commands to it. I always start my projects/next-action editing session in server mode, with special server names, such as "active_projects": </p>
<p>gvim --servername "active_projects" projects.taskpaper</p>
<p>Finally, a vim plug-in <a href="https://www.vim.org/scripts/script.php?script_id=293">utl.vim</a> is needed to invoke any URL in plain text.</p>
<p>All these components are glued together with a simple shell script <em>~/bin/email2gtd.sh</em>: </p>
<p><font face="monospace"><br>
<font color="#a0b0c0"><em>#!/bin/bash</em></font><br>
<font color="#a0b0c0"><em># waiting for email message being dropped in GTD mail folder, then insert</em></font><br>
<font color="#a0b0c0"><em># a reference to the email in one of the available vim server buffers,</em></font><br>
<font color="#a0b0c0"><em># depending on user selection in dialog prompt</em></font><br>
<font color="#a0b0c0"><em>#</em></font><br>
<font color="#a0b0c0"><em># author: Huahai Yang, 12/13/2007 11:22:36 AM (PST) </em></font><br>
<font color="#a0b0c0"><em>#</em></font><br>
<font color="#007020"><strong>while</strong></font> <font color="#5b3674"><em>email</em></font>=<font color="#1060a0">$(</font><font color="#70a0d0"><em>inotifywait -e moved_to ~/Mail/GTD/cur --format</em> </font><font color="#408010">"</font><font color="#4070a0">%f</font><font color="#408010">"</font><font color="#1060a0">)</font><font color="#408010">;</font> <font color="#4c8f2f"><strong>do</strong></font></p>
<p><font color="#a0b0c0"><em># the list of available vim servers</em></font><br>
<font color="#5b3674"><em>servers</em></font>=<font color="#408010">(</font> <font color="#1060a0">$(</font><font color="#70a0d0"><em>vim --serverlist</em></font><font color="#1060a0">)</font> <font color="#408010">)</font></p>
<p><font color="#a0b0c0"><em># the number of available vim servers</em></font><br>
<font color="#5b3674"><em>num</em></font>=<font color="#1060a0">${#</font><font color="#1060a0">servers</font><font color="#1060a0">[</font>@<font color="#1060a0">]</font><font color="#1060a0">}</font></p>
<p><font color="#4c8f2f"><strong>if</strong></font> <font color="#70a0d0"><em>[[</em></font> <font color="#1060a0"> $num</font> <font color="#4c8f2f"><strong>-eq</strong></font> <font color="#40a070">0</font> <font color="#70a0d0"><em>]]</em></font><font color="#408010">;</font> <font color="#4c8f2f"><strong>then</strong></font><br>
kdialog --msgbox <font color="#408010">"</font><font color="#4070a0">There is no vim server running.</font><font color="#408010">"</font><br>
<font color="#4c8f2f"><strong>else</strong></font><br>
<font color="#a0b0c0"><em># construct dialog choices</em></font><br>
<font color="#5b3674"><em>choices</em></font>=<font color="#408010">""</font><br>
<font color="#007020"><strong>for</strong></font> id <font color="#007020"><strong>in</strong></font> <font color="#1060a0"> $(</font><font color="#70a0d0"><em>seq</em> </font><font color="#40a070">0</font><font color="#70a0d0"><em> </em></font><font color="#1060a0"> $((</font><font color="#1060a0"> $num</font><font color="#70a0d0"><em> -</em> </font><font color="#40a070">1</font><font color="#1060a0">))</font><font color="#1060a0">)</font><font color="#408010">;</font> <font color="#4c8f2f"><strong>do</strong></font><br>
<font color="#5b3674"><em>choices</em></font>=<font color="#1060a0"> ${</font><font color="#1060a0">choices</font><font color="#1060a0">}</font><font color="#408010">"</font><font color="#4070a0"> </font><font color="#408010">"</font><font color="#1060a0"> ${</font><font color="#1060a0">servers</font><font color="#1060a0">[</font><font color="#1060a0"> $id</font><font color="#1060a0">]</font><font color="#1060a0">}</font><font color="#408010">"</font><font color="#4070a0"> </font><font color="#408010">"</font><font color="#1060a0"> ${</font><font color="#1060a0">servers</font><font color="#1060a0">[</font><font color="#1060a0"> $id</font><font color="#1060a0">]</font><font color="#1060a0">}</font><font color="#408010">"</font><font color="#4070a0"> off</font><font color="#408010">"</font><br>
<font color="#4c8f2f"><strong>done</strong></font></p>
<p><font color="#5b3674"><em>server</em></font>=<font color="#1060a0"> $(</font><font color="#70a0d0"><em>kdialog --title</em> </font><font color="#408010">"</font><font color="#4070a0">Insert email reference</font><font color="#408010">"</font><font color="#70a0d0"><em> \</em></font><br>
<font color="#70a0d0"><em> --radiolist</em> </font><font color="#408010">"</font><font color="#4070a0">Please select which vim server to insert into:</font><font color="#408010">"</font><font color="#70a0d0"><em> \</em></font><br>
<font color="#70a0d0"><em> </em></font><font color="#1060a0"> $choices</font><font color="#1060a0">)</font></p>
<p><font color="#a0b0c0"><em># insert the email reference to the end of the current line</em></font><br>
vim --servername <font color="#408010">"</font><font color="#1060a0"> $server</font><font color="#408010">"</font> \<br>
--remote-send <font color="#408010">"</font><font color="#4070a0"><ESC>A<mail:~/Mail/GTD/cur/</font><font color="#408010">"</font><font color="#1060a0"> ${</font><font color="#1060a0">email</font><font color="#1060a0">}</font><font color="#408010">"</font><font color="#4070a0">><ESC></font><font color="#408010">"</font><br>
<font color="#4c8f2f"><strong>fi</strong></font><br>
<font color="#4c8f2f"><strong>done</strong></font> </p>
<p></font></p>
<p>This script should run in the background. I personally run it from <em>~/.kde/Autostart</em> so it is automatically loaded when I log in. It watches the <em>~/Mail/GTD</em> folder I created in kmail, and insert a reference to an email to available vim server when the email is moved to the folder.</p>
<p>Finally, I set up utl.vim plug-in so that it knows how to invoke a reference to email message. After installing utl.vim, I added the following function in my <em>.vimrc</em>, so that utl.vim can handle my "mail:" style URL:</p>
<p><font face="monospace"><br>
<font color="#a0b0c0"><em>" lauch kmail to handle reference to email message</em></font><br>
<font color="#007020"><strong>fu</strong></font>! Utl_AddressScheme_mail<font color="#408010">(</font>auri<font color="#408010">)</font><br>
<font color="#007020"><strong>exe</strong></font> <font color="#4070a0">"!kmail --view "</font> <font color="#408010">.</font> UtlUri_unescape<font color="#408010">(</font> UtlUri_opaque<font color="#408010">(</font>a:auri<font color="#408010">)</font> <font color="#408010">)</font><br>
<font color="#007020"><strong>return</strong></font> <font color="#4070a0">''</font><br>
<font color="#007020"><strong>endfu</strong></font><br>
</font></p>
<p>Now when cursor is on an email link, hit <em>\gu</em> will open up the message in kmail.</p>
<p><a href="https://i274.photobucket.com/albums/jj251/huahaiy/gtd-email-reference.png"><img src="https://i274.photobucket.com/albums/jj251/huahaiy/gtd-email-reference.png" width="720" /></a></p>"A Simple GTD List Solution: Desktop, Web and Possibly Mobile"2007-12-10T04:25:00-08:002007-12-10T04:25:00-08:00Huahaitag:yyhh.org,2007-12-10:/blog/2007/12/a-simple-gtd-list-solution-desktop-web-and-possibly-mobile<p>I have been searching for a lightweight list solution since I started trying out the <a href="https://en.wikipedia.org/wiki/Getting_Things_Done">Getting Things Done (GTD)</a> approach a few days ago. Unlike calendar events, list items (projects and actions) do not associate with a particular time and date, therefore, using a calender for them is not appropriate …</p><p>I have been searching for a lightweight list solution since I started trying out the <a href="https://en.wikipedia.org/wiki/Getting_Things_Done">Getting Things Done (GTD)</a> approach a few days ago. Unlike calendar events, list items (projects and actions) do not associate with a particular time and date, therefore, using a calender for them is not appropriate. According to <a href="https://www.davidco.com/">David Allen</a>, for lists, we should "just go for simplicity, speed, and fun". Here I operationalize that into these properties:</p>
<ul>
<li>
<p>Simple, but can still do these:</p>
<ul>
<li>Handle lists for "project", "next-action", "waiting-for" and "maybe"</li>
<li>Be able to tag an item with "context", and organize items by context</li>
<li>Support sub-list</li>
</ul>
</li>
<li>
<p>Quick and easy input, review, and operate, whenever, wherever</p>
<ul>
<li>Platform and location independent: home, office, road, online, offline</li>
<li>Synchronized and consistent</li>
<li>Preserve persistence and ownership (lists live else where won't do)</li>
<li>Easily searchable</li>
<li>Integrated with work environment (e.g. maintain reference to support materials)</li>
</ul>
</li>
<li>
<p>Good-looking, functional, familiar and consistent interface</p>
</li>
</ul>
<p>This set of desiderata is of course incomplete, just what I can think of right now. All these can actually be comfortably handled by paper based solutions for most people I think. However, for people whose primary work environment is digital, the second major item is not very amicable for a paper based solution, because getting things transferred between digital and paper world is a lot of hassle. If the input and output of one's work are all in the digital environment, it becomes necessary to avoid the paper world, and to find an all digital solution to get things done. At this point, I think I found a simple solution, <a href="https://hogbaysoftware.com/products/taskpaper">TaskPaper</a>.</p>
<p><em>TaskPaper</em> is a Mac based list software. I do not own a Mac, so why is it my solution? Well, TaskPaper uses a very simple and intuitive syntax representing lists in plain text. That is to say, they stick to the basics, and try to take what's good about paper-based solution, and bring that to digital world. Since plain text is the most platform independent format, portability is not a problem any more. Easy and quick input is taken care of with a good text editor. Searchability, persistence, and synchronization is easy to achieve with textual data. So there you have it, a solution that meets all the desiderata.</p>
<p>Wait, how about its support for GTD? Here, TaskPaper's syntax is specifically tailored to GTD. Nothing more. Let's see an example: </p>
<p><font face="monospace"><br>
<strong><span class="underline">Example Project:</span></strong><br>
<font color="#bebebe">- Start example project file @computer @done</font><br>
<font color="#5b3674"><em>-</em> </font>Brainstorm project with colleagues <font color="#5b3674"><em>@work</em></font><br>
<font color="#5b3674"><em>-</em> </font>Email Joan about project <font color="#5b3674"><em>@email</em></font><br>
<strong><span class="underline">Next Project:</span></strong><br>
<font color="#5b3674"><em>-</em> </font>Draft ideas for next project <font color="#5b3674"><em>@anywhere</em></font><br>
<font color="#5b3674"><em>-</em> </font>Email Bob to arrange meeting <font color="#5b3674"><em>@email</em></font><br>
</font></p>
<p>This list contains two projects. Project names end with ":". Tasks in a project start with "-". Context tags start with "@". "@done" is a special tag indicating completion of a task. That's it. All the syntax for TaskPaper! I don't think it can be made simpler, and everyone should be able to pick it up in no time. In addition, the possibility of customizing the format to suit one's own needs seems to be very high. For example, <a href="https://en.wikipedia.org/wiki/Personal_wiki">wiki words</a> can be naturally included in the list to handle reference to project support materials.</p>
<p>For vim user, there's a <a href="https://www.vim.org/scripts/script.php?script_id=2027">taskpaper.vim</a> plugin that makes it a little easier to edit and review TaskPaper lists. The current released version of taskpaper.vim doesn't seem to correctly handle indented tasks due to a quotation peculiarity of vim regular expression. I have sent a small patch below to the author of taskpaper.vim (update12/10/2007 10:49:08 PM (EST): it will be included in the next release, I am told).</p>
<p><font face="monospace"><br>
<font color="#e5a00d"><em>--- taskpaper.vim 2007-09-25 07:33:28.000000000 -0400</em></font><br>
<font color="#e5a00d"><em>+++ taskpaper.vim.new 2007-12-09 08:20:06.000000000 -0500</em></font><br>
<font color="#007020"><strong>@@ -36,7 +36,7 @@</strong></font><br>
<br>
" toggle @done context tag on a task<br>
function! ToggleDone()<br>
<font color="#70a0d0"><em>- if (getline(".") =~ "^\s*- ")</em></font><br>
<font color="#5b3674"><em>+ if (getline(".") =~ '^\s*- ')</em></font><br>
let isdone = strridx(getline("."),"@done")<br>
if (isdone != -1)<br>
substitute/ @done//<br>
<font color="#007020"><strong>@@ -45,7 +45,10 @@</strong></font><br>
substitute/$/ @done/<br>
echo "done!"<br>
endif<br>
<font color="#5b3674"><em>+ else</em> </font><br>
<font color="#5b3674"><em>+ echo "not a task."</em></font><br>
endif<br>
<font color="#5b3674"><em>+</em></font><br>
endfunction<br>
<br>
map <buffer> <LocalLeader>td :call ToggleDone()<cr><br>
</font></p>
<p>There is also a <a href="https://code.google.com/p/taskpaper-web/">taskpaper.web</a> that you can drop in your own php-supported Web site. This is useful when you do not have access to your desktop but have access to your own Web site. Of course, then you have to set up file synchronization between the Web copy of your lists and your desktop or mobile copies. For the former, you can run a <em>cron</em> job to regularly <em>rsync</em> these files. For the later, I am not sure since I no longer use a PDA or smart phone (it's funny that I was among the first generation of Palm users, but I no longer use any of these when they become so popular nowadays. I just carry my laptop around).</p>
<p>Anyway, I just started experimenting with this methods for GTD lists. I will have more to say when I got more experience using it.</p>
<p>*For the meaning of some of the GTD terms, it's best to read <a href="https://www.amazon.com/Getting-Things-Done-Stress-Free-Productivity/dp/0142000280">the book</a>.</p>Editing Web Textarea with Desktop Editor2007-12-07T07:17:00-08:002007-12-07T07:17:00-08:00Huahaitag:yyhh.org,2007-12-07:/blog/2007/12/editing-web-textarea-with-desktop-editor<p>Nowadays we do a lot of text input on the Web, like posting on forums, filling out a support request form, commenting on someone's blog, etc. Although Web forms often offer a variety of so-called rich text editing capabilities, nothing beats the good old desktop editors. For a vim person …</p><p>Nowadays we do a lot of text input on the Web, like posting on forums, filling out a support request form, commenting on someone's blog, etc. Although Web forms often offer a variety of so-called rich text editing capabilities, nothing beats the good old desktop editors. For a vim person, a plain Web textarea simply is not the place for text editing. Fortunately, for Firefox users, this pain can be eased. There are a few Firefox addons that allow people to use external editors for editing textarea. This <a href="https://en.wikipedia.org/wiki/Wikipedia:Text_editor_support">wikipedia article</a> lists quite a few options. I tried <a href="https://addons.mozilla.org/firefox/4125">It's All Text!</a>, and it works very well. It supports utf-8 encoding so I can write Chinese. Now I can seriously consider using gmail as my primary email client.</p>Firefox Hangs2007-12-06T10:52:00-08:002007-12-06T10:52:00-08:00Huahaitag:yyhh.org,2007-12-06:/blog/2007/12/firefox-hangs<p>Although Firefox is considered very safe and stable, it sometimes hangs. In the past, when it hung, my solution was to remove the whole <em>~/.mozilla/firefox</em> directory. It worked every time (reinstalling Firefox doesn't help). Of course, I would always backup my <em>bookmarks.html</em> and other files under the <em>chrome …</em></p><p>Although Firefox is considered very safe and stable, it sometimes hangs. In the past, when it hung, my solution was to remove the whole <em>~/.mozilla/firefox</em> directory. It worked every time (reinstalling Firefox doesn't help). Of course, I would always backup my <em>bookmarks.html</em> and other files under the <em>chrome</em> sub-directory first. Then I had to reinstall the add-ons when I got a working firefox. It turned out I shouldn't have taken such a drastic action. According to <a href="https://kb.mozillazine.org/Firefox_hangs">this firefox documentation</a>, <em>sessionstore.js</em> files are often the culprit. Removing them usually works for me.</p>An Mac Look for my KDE Desktop2007-12-05T10:04:00-08:002007-12-05T10:04:00-08:00Huahaitag:yyhh.org,2007-12-05:/blog/2007/12/an-mac-look-for-my-kde-desktop<p>Although I have never laid my hands on an Apple computer, I have seen people going crazy about them. I remember seeing some kids shouting hysterically in front of Apple store on the release day of Tiger a few years ago. The user interface of Apple's OS is said to …</p><p>Although I have never laid my hands on an Apple computer, I have seen people going crazy about them. I remember seeing some kids shouting hysterically in front of Apple store on the release day of Tiger a few years ago. The user interface of Apple's OS is said to be one of the selling points. So when I was feeling tired of Mepis Linux's default look last night, I decided to try an OS X look for a change. It turned out to be relatively easy to do.</p>
<p><img src="https://farm3.static.flickr.com/2063/2088772436_89e4266cbc_z.jpg" id="__mce_tmp" /></p>
<p><strong>KDE widget</strong> Basically, getting an OS X Tiger look and feel on KDE involves installing a theme that imitates its look and feel. There is a KDE theme called <a href="https://baghira.sourceforge.net/">Baghira</a>that does just that. It's so popular that Debian sid has it in the pool, so</p>
<p><code>apt-get install kwin-baghira</code></p>
<p>as root should get it installed. Once it's installed, launch <em>KDE Control Center -> Appearance and Themes -> Style</em>, and change <em>Widget Style</em> to Baghira. Also, go one step up to <em>Colors</em>, and change <em>Color Scheme</em> to <em>Aqua Blue</em>. Now you should get Tiger look and feel for all the KDE widgets. This theme can be further configured using a tool called <em>bab</em>. One can launch bab from from command line and find it in the system tray. Right click it to open configuration screen.</p>
<p><strong>Compiz window decoration</strong> Since I use compiz-fusion as my default window manager, Baghira theme's own kwin decoration settings does not work. Of course, compiz-fusion can use kwin as window decorator, but it's less stable than <em>emerald</em>, compiz's own window decorator. It would be great if emerald has an OS X looking theme. Sure enough, there are quite a few emerald themes that can do that. Launch <em>emerald-theme-manager</em> tool, one can download GPL or non GPL'ed themes. I tried them one by one, and found at least three OS X imitators. In the end I chose "dreamtiger-baghira" as it matches Baghira theme.</p>
<p><strong>OS X style menubar</strong> One can set up an OS X style menubar on top of screen in KDE Control Center -> Desktop -> Behavior. I did that, but the old KDE panel was still around and it was not possible to remove it. So I removed all of the panel's content, and set it to auto hide at a corner so it won't bother me any more. Following <a href="https://baghira.sourceforge.net/OS_Clone-en.php">Baghira theme's instruction</a>, I added Baghira's Starter to the menubar. Now the menu of KDE application with current mouse focus will show up in the menubar. This behavior took some used to, but I think I am liking it because it makes application windows look cleaner and takes less screen space. There are some caveats using OS X style menubar in KDE. Icons in system tray does not scale, so their bottoms are cropped off. This is not a big deal since I hide most of the system tray icons. Another issue, is that full screen mode in VirtualBox is no longer really full screen because the menubar is always visible. This is a bit annoying especially if you want to do a presentation or playing full screen games in the virtual machine. I have yet to find a way to hide the menubar. Also, I have been using a Mac like docker, <a href="https://www.xiaprojects.com/index.php?section=All&project=KXDocker">kxdocker</a>, for years, so there's no need to change here.</p>
<p><strong>GTK application</strong> Baghira theme does not apply to GTK applications, which I have plenty: firefox, synaptic, openoffice, gvim, etc. To have a consistent look across all applications, I needed to set up OS X like theme for GTK application too. Again, there are several GTK themes can do that. I chose to download <a href="https://www.gnome-look.org/content/show.php/OSX-Tiger+theme?content=56577">OSX-Tiger</a> theme because it's small. I unpacked it and moved the unpacked directory to <em>/usr/share/themes</em>. Since a full installation of gnome desktop wasn't something I wanted to do, I needed a small tool to let GTK applications aware of and use this theme. A command line tool called <em>switch2</em> can be installed from Debian pool (package name is <em>gtk-theme-switch</em>) to do that:</p>
<p><code>switch2 /usr/share/themes/OSX-theme</code></p>
<p><strong>Icons</strong> It doesn't help if one uses an OS X theme without OS X like icons. I chose to install <a href="https://www.kde-look.org/content/show.php?content=16564">OS-L</a> icon set. It includes a script to build the icon set, one can then pick it in KDE Control Center -> Appearance & themes -> Icons.</p>
<p><strong>Fonts</strong> To do a full blown imitation of OS X look, matching fonts are required. Unfortunately, we have to use the real thing here. Download <a href="https://www.osx-e.com/downloads/misc/macfonts.html">Mac fonts</a>, unpack and put the directory under <em>/usr/share/fonts/truetype</em>. To easily achieve font consistence across all GUI applications, I changed <em>/etc/fonts/local.conf</em> to make these Mac fonts as X server's preferred fonts. My <em>/etc/fonts/local.conf</em>is here:</p>
<p><span style="font-family: monospace;"> <span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>fontconfig</em></span><span style="color: #06287e;"><em>></em></span><br>
<span style="color: #a0b0c0;"><em><!</em></span><span style="color: #a0b0c0;"><em>-- Disable anti-alias for Chinese fonts less or equal to 12px --</em></span><span style="color: #a0b0c0;"><em>></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>match</em></span><span style="color: #06287e;"><em> </em></span><span style="color: #e5a00d;"><em>target</em></span>=<span style="color: #4070a0;">"font"</span><span style="color: #06287e;"><em>></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>test</em></span><span style="color: #06287e;"><em> </em></span><span style="color: #e5a00d;"><em>qual</em></span>=<span style="color: #4070a0;">"any"</span><span style="color: #06287e;"><em> </em></span><span style="color: #e5a00d;"><em>name</em></span>=<span style="color: #4070a0;">"family"</span><span style="color: #06287e;"><em> </em></span><span style="color: #e5a00d;"><em>compare</em></span>=<span style="color: #4070a0;">"eq"</span><span style="color: #06287e;"><em>></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>string</em></span><span style="color: #06287e;"><em>></em></span>WenQuanYi Bitmap Song<span style="color: #5b3674;"><em></string></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>string</em></span><span style="color: #06287e;"><em>></em></span>AR PL Mingti2L Big5<span style="color: #5b3674;"><em></string></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>string</em></span><span style="color: #06287e;"><em>></em></span>AR PL KaitiM Big5<span style="color: #5b3674;"><em></string></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>string</em></span><span style="color: #06287e;"><em>></em></span>AR PL KaitiM GB<span style="color: #5b3674;"><em></string></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>string</em></span><span style="color: #06287e;"><em>></em></span>AR PL SungtiL Big5<span style="color: #5b3674;"><em></string></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>string</em></span><span style="color: #06287e;"><em>></em></span>AR PL New Sung<span style="color: #5b3674;"><em></string></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>string</em></span><span style="color: #06287e;"><em>></em></span>AR PL ShanHeiSun Uni<span style="color: #5b3674;"><em></string></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>string</em></span><span style="color: #06287e;"><em>></em></span>AR PL ZenKai Uni<span style="color: #5b3674;"><em></string></em></span><br>
<span style="color: #5b3674;"><em></test></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>test</em></span><span style="color: #06287e;"><em> </em></span><span style="color: #e5a00d;"><em>name</em></span>=<span style="color: #4070a0;">"pixelsize"</span><span style="color: #06287e;"><em> </em></span><span style="color: #e5a00d;"><em>compare</em></span>=<span style="color: #4070a0;">"less_eq"</span><span style="color: #06287e;"><em>></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>double</em></span><span style="color: #06287e;"><em>></em></span>12<span style="color: #5b3674;"><em></double></em></span><br>
<span style="color: #5b3674;"><em></test></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>edit</em></span><span style="color: #06287e;"><em> </em></span><span style="color: #e5a00d;"><em>name</em></span>=<span style="color: #4070a0;">"antialias"</span><span style="color: #06287e;"><em>></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>bool</em></span><span style="color: #06287e;"><em>></em></span>false<span style="color: #5b3674;"><em></bool></em></span><br>
<span style="color: #5b3674;"><em></edit></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>edit</em></span><span style="color: #06287e;"><em> </em></span><span style="color: #e5a00d;"><em>name</em></span>=<span style="color: #4070a0;">"hinting"</span><span style="color: #06287e;"><em>></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>bool</em></span><span style="color: #06287e;"><em>></em></span>true<span style="color: #5b3674;"><em></bool></em></span><br>
<span style="color: #5b3674;"><em></edit></em></span><br>
<span style="color: #5b3674;"><em></match></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>alias</em></span><span style="color: #06287e;"><em>></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>serif<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>prefer</em></span><span style="color: #06287e;"><em>></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>AppleGaramond<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>DejaVu Serif<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>Bitstream Vera Serif<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>Times New Roman<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>Times<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>AR PL New Sung<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>AR PL ShanHeiSun Uni<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>AR PL Mingti2L Big5<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>AR PL SungtiL GB<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>SimSun<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #5b3674;"><em></prefer></em></span><br>
<span style="color: #5b3674;"><em></alias></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>alias</em></span><span style="color: #06287e;"><em>></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>sans-serif<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>prefer</em></span><span style="color: #06287e;"><em>></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>Lucida Grande<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>DejaVu Sans<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>Bitstream Vera Sans<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>Arial<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>Verdana<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>Helvetica<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>AR PL New Sung<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>AR PL ShanHeiSun Uni<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>AR PL kaitiM Big5<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>AR PL kaitiM GB<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #5b3674;"><em></prefer></em></span><br>
<span style="color: #5b3674;"><em></alias></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>alias</em></span><span style="color: #06287e;"><em>></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>monospace<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>prefer</em></span><span style="color: #06287e;"><em>></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>DejaVu Sans Mono<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>Bitstream Vera Sans Mono<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>Courier New<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>Courier<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>AR PL New Sung<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #06287e;"><em><</em></span><span style="color: #06287e;"><em>family</em></span><span style="color: #06287e;"><em>></em></span>AR PL ShanHeiSun Uni<span style="color: #5b3674;"><em></family></em></span><br>
<span style="color: #5b3674;"><em></prefer></em></span><br>
<span style="color: #5b3674;"><em></alias></em></span><br>
<span style="color: #5b3674;"><em></fontconfig></em></span><br>
</span></p>
<p>Here, I chose "AppleGaramond" as the default serif font, "Lucida Grande" as the default san-serif font. I kept my original monospace font intact since I like it. For menu and toolbar fonts, I changed them to "Lucida MAC" in KDE Control Center -> Appearance & Themes -> Fonts. They make menus look very clear to read.</p>
<p><strong>Firefox</strong> Firefox doesn't respect KDE's font size setting so its UI font often looks much bigger than other applications. We have to manually set its UI fonts to have consistency. Create a file <em>~/.mozilla/firefox/xyzxyz.default/chrome/userChrome.css</em> (or just copy the example from the same directory, replace "xyzxyz" with the actual directory name), and change the font size. Finally, get a Mac-looking compatible firefox theme should make firefox looks better. There are many options, I chose <a href="https://addons.mozilla.org/en-US/firefox/addon/3174">macfox II</a> for its clean look.</p>
<p><strong>Update: 12/06/2007 09:42:07 AM (EST)</strong> It turned out I don't like "AppleGaramond", it's too much newspaper like. I eventually rolled back to "DejaVu Serif" as my default serif font (mostly used in Web content viewing). Also, Baghira theme crashes <a href="https://basket.kde.org/">basket note pads</a> application. I sent a bug report to basket developer, haven't heard back yet.</p>Use Vim as Info Page Browser2007-11-29T07:56:00-08:002007-11-29T07:56:00-08:00Huahaitag:yyhh.org,2007-11-29:/blog/2007/11/use-vim-as-info-page-browser<p>In <a href="https://yyhh.org/blog/2007/11/use-vim-read-manual-page">this post</a>, I set up vim as a manual page viewer, using <a href="https://vim.sourceforge.net/scripts/script.php?script_id=489">ManPageView</a> plugin. It turned out that the same plugin can be used to view info pages as well. All one needs to to is to add ".i" suffix to the command that you are seeking help on …</p><p>In <a href="https://yyhh.org/blog/2007/11/use-vim-read-manual-page">this post</a>, I set up vim as a manual page viewer, using <a href="https://vim.sourceforge.net/scripts/script.php?script_id=489">ManPageView</a> plugin. It turned out that the same plugin can be used to view info pages as well. All one needs to to is to add ".i" suffix to the command that you are seeking help on. For example, ":Man sed.i" will show the info page for sed. With this information, we can set up vim as info page browser, just add these lines in <em>~/.bashrc</em>:</p>
<p><code>vinfo() { /usr/bin/vim -c "Man $@.i" -c 'silent! only' -c 'nmap q :q' } alias info='vinfo'</code></p>
<p>Now open a terminal, type <em>info whatever</em> will show the info page of whatever you are seeking help on, if it exists, with nice syntax highlighting and easy to use key bindings. One caveat is that you would get an blank page if the info page does not exist, instead of getting the top level info directory as with the real info command. However, real info command doesn't have syntax highlighting and familiar key-bindings, so I stick with vim.</p>Reverse/Forward Search with Latex-Suite in Vim2007-11-22T17:19:00-08:002007-11-22T17:19:00-08:00Huahaitag:yyhh.org,2007-11-22:/blog/2007/11/reverseforward-search-with-latex-suite-in-vim<p>When editing a long Latex document, it is beneficial to be able to point from current location in DVI back to Tex, and vice visa. This is what called reverse/forward search between DVI and Latex. With <a href="https://vim-latex.sourceforge.net/">Latex-Suite in Vim</a>, this functionality is already implemented, and there's no need to …</p><p>When editing a long Latex document, it is beneficial to be able to point from current location in DVI back to Tex, and vice visa. This is what called reverse/forward search between DVI and Latex. With <a href="https://vim-latex.sourceforge.net/">Latex-Suite in Vim</a>, this functionality is already implemented, and there's no need to specify "\usepackage scrltx" in the Tex file. However, it's not fully configured by default. Forward search with "\ls" works, but inverse search by "Ctrl-Left click" in xdiv is not enabled. To turn it on, edit <em>~/.vim/ftplugin/tex/texrc</em>, change the line "TexLet g:Tex_UseEditorSettingInDVIViewer = 0" to "TexLet g:Tex_UseEditorSettingInDVIViewer = 1".</p>kmail hangs due to missing loopback interface2007-11-22T01:50:00-08:002007-11-22T01:50:00-08:00Huahaitag:yyhh.org,2007-11-22:/blog/2007/11/kmail-hangs-due-to-missing-loopback-interface<p>My <em>/etc/network/interfaces</em> got deleted when I removed <em>mepis-network</em> package. Everything was fine, except that kmail would hang since IP address 127.0.0.1 doesn't exist. It took me half an hour to figure it out. Had to create the file with these lines in it:</p>
<div class="highlight"><pre><span></span><code><span class="na">auto lo …</span></code></pre></div><p>My <em>/etc/network/interfaces</em> got deleted when I removed <em>mepis-network</em> package. Everything was fine, except that kmail would hang since IP address 127.0.0.1 doesn't exist. It took me half an hour to figure it out. Had to create the file with these lines in it:</p>
<div class="highlight"><pre><span></span><code><span class="na">auto lo </span>
<span class="na">iface lo inet loopback</span>
</code></pre></div>
<p>Now things went back to normal.</p>Post syntax highlighted code in Drupal2007-11-17T10:45:00-08:002007-11-17T10:45:00-08:00Huahaitag:yyhh.org,2007-11-17:/blog/2007/11/post-syntax-highlighted-code-in-drupal<p>You may have seen that I sometimes post code here. Wouldn't it be nice if all the code are syntax highlighted, like what we see in a text editor? Well, with the help of Vim, it's easy. Vim is bundled with a "2html" script, that can turn whatever shown in …</p><p>You may have seen that I sometimes post code here. Wouldn't it be nice if all the code are syntax highlighted, like what we see in a text editor? Well, with the help of Vim, it's easy. Vim is bundled with a "2html" script, that can turn whatever shown in Vim into a HTML file, with all it's color and format. To invoke this command, simply issue ":so \$VIMRUNTIME/syntax/2html.vim" command in Vim to run the script, or more simply ":TOhtml". No, you don't have to type this many characters, autocompletion should do most of the typing for you. Vim will then open up a window that contains the newly converted HTML file.</p>
<p>(Update: for newer version of vim, need to <code>:let g:html_use_css=0</code> first)</p>
<p>If I want to post it to Drupal, I simply remove the unnecessary tags such as "html", "body" and "head", etc. and save the file. When I write the blog entry, I read back the file and insert it where I want it. Also, I enclose the code with ``</p>
<p>code here</p>
<p>so the default Drupal style sheet renders the code within a nice box and on a light gray background.</p>
<p>This approach is much better than installing some syntax highlighting modules written in PHP on Drupal. Now the supported syntax highlighting file formats are practically unlimited, only bound by Vim's syntax highlighting repertoire, which includes pretty much every imaginable text file format. What's more, Vim's color theme applies here! So you can have all kinds of colorful code. Below are some examples.</p>
<p>This is my <em>~/.vimrc</em>, displayed with xterm16 allblue color theme, which I use in terminal:</p>
<p><font face="monospace"><br>
<font color="#8787af">" vim behavior</font><br>
<font color="#0087af">set</font> <font color="#8700d7">nocompatible</font></p>
<p><font color="#8787af">" set 256 color scheme for terminial use</font><br>
<font color="#0087af">set</font> <font color="#8700d7">term</font>=xterm-256color<br>
<font color="#8787af">"colors desert256</font><br>
<font color="#8787af">"let xterm16_brightness = 'default' " Change if needed</font><br>
<font color="#0087af">let</font> xterm16_colormap <font color="#0087af">=</font> <font color="#87afaf">'allblue'</font> <font color="#8787af">" Change if needed </font><br>
<font color="#8787af">"let xterm16_colormap = 'soft' " Change if needed </font><br>
<font color="#0087af">colors</font> xterm16<br>
<font color="#8787af">"colors pyte</font></p>
<p><font color="#8787af">" REQUIRED. This makes vim invoke latex-suite when you open a tex file.</font><br>
<font color="#0087af">filetype</font> <font color="#87af87">plugin</font> <font color="#87af87">on</font></p>
<p><font color="#8787af">"</font> <font color="#8700d7">IMPORTANT:</font><font color="#8787af"> win32 users will need to have 'shellslash' set so that latex</font><br>
<font color="#8787af">" can be called correctly.</font><br>
<font color="#0087af">set</font> <font color="#8700d7">shellslash</font></p>
<p><font color="#8787af">"</font> <font color="#8700d7">IMPORTANT:</font><font color="#8787af"> grep will sometimes skip displaying the file name if you</font><br>
<font color="#8787af">" search in a singe file. This will confuse latex-suite. Set your grep</font><br>
<font color="#8787af">" program to alway generate a file-name.</font><br>
<font color="#0087af">set</font> <font color="#8700d7">grepprg</font>=grep\ -nH\ \$*</p>
<p><font color="#8787af">"</font> <font color="#8700d7">OPTIONAL:</font><font color="#8787af"> This enables automatic indentation as you type.</font><br>
<font color="#0087af">filetype</font> <font color="#87af87">indent</font> <font color="#87af87">on</font></p>
<p><font color="#8787af">"</font> <font color="#8700d7">TIP:</font><font color="#8787af"> if you write your \label's as \label{fig:something}, then if you</font><br>
<font color="#8787af">" type in \ref{fig: and press <C-n> you will automatically cycle through</font><br>
<font color="#8787af">" all the figure labels. Very useful!</font><br>
<font color="#0087af">set</font> <font color="#8700d7">iskeyword</font>+=:</p>
<p><font color="#8787af">" so .tex file will always be recognized as Latex.</font><br>
<font color="#0087af">let</font> g:tex_flavor <font color="#0087af">=</font> <font color="#87afaf">"latex"</font></p>
<p><font color="#8787af">" this is mostly a matter of taste. but LaTeX looks good with just a bit</font><br>
<font color="#8787af">" of indentation.</font><br>
<font color="#0087af">set</font> <font color="#8700d7">tabstop</font>=2<br>
<font color="#0087af">set</font> <font color="#8700d7">shiftwidth</font>=2<br>
<font color="#0087af">set</font> <font color="#8700d7">expandtab</font> </p>
<p><font color="#0087af">set</font> <font color="#8700d7">autoindent</font><br>
<font color="#0087af">set</font> <font color="#8700d7">smartindent</font></p>
<p><font color="#8787af">" matching brackets</font><br>
<font color="#0087af">set</font> <font color="#8700d7">showmatch</font></p>
<p><font color="#8787af">" show cursor position</font><br>
<font color="#0087af">set</font> <font color="#8700d7">ruler</font></p>
<p><font color="#8787af">" minibufexpl setting</font><br>
<font color="#0087af">let</font> BufExplMapWindowNavVim <font color="#0087af">=</font> <font color="#87afaf">1</font><br>
<font color="#0087af">let</font> g:miniBufExplMapWindowNavArrows <font color="#0087af">=</font> <font color="#87afaf">1</font><br>
<font color="#0087af">let</font> g:miniBufExplMapCTabSwitchBufs <font color="#0087af">=</font> <font color="#87afaf">1</font><br>
<font color="#0087af">let</font> g:miniBufExplModSelTarget <font color="#0087af">=</font> <font color="#87afaf">1</font></p>
<p><font color="#8787af">"set paste Mode On/Off</font><br>
<font color="#0087af">map</font> <font color="#00af87"><</font><font color="#00af87">F11</font><font color="#00af87">></font> :call Paste_on_off()<font color="#00af87"><</font><font color="#00af87">CR</font><font color="#00af87">></font><br>
<font color="#0087af">set</font> <font color="#8700d7">pastetoggle</font>=<font color="#00af87"><</font><font color="#00af87">F11</font><font color="#00af87">></font><br>
<font color="#0087af">let</font> paste_mode <font color="#0087af">=</font> <font color="#87afaf">0</font> <font color="#8787af">" 0 = normal, 1 = paste</font><br>
<font color="#0087af">func</font>! Paste_on_off<font color="#0087af">()</font><br>
<font color="#0087af">if</font> g:paste_mode <font color="#0087af">==</font> <font color="#87afaf">0</font><br>
<font color="#0087af">set</font> <font color="#8700d7">paste</font><br>
<font color="#0087af">let</font> g:paste_mode <font color="#0087af">=</font> <font color="#87afaf">1</font><br>
<font color="#0087af">else</font><br>
<font color="#0087af">set</font> <font color="#8700d7">nopaste</font><br>
<font color="#0087af">let</font> g:paste_mode <font color="#0087af">=</font> <font color="#87afaf">0</font><br>
<font color="#0087af">endif</font><br>
<font color="#0087af">return</font><br>
<font color="#0087af">endfunc</font></p>
<p><font color="#8787af">" spell checking on/off</font><br>
<font color="#0087af">map</font> <font color="#00af87"><</font><font color="#00af87">F10</font><font color="#00af87">></font> :call Spell_on_off()<font color="#00af87"><</font><font color="#00af87">CR</font><font color="#00af87">></font><br>
<font color="#0087af">let</font> spell_mode <font color="#0087af">=</font> <font color="#87afaf">0</font><br>
<font color="#0087af">func</font>! Spell_on_off<font color="#0087af">()</font><br>
<font color="#0087af">if</font> g:spell_mode <font color="#0087af">==</font> <font color="#87afaf">0</font><br>
<font color="#0087af">setlocal</font> <font color="#8700d7">spell</font> <font color="#8700d7">spelllang</font>=en_us<br>
<font color="#0087af">let</font> g:spell_mode <font color="#0087af">=</font> <font color="#87afaf">1</font><br>
<font color="#0087af">else</font> <br>
<font color="#0087af">setlocal</font> <font color="#8700d7">nospell</font><br>
<font color="#0087af">let</font> g:spell_mode <font color="#0087af">=</font> <font color="#87afaf">0</font><br>
<font color="#0087af">endif</font><br>
<font color="#0087af">return</font><br>
<font color="#0087af">endfunc</font></p>
<p><font color="#8787af">" post blog entry to my Drupal site</font><br>
<font color="#8787af">" Use :e blog/nodeID_which_is_digits to open an existing entry for editting;</font><br>
<font color="#8787af">" For example :e blog/12</font><br>
<font color="#8787af">" Use :e blog/anything_other_than_digits to open a new entry for editing</font><br>
<font color="#8787af">" For example :e blog/blah</font><br>
<font color="#8787af">" Use :w to post it. </font><br>
<font color="#8787af">" Use :w blog/anything to post a file as a new blog entry</font></p>
<p><font color="#8787af">python << EOF</font></p>
<p>strUserName = <font color="#a8a8a8">'</font><font color="#87afaf">secret</font><font color="#a8a8a8">'</font><br>
strPassword = <font color="#a8a8a8">'</font><font color="#87afaf">secret</font><font color="#a8a8a8">'</font><br>
strDrupal = <font color="#a8a8a8">'</font><font color="#87afaf"><a href="https://yyhh.org">https://yyhh.org</a></font><font color="#a8a8a8">'</font></p>
<p><font color="#8700d7">import</font> vim<br>
<font color="#8700d7">import</font> xmlrpclib<br>
<font color="#8700d7">import</font> re</p>
<p><font color="#0087af">def</font> <font color="#00afaf">PostBlog</font>():</p>
<p><font color="#8787af">#</font><br>
<font color="#8787af"># If first line contains a blog entry ID then edit existing post,</font><br>
<font color="#8787af"># otherwise write a new one.</font><br>
<font color="#8787af">#</font><br>
nFirstLine = 0<br>
strID = vim.current.buffer[0]<br>
<font color="#0087af">if</font> <font color="#0087af">not</font> re.match( <font color="#a8a8a8">'</font><font color="#87afaf">^\d+\$</font><font color="#a8a8a8">'</font>, strID):<br>
strID = <font color="#a8a8a8">''</font><br>
else:<br>
nFirstLine = 1</p>
<p>strTitle = vim.current.buffer[nFirstLine]<br>
strText = <font color="#a8a8a8">"</font><font color="#00af87">\n</font><font color="#a8a8a8">"</font>.join( vim.current.buffer[nFirstLine+1:])</p>
<p>oDrupal = xmlrpclib.ServerProxy( strDrupal + <font color="#a8a8a8">'</font><font color="#87afaf">/xmlrpc.php</font><font color="#a8a8a8">'</font>)</p>
<p>oPost = { <font color="#a8a8a8">'</font><font color="#87afaf">title</font><font color="#a8a8a8">'</font>: strTitle, <font color="#a8a8a8">'</font><font color="#87afaf">description</font><font color="#a8a8a8">'</font>: strText}</p>
<p><font color="#0087af">if</font> strID == <font color="#a8a8a8">''</font>:<br>
strID = oDrupal.metaWeblog.newPost( <font color="#a8a8a8">'</font><font color="#87afaf">blog</font><font color="#a8a8a8">'</font>, strUserName, strPassword, oPost, True)<br>
else:<br>
bSuccess = oDrupal.metaWeblog.editPost( strID, strUserName, strPassword, oPost, True)</p>
<p><font color="#0087af">print</font> <font color="#a8a8a8">"</font><font color="#87afaf">Posted entry %s</font><font color="#a8a8a8">"</font> % strID</p>
<p><font color="#8787af">#</font><br>
<font color="#8787af"># Don't intend to write posts to disk so unmodify the buffer and</font><br>
<font color="#8787af"># allow easy quit from VIM.</font><br>
<font color="#8787af">#</font><br>
vim.command( <font color="#a8a8a8">'</font><font color="#87afaf">set nomodified</font><font color="#a8a8a8">'</font>)</p>
<p><font color="#0087af">def</font> <font color="#00afaf">ReadBlog</font>( strID ):<br>
<br>
<font color="#8787af">#</font><br>
<font color="#8787af"># So html plugin is automatically enabled for editing the post </font><br>
<font color="#8787af"># with auto-completion and syntax highlighting</font><br>
<font color="#8787af">#</font><br>
vim.command(<font color="#a8a8a8">'</font><font color="#87afaf">setfiletype html</font><font color="#a8a8a8">'</font>)</p>
<p><font color="#0087af">if</font> <font color="#0087af">not</font> strID.isdigit():<br>
<font color="#0087af">print</font> <font color="#a8a8a8">"</font><font color="#87afaf">New blog entry</font><font color="#a8a8a8">"</font><br>
<font color="#0087af">return</font></p>
<p>oDrupal = xmlrpclib.ServerProxy( strDrupal + <font color="#a8a8a8">'</font><font color="#87afaf">/xmlrpc.php</font><font color="#a8a8a8">'</font>)</p>
<p>oBlog = oDrupal.metaWeblog.getPost( strID, strUserName, strPassword )</p>
<p>vim.current.buffer[:] = []<br>
vim.current.buffer[0] = strID<br>
vim.current.buffer.append( oBlog[<font color="#a8a8a8">'</font><font color="#87afaf">title</font><font color="#a8a8a8">'</font>])<br>
vim.current.buffer.append( <font color="#a8a8a8">''</font>)<br>
<font color="#0087af">for</font> strLine <font color="#0087af">in</font> oBlog[<font color="#a8a8a8">'</font><font color="#87afaf">description</font><font color="#a8a8a8">'</font>].split(<font color="#a8a8a8">'</font><font color="#00af87">\n</font><font color="#a8a8a8">'</font>):<br>
vim.current.buffer.append( strLine)</p>
<p><font color="#8787af">EOF</font></p>
<p>:au BufWriteCmd blog/* <font color="#0087af">py</font> <font color="#a8a8a8">PostBlog</font><font color="#0087af">()</font> <br>
:au BufReadCmd blog/* <font color="#0087af">py</font> <font color="#a8a8a8">ReadBlog</font><font color="#0087af">(</font>vim<font color="#0087af">.</font>eval<font color="#0087af">(</font><font color="#87afaf">"expand('<afile>:t')"</font><font color="#0087af">))</font></p>
<p><font color="#0087af">syntax</font> <font color="#87af87">on</font> </p>
<p></font></p>
<p>On Drupal's side, I needed to enable full HTML input format, or these colorful HTML code will be removed by Drupal. Oh, another thing, do not use TinyMCE rich text editor to edit the post, because it will mess up the HTML code. Well, TinyMCE was installed here per Yunyao's request, I don't use it anyway, I <a href="https://yyhh.org/blog/2007/10/posting-blog-entry-drupal-within-vim">use vim to edit my post</a>:-)</p>Set mailto handler in Firefox2007-11-16T22:25:00-08:002007-11-16T22:25:00-08:00Huahaitag:yyhh.org,2007-11-16:/blog/2007/11/set-mailto-handler-in-firefox<p>In order to click "mailto:" links on Web pages to launch an email program, Firefox (or Iceweasel on Debian) needs to be told which email program to use. </p>
<p>To do this, type "about:config" in Firefox's address bar, type in "mailto" in filter, look if "network.protocol-handler.external.mailto" preference …</p><p>In order to click "mailto:" links on Web pages to launch an email program, Firefox (or Iceweasel on Debian) needs to be told which email program to use. </p>
<p>To do this, type "about:config" in Firefox's address bar, type in "mailto" in filter, look if "network.protocol-handler.external.mailto" preference has value "true". By default, it's true. If not, set it to be true. Then check if "network-protocol-handler.app.mailto" exists or not. By default it's not. We need to create one: right click, select "New"->"String", then type in "network-protocol-handler-app.mailto", then type in the path name of your email program. In my case, it's "/usr/bin/kmail". That's it, Firefox should now be able to launch the email program when a "mailto:" link is clicked.</p>Dual head with xrandr 1.2 revisited2007-11-16T04:04:00-08:002007-11-16T04:04:00-08:00Huahaitag:yyhh.org,2007-11-16:/blog/2007/11/dual-head-with-xrandr-12-revisited<p>In <a href="/blog/2007/10/use-xrandr-1-2-swtich-external-display-thinkpad-laptop">this post</a>, I discussed "clone" mode of dual head with xrandr 1.2. Now I got an extra monitor, and would like to use "xinerama" mode, wherein the built-in laptop LCD and the external monitor share a single virtual screen. </p>
<p>To set this up, I changed my <em>/etc/X11 …</em></p><p>In <a href="/blog/2007/10/use-xrandr-1-2-swtich-external-display-thinkpad-laptop">this post</a>, I discussed "clone" mode of dual head with xrandr 1.2. Now I got an extra monitor, and would like to use "xinerama" mode, wherein the built-in laptop LCD and the external monitor share a single virtual screen. </p>
<p>To set this up, I changed my <em>/etc/X11/xorg.conf</em> to add a monitor section for the external monitor:</p>
<div class="highlight"><pre><span></span><code>Section "Device"
Identifier "Intel 965GM"
Driver "intel"
BusID "PCI:0:2:0"
Screen 0
Option "XAANoOffscreenPixmaps" "true"
Option "DRI" "true"
Option "monitor-LVDS" "Builtin"
Option "monitor-VGA" "External"
EndSection`
</code></pre></div>Regular Web sites coexist with Drupal sites2007-11-16T01:31:00-08:002007-11-16T01:31:00-08:00Huahaitag:yyhh.org,2007-11-16:/blog/2007/11/regular-web-sites-coexist-with-drupal-sites<p>This site is primarily powered by Drupal, i.e. it is a PHP site. However, we have a few Web directories that serves regular HTML pages. Since I installed Drupal in document root, access to these directories becomes an issue. </p>
<p>The main problem is that directory index file resolution is …</p><p>This site is primarily powered by Drupal, i.e. it is a PHP site. However, we have a few Web directories that serves regular HTML pages. Since I installed Drupal in document root, access to these directories becomes an issue. </p>
<p>The main problem is that directory index file resolution is broken, because Drupal changed the default directory index file from <em>index.html</em> to <em>index.php</em>. So a Web request to these regular HTML directories results in an error. What's more, this error is very misleading, instead of saying "404 Page not found", it says "403 Access denied". But in fact, these pages are still accessible if full URL with .html suffix are given, it's only that index.php is not there.</p>
<p>To fix this, per-directory <em>.htaccess</em> file needs to be created for these directories. In my case, <em>.htaccess</em> were already created for these directories, but I couldn't edit them, because they were created automatically by my hosting company's tool, which required root privilege to change. So I had to disable access control on these directories to remove these .htaccess files. Then, I created my own .htaccess files. In addition to authentication directives, the critical change was to add a line:</p>
<p><code>DirectoryIndex index.html</code></p>
<p>Now the default index file for these directories are changed back to <em>index.html</em>. Problem solved.</p>Complete OpenSSH Client Public Key Solution on Debian2007-11-12T10:14:00-08:002007-11-12T10:14:00-08:00Huahaitag:yyhh.org,2007-11-12:/blog/2007/11/complete-openssh-client-public-key-solution-on-debian<p>My work requires me to connect to many different SSH servers, and I have different passwords for each server. It's a pain in the neck trying to type in many different passwords everyday. The obvious solution is to use OpenSSH's public key login solution, so passwords are no longer needed …</p><p>My work requires me to connect to many different SSH servers, and I have different passwords for each server. It's a pain in the neck trying to type in many different passwords everyday. The obvious solution is to use OpenSSH's public key login solution, so passwords are no longer needed to connect to SSH servers from a single client (e.g. my office desktop).</p>
<p><strong>Key Generation and Distribution</strong></p>
<p>To use public key authentication, it is necessary to generate a pair of keys on your client machine. Do the following as normal user:</p>
<p><code>mkdir ~/.ssh chmod 700 ~/.ssh ssh-keygen -q -f ~/.ssh/id_rsa -t rsa</code></p>
<p>You will be prompted for typing in passphrase for the private key. As a matter of security, use a different passphrase from your login password to this client machine. This process generates two files in <em>~/.ssh</em>: <em>id_rsa</em> is your private key, and you should keep it as a secret at all cost! Use this command to make it unreadable for anyone but you:</p>
<p><code>chmod go-rwx ~/.ssh/id-rsa</code></p>
<p><em>id_rsa.pub</em> is your public key, and you need to distribute this key to whatever server you want to connect to.</p>
<p>Basically, you need to upload your <em>id_rsa.pub</em> file to all your SSH servers. You can use your favorite FTP or SFTP software to do that, or use commands such as <em>scp</em>, <em>sftp</em>, or even <em>ftp</em> if the server still supports it. After <em>id_rsa.pub</em> is uploaded to your server. You need to SSH to the server, and create a directory <em>~/.ssh</em> if it does not exist already, and then</p>
<p><code>cat id_rsa.pub >> ~/.ssh/authorized_keys</code></p>
<p>to append this public key to <em>authorized_keys</em> file. Now you should be able to SSH to your server without typing in server password, only your private key passphrase is needed. Still, repeatedly type in the same passphrase can quickly become a burden in itself. The solution is to use <em>ssh-agent</em>.</p>
<p><strong>Setup ssh-agent</strong></p>
<p><em>ssh-agent</em> is part of the OpenSSH client package. The concept is simple: you only needs to type in passphrase for your private key once, and <em>ssh-agent</em> will remember it and use it whenever you need to make SSH connections in a session. Simple, right? It's actually more than that. Due to the diverse configurations of different Linux systems, setting up <em>ssh-agent</em> to work with one's system is notoriously troublesome. Here, I offer my simple solution that works on Debian sid.</p>
<p>On Debian, <em>ssh-agent</em> is by default configured to be launched during X server starting process. In fact, <em>ssh-agent</em> is the program that starts your window manager! For example, <em>ssh-agent startkde</em> is how your X session is started if you use KDE. This way, all your GUI programs inherit <em>ssh-agent</em> environment, and you only need to type in passphrase once to make SSH connections from <strong>GUI</strong> applications. However, if you try to make SSH connection from a <strong>Shell</strong>, you do not have <em>ssh-agent</em> environment variables!</p>
<p>You may have read people suggesting to use <a href="https://www.gentoo.org/proj/en/keychain/">keychain</a> to work with <em>ssh-agent</em>. However, <em>keychain</em> does not work on my Debian sid system. Instead of reusing existing <em>ssh-agent</em> process as it advertises, <em>keychain</em> launches its own <em>ssh-agent</em>, which ruins the whole business. The problem, is that the original <em>ssh-agent</em> launched by <em>Xsession</em> does not export environment variables SSH_AGENT_PID and SSH_AUTH_SOCK. So <em>keychain</em> does not know about the existing <em>ssh-agent</em> process. Of course, there's no way for the first <em>ssh-agent</em> to export environment variables because it's not even live in a shell.</p>
<p>Apparently, this problem can be solved by some complex solutions. Read <a href="https://blog.plover.com/oops/ssh-agent.html">here</a> for an example (this solution does not work for me because on my system <em>lsof</em> cannot reliably find the socket used by <em>ssh-agent</em>). Fortunately, a much simpler solution is suggested by some comments there.</p>
<p>This simple solution utilizes <em>ssh-agent</em>'s address-binding option "-a". This option allows one to bind the socket used by <em>ssh-agent</em> to any path name. Now you don't have to search for the socket, you can just put the socket where you want it and you always know where it is. For example, I bind it to "/tmp/ssh-agent", then SSH_AUTH_SOCK should be exported as the value "/tmp/ssh-agent". It's that simple!<br>
Of course, we need to ask the original <em>ssh-agent</em> launched by <em>Xsession</em> to use this address-binding option. Edit file <em>/etc/X11/Xsession.d/90x11-common_ssh-agent</em> as root, change only one line:</p>
<p><code>from: SSHAGENTARGS= to: SSHAGENTARGS="-a /tmp/ssh-agent"</code></p>
<p>Hit Ctrl-alt-backspace to restart X server. Look at your <em>/tmp</em> directory, there should be a file <em>ssh-agent</em> there.</p>
<p>Now we need to export the appropriate environment variables in shell. Edit file <em>~/.bashrc</em>, and add these two lines:</p>
<p><code>export SSH_AUTH_SOCK=/tmp/ssh-agent export SSH_AGENT_PID=$(pgrep ssh-agent)</code></p>
<p>When you start a terminal, <em>env</em> command should now have these two variables.<br>
After these simple edits, we still miss one thing. That is, <em>ssh-agent</em> is still empty, containing no identities. To add yourself to the agent, use <em>ssh-add</em> command. To be convenient, I just put it in my KDE startup script: <em>~/.kde/Autostart/start</em>. I also make sure to install a <em>ssh-askpass</em> package (there're a couple of choices), so I get a GUI prompt asking me to type in SSH passphrase once I enter KDE. After this one and only passphrase input, I can SSH as many times and as many places as I want without typing in a single password again. What a relief!</p>"Backup Linux Laptop with USB Hard-disk Enclosure: a Lightweight Solution"2007-11-12T00:00:00-08:002007-11-12T00:00:00-08:00Huahaitag:yyhh.org,2007-11-12:/blog/2007/11/backup-linux-laptop-with-usb-hard-disk-enclosure-a-lightweight-solution<p>Most of Linux laptop users have done some customizations on the system so it works the way we wanted. Now we want to save the fruit of our hard labor in case bad things happen. We want to backup not just the <em>/home</em> directory, but the whole <em>/</em> directory, minus some …</p><p>Most of Linux laptop users have done some customizations on the system so it works the way we wanted. Now we want to save the fruit of our hard labor in case bad things happen. We want to backup not just the <em>/home</em> directory, but the whole <em>/</em> directory, minus some runtime generated files. In the past I have used some heavy-weight applications such as <a href="https://www.cis.upenn.edu/~bcpierce/unison/">unison</a> and <a href="https://backuppc.sourceforge.net/">backuppc</a>. These worked well, but they required setting up servers that run all the time. For my Thinkpad laptop, I decided to use a simple and lightweight solution, but still keeping the nice features such as data compression, exclude files, and incremental backup. A script called <a href="https://www.nongnu.org/rdiff-backup/">rdiff-backup</a> seems to do the trick, and KDE has a GUI front end called <a href="https://www.kde-apps.org/content/show.php?content=32984">keep</a> for it.</p>
<p>I use a hand-disk in a USB Enclosure as my backup storage. When I need backup, I simply plug it in. However, I found that <em>rdiff-backup</em> really like that filesystem on the backup media is the same as the source media, or there will be some errors. Using <em>gparted</em>, I formatted one of the disk partitions as an <em>ext3</em> filesystem for Linux backup. The other partition on the hard-disk is <em>ntfs</em>, for Windows backup. Now I needed to properly mount the disk when I plug it it. The default automount service provided by <em>udev</em> and <em>hal</em> doesn't seem to cut it here. So I wrote an udev rule specifically for this USB enclosure, and mount its two partitions under special mount points <em>/mnt/backup1</em> and <em>/mnt/backup2</em>.</p>
<p>First, we need to find out the "idVender" and "idProduct" values for the USB Enclosure, so our udev rule will be invoked when this particular device is plugged in.</p>
<p><code>lsusb</code></p>
<p>will just do that. The ID field reads something like "06e1:0834", where the former number is vendor id, and later product id. With this information, my udev rule <em>/etc/udev/rules.d/80_usb_backup_disk.rules</em> is shown below:</p>
<p><code># # udev rules file for ADS Tech USB Harddisk Enclosure, used for backup # SYSFS{idVendor}=="06e1", SYSFS{idProduct}=="0834", NAME="backup%n"</code></p>
<p>What this rule does is to create device nodes under <em>/dev</em> when this USB enclosure is plugged in, and the names of the nodes start with "backup", followed by numbers that reflect the partitions on the disk. In my case, I got <em>/dev/backup1</em> and <em>/dev/backup2</em> because I have two partitions on my disk. Of course, you need to reboot for the rule to take effect.</p>
<p>Now we need to mount it correctly. Let's first create two mount points for these two partitions. As root,</p>
<p><code>mkdir /mnt/backup1 mkdir /mnt/backup2</code></p>
<p>The simplest method for automount is to edit <em>/etc/fstab</em>, add entry for each partition:</p>
<p><code>/dev/backup1 /mnt/backup1 ext3 users,noauto,noatime 0 0 /dev/backup2 /mnt/backup2 ntfs-3g users,exec,noauto,umask=000 0 0</code></p>
<p>The first entry is for the first partition, it has a Linux ext3 filesystem. The second entry for Windows, and it uses the new <em>ntfs-3g</em> user space program to read/write NTFS file system. For some reason, the ext3 filesystem mounted this way does not allow normal user to create directory in it even though "users"option is set. However, it does not matter much since I run <em>keep</em> as root anyway, for we are backing up the whole root directory.</p>
<p><strong>Updated 11/26/2007 08:42:52 AM (EST)</strong> After update to a newer version of ntfs-3g, I got a "fusemount" error regarding permission. </p>
<p><code>chmod 4755 $(which ntfs-3g)</code></p>
<p>as root fixed it.</p>
<p><strong>Updated 11/30/2007 01:57:27 AM (EST)</strong> I accidentally deleted my address book folder today, but I was able to restore the folder with rdiff-backup. KDE address book is stored under <em>~/.kde/share/apps/kabc</em>, to restore it from backup, I used the following command as root: </p>
<p><code>rdiff-backup -r 3D /mnt/backup1/Huahai-X61/home/huahaiy/.kde/share/apps/kabc /home/huahaiy/.kde/share/apps/kabc</code></p>
<p></p>
</p></p>Use Vim to read manual page2007-11-09T22:10:00-08:002007-11-09T22:10:00-08:00Huahaitag:yyhh.org,2007-11-09:/blog/2007/11/use-vim-to-read-manual-page<p>Command line manual page is an indispensable tool for working with Linux system.If you forget how to use a command, just type <em>man</em> followed by the name of the command. One thing I don't like about the manual system on my Debian sid is that it uses <em>most</em> to …</p><p>Command line manual page is an indispensable tool for working with Linux system.If you forget how to use a command, just type <em>man</em> followed by the name of the command. One thing I don't like about the manual system on my Debian sid is that it uses <em>most</em> to display the manual. The key bindings of <em>most</em> feel awkward for me since I am used to <em>vim</em>. Of course, there are many "vimers" like me, and they've found ways to fix this. Actually, there are <a href="https://vim.sourceforge.net/tips/tip.php?tip_id=167">many different ways</a>, but I find the approach below works best for me. Basically, it involves creating a shell alias for <em>man</em>, so when <em>man</em> is used, shell invokes <em>vim</em> instead to read the manual. The following is added in <em>~/.bashrc</em>:</p>
<div class="highlight"><pre><span></span><code><span class="cp"># use vim as man's pager, rely on ManPageView plugin </span>
<span class="n">vman</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span>
<span class="w"> </span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">whatis</span><span class="w"> </span><span class="s">"$@"</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">null</span><span class="w"> </span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="n">$</span><span class="o">?</span><span class="w"> </span><span class="o">-</span><span class="n">eq</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">];</span><span class="w"> </span><span class="n">then</span><span class="w"> </span>
<span class="w"> </span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">vim</span><span class="w"> </span><span class="o">-</span><span class="n">c</span><span class="w"> </span><span class="s">"Man $@"</span><span class="w"> </span><span class="o">-</span><span class="n">c</span><span class="w"> </span><span class="err">'</span><span class="n">silent</span><span class="o">!</span><span class="w"> </span><span class="n">only</span><span class="err">'</span><span class="w"> </span><span class="o">-</span><span class="n">c</span><span class="w"> </span><span class="err">'</span><span class="n">nmap</span><span class="w"> </span><span class="n">q</span><span class="w"> </span><span class="o">:</span><span class="n">q</span><span class="err">'</span><span class="w"> </span>
<span class="w"> </span><span class="k">else</span><span class="w"> </span>
<span class="w"> </span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">man</span><span class="w"> </span><span class="s">"$@"</span><span class="w"> </span>
<span class="w"> </span><span class="n">fi</span><span class="w"> </span>
<span class="p">}</span><span class="w"> </span>
<span class="n">alias</span><span class="w"> </span><span class="n">man</span><span class="o">=</span><span class="err">'</span><span class="n">vman</span><span class="err">'`</span>
</code></pre></div>
<p>This script relies on <a href="https://vim.sourceforge.net/scripts/script.php?script_id=489">ManPageView</a> plugin. However, I found the bundled syntax highlighting for this plug-in does not work as I expected, so I just deleted <em>~/.vim/syntax/man.vim</em>. It works because <em>vim</em> 7.0 has manual page syntax highlighting already built-in.</p>Annoying sun.io.MalformedInputException when moving Java program from Windows to Linux2007-11-06T20:31:00-08:002007-11-06T20:31:00-08:00Yunyaotag:yyhh.org,2007-11-06:/blog/2007/11/annoying-suniomalformedinputexception-when-moving-java-program-from-windows-to-linux<p>These day I write Java programs on my local machine and then move them to a Linux server to run experiments. This routine works fine so far. However, when I ran one of the progams, which involves coping one file from one directory to another, I kept on the following …</p><p>These day I write Java programs on my local machine and then move them to a Linux server to run experiments. This routine works fine so far. However, when I ran one of the progams, which involves coping one file from one directory to another, I kept on the following error message:</p>
<blockquote>
<p>sun.io.MalformedInputException<br>
at sun.io.ByteToCharUTF8.convert(ByteToCharUTF8.java)<br>
at java.io.InputStreamReader.convertInto(InputStreamReader.java:127)<br>
at java.io.InputStreamReader.fill(InputStreamReader.java:176)<br>
at java.io.InputStreamReader.read(InputStreamReader.java:256)<br>
at java.io.BufferedReader.fill(BufferedReader.java:158)<br>
at java.io.BufferedReader.read1(BufferedReader.java:206)<br>
at java.io.BufferedReader.read(BufferedReader.java:280)</p>
</blockquote>
<p>First, I though it was because of the file format problem, since all the files to be moved were created on my local Windows machine. So I manually ran dos2unix command to all the files, but it didn't work. Then I tried to change my code so that it reads and write the files in UTF8 encoding. It still did not help. Finally, I found this post online (<a href="https://www-128.ibm.com/developerworks/java/jdk/linux/142/runtimeguide.lnx.en.html">https://www-128.ibm.com/developerworks/java/jdk/linux/142/runtimeguide.l…</a>). Following its advice, I simply change LANG from <em>en_US.UTF8</em> to <em>en_US.</em> Problem solved!</p>Running Windows Vista on Debian Linux with VirtualBox2007-11-04T00:26:00-07:002007-11-04T00:26:00-07:00Huahaitag:yyhh.org,2007-11-04:/blog/2007/11/running-windows-vista-on-debian-linux-with-virtualbox<p>All of my laptops are now running Debian based Linux. It works great. Linux handles all my daily works well. However, there are occasions where I need a Windows machine. For example, I recently need to deliver a lecture on a system that runs only on Windows. Also, in the …</p><p>All of my laptops are now running Debian based Linux. It works great. Linux handles all my daily works well. However, there are occasions where I need a Windows machine. For example, I recently need to deliver a lecture on a system that runs only on Windows. Also, in the past, we developed a system that works only on Windows, and I still need to demonstrate it from time to time. Of course, the solution is to run Windows on a virtual machine on top of Linux. In the last couple of years, I have been using VMware for this purpose. However, I was not very impressed by its performance. I remember last year during a presentation, the virtual machine was so slow that my demonstration was negatively impacted by it.</p>
<p><strong>Open source edition</strong></p>
<p>Yesterday I read a <a href="https://www.linux-gamers.net/smartsection.item.56/virtualbox-vs-qemu.html">review</a> saying that <a href="https://www.virtualbox.org/">VirtualBox</a> performs better than VMware, so I decided to try it out. It turns out to be a good experience. The installation is easy enough on Debian. I use sid (still in development, a.k.a. unstable) version of Debian, the open source edition (OSE) of VirtualBox is in the pool already. So I installed it with synaptic. VirtualBox's GUI is somewhat similar to VMware. It's very easy to create a virtual machine (VM). Just select OS type of the guest system, VirtualBox will make suggestions on several virtual machine parameters such as memory size and hard-disk size, etc. I selected Windows Vista (BTW, according to Microsoft, only Vista business and ultimate editions are legal to use in virtual machines, see <a href="https://blogs.zdnet.com/Bott/?p=159">here</a>) as my guest system, it suggested 512MB memory and 20GB hard-disk. For a choice of WindowsXP, it suggested 192MB memory and 10GB harddisk. Of course, these are just recommended minimums. User can change it anytime after the virtual machine is created.</p>
<p>After creating a VM, I set out to install Vista. After starting the VM, it says the kernel module couldn't be found: I forgot to build VirtualBox's kernel module. This requirement is similar to VMware, where kernel module has to be built for the running kernel. I believe this will put many potential users off. Here, I think Debian installation script should build the module automatically. Another possibility is to let Linux mainline kernel having these modules built in. I read somewhere that the future seems to head to that direction (see <a href="https://kvm.qumranet.com/kvmwiki">kvm</a>). For Debian, building and installing a kernel module cannot be simpler. Just use module-assistant, issue one command as root:</p>
<p><code>m-a a-i virtualbox-ose-source</code></p>
<p>, and it's all done. To load the module on boot, add a line <em><code>vboxdrv</code></em> in <em>/etc/modules</em>. Now you need to add yourself to the <em>vboxusers</em> group and reboot, or you will get an error “VirtualBox kernel driver not accessible, permission problem …”. After rebooting, I started the virtual machine and were ready to install Vista. Now I got a small problem. My Thinkpad X61 laptop does not have CD/DVD, and I only has a portal CD writer, not a DVD reader, but my never-used-before Vista business edition (my wife got it for free by participating in some Microsoft activities, in case you want to know) is on a DVD. Fortunately, VirtualBox allows an ISO image to be mounted as an CD/DVD. One of my desktop machines has a DVD writer, so I ripped the Vista DVD into an ISO image, and copied it over to my laptop. Problem solved. Now I could install Vista in the virtual machine. The installation of Vista on VM is uneventful, except that Vista does not have the network driver for the VirtualBox's virtual network card - an AMD PCNET card. Following <a href="https://jhcore.com/2007/03/25/vista-on-ubuntu-using-virtualbox">this suggestion</a>, I downloaded and built an ISO image for the driver, and installed it in Vista. Now I got a functional Vista on top of Linux.</p>
<p><img src="https://farm3.static.flickr.com/2246/1849706026_8c9d323a32.jpg" id="__mce_tmp" /></p>
<p>I did not do any formal benchmarks since it has been done, but I can confirm that Vista seems to be running well in VirtualBox. It feels smoother than a Win2k in VMware on my Thinkpad X31. What I like about VirtualBox is its support of tight integration between host desktop and guest system. To get integration, from the Devices menu, click “Install Guest Additions” and allow Vista to install them. Once installed, VirtualBox support a "seamless mode", where the guest system's desktop background is supressed, only application windows are shown. This feels like the guest system applications behave just like regular applications on the host desktop. In my case, Vista coexists very well with my KDE desktop running Compiz-Fusion 3D desktop. I have a few screenshots above showing off some Windows Vista applications on Compiz-Fusion. I guess the fluid and dynamic nature of the interaction has to be seen with a video to appreciate. However, I am not going to make one at this moment since my laptop is not powerful enough for getting a good recording frame-rate, and I don't have a video camera at hand. In addition, VirtualBox has a built-in clipboard that supports direct copy/paste between guest and host systems, which I find very useful. Of course, shared directories can be created so that host and guest system can share files (does not work with Vista yet, see below). All these features make VirtualBox the nicest free virtualization solution I've seen for desktop use.</p>
<p><img src="https://farm3.static.flickr.com/2218/1849706028_edccc7a3b7.jpg" id="__mce_tmp" width="500" height="375" /></p>
<p><strong>Binary edition for personal and evaluation use</strong></p>
<p>VirtualBox also offers a commerical edition that has USB and remote desktop protocol support. This edition is closed source, but free binaries can be downloaded for personal and evaluation use. Some people said that it's faster. So I uninstalled the open source edition and installed the Debian binary of this non-open-source version. The installation is easier, since the installation script automatically build the kernel module for you. I tried the USB functionality in Vista guest, and it did NOT work as I expected. I inserted a USB key, first the Linux host picked it up as usual, and offered me to open it as a folder. I chose "Do nothing". VirtualBox also picked it up, and I could right click the USB icon to mount it. Once I did, Vista found it, and started searching for a driver. Unfortunately, it could not find a driver for it. I thought that USB keys were standard devices and there shouldn't be a need for drivers in Vista. I tried to mount my fingerprint reader, no luck either. I don't know this is a problem of Vista or VirtualBox, it does not work out. What's more, after this around of meddling, the virtual machine became less stable as before.</p>
<p><strong>Update:</strong> I tried to work out the USB feature again. This time it works. There are two things need to be done: 1. Change the udev rule for usb_devices in /etc/udev/rules.d/020_permission.rules from mode 0664 to 0666, so everyone can access it. Also, change /etc/fstab, so the usbfs line has mode 666 as well. Although this sounds like a security risk, I don't think it's a big deal. My machine is a laptop, not a server, if they can use your usb devices, they have already broken in. 2. Set up filters for the devices in VirtualBox GUI. If you plug the device in, it actually fill in values for filters for you. It's pretty nice. However, I think better documentation is needed.</p>
<p>One thing that does not work on both editions (version 1.5.2) is the shared folders feature for Vista guest. VirtualBox's user manual said that only Win2k, WinXP, Linux 2.4 and 2.6 guests are supported for shared folders. I found that's to be true. I hope they will add support for Vista guest in the near future.</p>Living Alarm Clock2007-11-02T19:04:00-07:002007-11-02T19:04:00-07:00Yunyaotag:yyhh.org,2007-11-02:/blog/2007/11/living-alarm-clock<p><span style="background-color: #edf5fa"><a href="https://www.youtube.com/watch?v=3S4hNMqDhoo">Video </a></span></p>
<p><span style="background-color: #edf5fa">Think about this --- I have two of them!</span></p>I love Waffle2007-11-02T18:15:00-07:002007-11-02T18:15:00-07:00Yunyaotag:yyhh.org,2007-11-02:/blog/2007/11/i-love-waffle<iframe width="560" height="315" src="https://www.youtube.com/embed/kMvDKiIYc58" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<p>Unlike most cats, Mayori's favorite food is not tuna or chicken. She loves waffle. She would jump up and down when I eat waffle until she gets a piece of it. Tom sometimes got slaped by Mayori because she thought he would rob her waffle. 😛</p>Laser pointer drove kittens crazy2007-11-01T00:46:00-07:002007-11-01T00:46:00-07:00Huahaitag:yyhh.org,2007-11-01:/blog/2007/11/laser-pointer-drove-kittens-crazy<p>See for yourself. Be careful though, you don't want to hurt their precious eyes.</p>
<iframe frameborder="0" height="350" src="https://www.youtube.com/embed/Kd8akpcF-hY" width="425">
</iframe>Earth Quake2007-10-31T06:45:00-07:002007-10-31T06:45:00-07:00Yunyaotag:yyhh.org,2007-10-31:/blog/2007/10/earth-quake<p>At 8:03pm, the kittens were feed with their main course (dry food) and dessert (can food and egg). I just finished cooking my own dinner, put the serving tray with my dinner to the coffee table, and was about to enjoy my meal while chatting with Huahai on my …</p><p>At 8:03pm, the kittens were feed with their main course (dry food) and dessert (can food and egg). I just finished cooking my own dinner, put the serving tray with my dinner to the coffee table, and was about to enjoy my meal while chatting with Huahai on my cell. It just seem to be a normal weekday night for me these days. </p>
<p>Before I took the first bite, however, I heard some huge noise and everything inside the apartment started shaking violently along the building itself. The kittens who were wondering around me startled and quickly ran away. Gone though a few earth quake before (once during a middle term exam), I immediately realized what has happened and told Huahai "We are having a earth quake here." </p>
<p>The first thing came to my mind is to grab the kittens and my purse, hide in the closet and then ran out once the shake stop. However, the kittens were nowhere to find. While it was still shaking, I ran up and down the apartment and was trying find them while trying to tell Huahai what were happening. This 30 seconds or so is perhaps the longest 30 seconds ever in my whole life ... Finally, After searching the bedroom, the closet and the bathroom, I found them under the sofa. It was still shaking, I grabbed Tom and quickly squeezed him into the carrier. Mayori (JiaoJiao), however, was obviously very scared and wouldn't came out. By the time I moved the sofa and got her out and squeezed into the carrier. The shaking stopped. </p>
<p>I turned on the TV, hoping that there would be broadcast on what has happened and what I should do. However, all the channels were just broadcasting the usual shows. Following Huahai's suggestion, I ran outside to see whether other people were running outside. Nobody was outside. Everything seemed to be back to normal again. So I decided to stay at home, watching TV and waiting for the news update while keeping the kittens in the carrier so that I could run out quickly if needed. In 10 minutes or so, KRON4 started to have news on the earth quake. Then I learned that it was 5.6 degree earth quake and after that much more information about what has happened earlier. It was not until 20 minutes later the kittens started to calm down and are willing eat their favorite treat. </p>
<hr>
<h2>Lesson learned: The first thing to do in the weekend--- preparing the emergency kits (one at garage and one at home): <a href="https://www.72hours.org/index.html">https://www.72hours.org/index.html</a></h2>
<p>Side story: This is the second time I am trying to writing "essentially" the same blog. Last time before I got the chance to hit the submit button, Tom jumped up to the keyboard and hit some magic key and oops .. what I was writing was gone.</p>Tom and Mayori's SUV2007-10-31T04:28:00-07:002007-10-31T04:28:00-07:00Huahaitag:yyhh.org,2007-10-31:/blog/2007/10/tom-and-mayoris-suv<p><span style="font-size: 0.9em; margin-top: 0px;"><a href="https://www.flickr.com/people/yyhh/"><br>
</a> </span></p>
<p>The most environment friendly SUV - human powered!</p>
<p><img alt="suv" src="https://farm3.static.flickr.com/2342/1806569403_a3951d73dd.jpg"></p>"Compiz-Fusion on KDE"2007-10-29T00:39:00-07:002007-10-29T00:39:00-07:00Huahaitag:yyhh.org,2007-10-29:/blog/2007/10/compiz-fusion-on-kde<p><strong>Introduction</strong><br>
Nowadays, it is not uncommon to see people multi-tasking with a dozen of windows open. With an 12 inch small screen, Thinkpad X61 really needs an efficient window manager for me to get serious work done. I have been struggling to find a good choice. Of course, 3D desktop …</p><p><strong>Introduction</strong><br>
Nowadays, it is not uncommon to see people multi-tasking with a dozen of windows open. With an 12 inch small screen, Thinkpad X61 really needs an efficient window manager for me to get serious work done. I have been struggling to find a good choice. Of course, 3D desktop seemed to be a reasonable candidate. However, I was quite hesitated to jump on the 3d desktop bandwagon before. One of the reasons is that I did some scientific research work on 3D virtual environment as a PhD student several years ago, and I knew the technology was quite limited in term of mimicking human interaction with the real world. And the benefit of 3D vs 2D wasn't really well established, even in theory. But now almost every vendor is having a 3D desktop project going on right now, I think I should probably give them a try.</p>
<p>Being a Linux user (I use Debian + KDE), I look for open source solution. The hottest project on open source 3d desktop seems to be compiz and its friends beryl. There are plenty of <a href="https://youtube.com/results?search_query=compiz-fusion&search=Search">demo videos of them on youtube</a>. These two projects recently merged back, and the new project is called <a href="https://www.compiz-fusion.org/">Compiz-Fusion</a>. They just released their latest version compiz-fusion 0.60 on Oct. 20, 2007. So I headed towards their download page, and fetched all the tar balls. It's strange that they did not package the whole thing into a simple tar ball. Anyway, it's not a big deal. But you have to follow certain order to compile and install the pieces. It took me a while to find <a href="https://wiki.compiz-fusion.org/Installation">the page about this specific order</a>. Also, you need to install a bunch of packages to satisfy all the dependencies. For an experienced Linux user, this is not a problem. It is not so with anybody else though. Of course, most of the Linux distributions package some earlier versions of compiz or beryl, but the volatile nature of 3d desktop development makes those packages unattractive, since they are not supported as upstream developers have moved on to newer, but completely different versions.</p>
<p><strong>Installation</strong></p>
<p>Once the compiz-fusion 0.60 is compiled and installed, you should hold in check your urge to use it immediately. First, you need to configure your X server. This aspect is pretty <a href="https://wiki.compiz-fusion.org/Hardware/Intel">well documented</a> for my Intel 965GM graphic chip on X61. It involves just a few edits in <em>/usr/X11/xorg.conf</em>. Once X server is setup and reloaded, you can give compiz-fusion a spin by issuing <em>compiz --replace</em> shell command. Unfortunately, this is usually when the frustration begins. If you are lucky and compiz's working, it brings about some seemly disastrous results: all windows title bars disappear so you cannot move them, programs crash, etc. If you are not lucky, nothing happens, or you get some obscure error messages. My experience progressed from being unlucky to lucky, and eventually, to success.</p>
<p>In the unlucky stage, I got this seemly popular error message:</p>
<p>/usr/bin/compiz (core) - Error: Another window manager is already running on screen: 0<br>
/usr/bin/compiz (core) - Fatal: No manageable screens found on display :0</p>
<p>However, the reason is hard to find. After a really lengthy search on the Web, I finally found the problem: I previously disabled desktop icon in KDE. If it is the case, the default windows manager in KDE, called kwin, will refuse to relieve the control (I found it on a ubuntu forum, can't remember exactly where). So I re-enabled desktop icon in KDE control center. Now I got a similar, yet also popular error message:</p>
<blockquote>
<p>compiz (core) - Fatal: GLX_EXT_texture_from_pixmap is missing<br>
compiz (core) - Error: Failed to manage screen: 0<br>
compiz (core) - Fatal: No manageable screens found on display :0.0</p>
</blockquote>
<p>This one is easier to solve. For Intel based graphic chip, direct rendering with pixmap does not work. So according to the Compiz wiki, I need to specify indirect rendering with an environment variable, use <em>LIBGL_ALWAYS_INDIRECT=1 compiz --replace</em> to start compiz.</p>
<p>Once compiz-fusion is started correctly, it is a great window manager. You can do all the wobbly windows, cube desktop, shifting windows and other dizzily effects you've seen on videos. It 's fast on this slim laptop with only an Intel integrated graphic chip. Compiz-Fusion has a plugin architecture that allows third parties to develop new effects and widgets. Open compiz-fusion configuration manager <em>ccsm</em>, you will find many such plugins. New plugins are developed daily. What I find most useful are those window managing plugins. For example, with Scale plugin enabled (it's default), when you move mouse over to top right corner (all actions are configurable), all the windows on the desktop slide and scale to make a nice bird-eye view, very convenient for switching between windows. And the often-seen cube desktop is useful too. And they are several others.</p>
<p><strong>Setup Compiz-Fusion as Default Window Manager in KDE</strong></p>
<p>Since I like compiz-fusion so far. I would like to keep it as my default window manager for now. The best way of doing that is to create a separate Compiz-Fusion session, so if things go bad with Compiz-Fusion, you can still go back to regular KDE or Gnome session. To do that, we create a desktop file for Compiz-Fusion session, the desktop manager such as kdm or gdm (which I use, for its support of ThinkFinger) will pick it up and make a session menu entry in the greeting screen. My desktop file is <em>/usr/share/xsessions/compiz-fusion.desktop</em>, and it contains:</p>
<p><code>[Desktop Entry] Encoding=UTF-8 Name=Compiz-Fusion Exec=/usr/local/bin/start-compiz-fusion.sh Icon= Type=Application</code></p>
<p>Here, <em>/usr/local/bin/start-compiz-fusion.sh</em> tells KDE to use compiz-fusion as the default window manager. This way, the original KDE window manager, kwin, will not be loaded and then unloaded. This method will solve a lot of display problems people have reported online, such as system tray items getting pushed out of system tray, gobbled displays, disappearing window title bars, etc. This script contains:</p>
<p><code>#!/bin/sh export KDEWM="/usr/bin/compiz-fusion" exec startkde</code></p>
<p>Finally, <em>/usr/bin/compiz-fusion</em> contains the actual call to compiz, so make it executable. In my case, it is:</p>
<p><code>#!/bin/sh LIBGL_ALWAYS_INDIRECT=1 compiz --replace --sm-disable ccp</code></p>
<p><strong>Workaround to Suspend Problem</strong></p>
<p>After setting up Compiz-Fusion as my default window manager. I set out to test its compatibility with my other system configurations. I indeed found one problem with putting my X61 to sleep using s2ram. The sleep went very well, maybe too well, the laptop immediately and automatically waked up! This was extremely annoying. Again, an obscure workaround was found. Basically, you need to open up <em>ccsm</em>, go to "General Options" -> "Display Settings" tab, and uncheck "Sync to VBlank". Apparently, this video card setting allows some general purpose events (GPE event) to be generated, even after sleep, and the ACPI daemon picks them up, thus waking up the system. The root of this problem seems to be a Linux kernel issue. Disabling "Sync to VBlank" might have a slight distortion effect on the 3D desktop if you spin the cube too hard, however, I find that barely noticeable.</p>
<p>In summary, the latest 0.60 release of Compiz-Fusion seems to work very well with my brand new Thinkpad X61. And 3D desktop seems to be of some usefulness. Let me try it out for more days.</p>A Thinkpad X61 Hotkeys Solution on Debian Linux2007-10-28T23:41:00-07:002007-10-28T23:41:00-07:00Huahaitag:yyhh.org,2007-10-28:/blog/2007/10/a-thinkpad-x61-hotkeys-solution-on-debian-linux<p>On my old Thinkpad X31, there is a nice little program called <a href="https://www.nongnu.org/tpb/">tpb</a> that makes all Thinkpad hotkeys work on Linux. However, that project hasn't been updated for two years, and tpb does not work with the newer Thinkpad models. On my new X61, notably, the sound volume controls are …</p><p>On my old Thinkpad X31, there is a nice little program called <a href="https://www.nongnu.org/tpb/">tpb</a> that makes all Thinkpad hotkeys work on Linux. However, that project hasn't been updated for two years, and tpb does not work with the newer Thinkpad models. On my new X61, notably, the sound volume controls are broken: volume UP and volume Down keys produce the same effect - bring the volume to the half level. It seems that piece of hardware called nvram, on which tpb relies, now produces different values than older models. So, I have to ditch tpb. After some trial and errors, I worked out a mixed solution that made all keys work as expected.</p>
<p><strong>What's needed</strong></p>
<p>* <a href="https://www.kernel.org/">Newer kernel</a>. At least 2.6.16 or above (not sure exact version number).</p>
<p>* <a href="https://acpid.sourceforge.net/">acpid</a>. Newer laptops all support ACPI, so acpid should be used. I believe all linux distribution has it.</p>
<p>* <a href="https://ibm-acpi.sourceforge.net/">thinkpad_acpi</a>. This kernel module deals with Thinkpad hardware and generate ACPI events, such as temperature change, function key press, docking, etc. This module is included in the mainline kernel since 2.6.10. The version included in kernel 2.6.22 is thinkpad_acpi 0.14. The latest version is 0.18. I find 0.14 works fine. Maybe 0.18 is better, I don't know. If this module is loaded, <em>cat /proc/acpi/ibm/driver</em> should show its version number. If not, load the module with <em>modprobe thinkpad_acpi</em>. If you want it autoloaded on boot, put a line <em>thinkpad_acpi</em> in <em>/etc/modules</em>. If your kernel doesn't has this module (unlikely), you will have to download the source and build the module yourself.</p>
<p>* <a href="https://sourceforge.net/projects/powersave/">powersaved</a> This daemon is what actually handles ACPI events. In the past, people put ACPI events handling scripts in <em>/etc/acpi</em> directory. Now this is not recommended. So you should not install similar packages such as <em>acpi-support</em>, <em>hibernate</em> scripts, etc. Instead, user space program such as <em>powersaved</em> should handle ACPI events. Therefore, all your ACPI customizations should be done under either <em>/usr/lib/powersave/scripts</em> or <em>/etc/powersave</em></p>
<p>* <a href="https://suspend.sourceforge.net/">uswsusp</a> This user space software suspend package is called by powersaved to actually do sleeping (i.e. saving state in RAM, so sleep and resume are quick) and hibernation (i.e. save state on disk, so it lasts).</p>
<p>All these are already packaged in Debian. Just use apt-get to install them.</p>
<p><strong>What's worked: without configuration</strong></p>
<p>Without any software, sound Mute key and Thinklight key always work, they are hardware controlled I think.</p>
<p>With the above package installed, "Fn+F12 hibernate" worked without any problem. "Fn+F4 sleep" may or may not work. Please follow the suggestions in this <a href="https://en.opensuse.org/S2ram">s2ram</a> documentation, and test the command options in order, until sleep works. My X61 worked with <em>s2ram -f -a 1</em>, so I stopped testing other options. Once found a successful combination, edit <em>/usr/lib/powersave/sleep</em>, so that these two options reads</p>
<p><code>SUSPEND2RAM_FORCE="yes" SUSPEND2RAM_ACPI_SLEEP="1" #use your successful -a number here, mine is 1</code></p>
<p>"Fn+F5 toggle bluetooth" seems to work, as I can turn the bluetooth LED on and off with it and get corresponding KPowersave notification (I am on KDE).</p>
<p>I do not have a dock, so I can't test "Fn+F9 docking".</p>
<p>"Fn+F2 lock screen", "Fn+F7 toggle display", "Fn+Home brightness up", "Fn+End brightness down", "Fn+space zoom" , and "ThinkVantage", did not work out of box. But ACPI sees them, so I configured powersaved to make them work. See below.</p>
<p>"Volume Up/Down", "Fn+up stop", "Fn+down play", "Fn+left rewind", "Fn+right forward", "Page Left/Right", "Windows", and "Menu" did not work out of box, but X sees them, so I configured Xmodmap and KDE shortcuts to make them work. See below.</p>
<p>There's a battery icon on "Fn+F3", pressing it turned screen blank, but the backlight was still on, so it's useless. I used powersaved to make it a switch to go into power save mode - low LCD brightness and low power level. See below.</p>
<p>From the icon on it, "Fn+F8" seems to be a touchpad/touchpoint switch, and pressing it had no effect, since X61 doesn't have a touchpad. I made it a switch to presentation mode - no screensaver, no auto sleep, etc. See below.</p>
<p><strong>Configure ACPI hotkeys with powersaved</strong></p>
<p>Most Thinkpad function keys generate ACPI events. I use powersaved to hand ACP events. First I tell powersavd to use my own ACPI events handler by editing <em>/etc/powersave/events</em> file, and change the line <em>EVENT_OTHER="ignore"</em> to <em>EVENT_OTHER="thinkpad_acpi_events"</em>.</p>
<p>Now I create a file <em>/usr/lib/powersaved/scripts/thinkpad_acpi_events</em>, which looks like this:</p>
<p><font face="monospace" size="1em"><br>
<font color="#a0b0c0"><em>#!/bin/bash</em></font><br>
<font color="#a0b0c0"><em>###########################################################################</em></font><br>
<font color="#a0b0c0"><em># #</em></font><br>
<font color="#a0b0c0"><em># Powersave Daemon #</em></font><br>
<font color="#a0b0c0"><em># #</em></font><br>
<font color="#a0b0c0"><em># Copyright (C) 2005,2006 SUSE Linux Products GmbH #</em></font><br>
<font color="#a0b0c0"><em># #</em></font><br>
<font color="#a0b0c0"><em># Author(s): Based on code by Stefan Seyfried #</em></font><br>
<font color="#a0b0c0"><em># Hotkey support by Alex Solovey, <a href="mailto:solovey@us.ibm.com">solovey@us.ibm.com</a> #</em></font><br>
<font color="#a0b0c0"><em># Enhancements (docking station support) by Holger Macht #</em></font><br>
<font color="#a0b0c0"><em># #</em></font><br>
<font color="#a0b0c0"><em># This program is free software; you can redistribute it and/or modify it #</em></font><br>
<font color="#a0b0c0"><em># under the terms of the GNU General Public License as published by the #</em></font><br>
<font color="#a0b0c0"><em># Free Software Foundation; either version 2 of the License, or (at you #</em></font><br>
<font color="#a0b0c0"><em># option) any later version. #</em></font><br>
<font color="#a0b0c0"><em># #</em></font><br>
<font color="#a0b0c0"><em># This program is distributed in the hope that it will be useful, but #</em></font><br>
<font color="#a0b0c0"><em># WITHOUT ANY WARRANTY; without even the implied warranty of #</em></font><br>
<font color="#a0b0c0"><em># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU #</em></font><br>
<font color="#a0b0c0"><em># General Public License for more details. #</em></font><br>
<font color="#a0b0c0"><em># #</em></font><br>
<font color="#a0b0c0"><em># You should have received a copy of the GNU General Public License along #</em></font><br>
<font color="#a0b0c0"><em># with this program; if not, write to the Free Software Foundation, Inc., #</em></font><br>
<font color="#a0b0c0"><em># 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #</em></font><br>
<font color="#a0b0c0"><em># #</em></font><br>
<font color="#a0b0c0"><em>###########################################################################</em></font><br>
<font color="#a0b0c0"><em>#</em></font><br>
<font color="#a0b0c0"><em># thinkpad_acpi_events - process ThinkPad specific ACPI events generated by</em></font><br>
<font color="#a0b0c0"><em># ibm_acpi driver and log them to syslog</em></font><br>
<font color="#a0b0c0"><em>#</em></font><br>
<font color="#a0b0c0"><em># Configuration changes required for the script to work with powersave package:</em></font><br>
<font color="#a0b0c0"><em># 1) Set EVENT_OTHER="thinkpad_acpi_events" in /etc/sysconfig/powersave/events</em></font><br>
<font color="#a0b0c0"><em># 2) Place this script into /usr/lib/powersave/scripts directory</em></font><br>
<font color="#a0b0c0"><em>#</em></font><br>
<font color="#a0b0c0"><em>#########################################################################</em></font><br>
<font color="#a0b0c0"><em>#</em></font><br>
<font color="#a0b0c0"><em># Customized by Huahai Yang to support Thinkpad X61 ACPI keys on KDE.</em></font><br>
<font color="#a0b0c0"><em># Added on screen visual feedback for key press, the following keys are</em> </font><br>
<font color="#a0b0c0"><em># supported on top of existing powersaved supported keys:</em></font><br>
<font color="#a0b0c0"><em>#</em></font><br>
<font color="#a0b0c0"><em># - Fn+F1 to start wireless connection</em></font><br>
<font color="#a0b0c0"><em># - Fn+F2 to lock desktop</em></font><br>
<font color="#a0b0c0"><em># - Fn+F3, F6, F9 to switch among Powersave, Performance and Presentation</em></font><br>
<font color="#a0b0c0"><em># mode</em></font><br>
<font color="#a0b0c0"><em># - Fn+F7 to turn on/off external display</em></font><br>
<font color="#a0b0c0"><em># - Fn+F8 to toggle clone/xinerama dual head display mode</em></font><br>
<font color="#a0b0c0"><em># - Fn+F11 to start LAN connection</em> </font><br>
<font color="#a0b0c0"><em># - Fn+Home, Fn+End to increase, decrease LCD brightness</em></font><br>
<font color="#a0b0c0"><em># - Fn+Space to take screenshot</em></font><br>
<font color="#a0b0c0"><em># - ThinkVantage to open konsole</em></font><br>
<font color="#a0b0c0"><em>#</em></font><br>
<font color="#a0b0c0"><em>#########################################################################</em></font><br>
<font color="#5b3674"><em>PATH</em></font>=/bin:/usr/bin:/usr/X11R6/bin:/sbin:/usr/sbin <font color="#a0b0c0"><em># be paranoid, we're running as root.</em></font></p>
<p><font color="#a0b0c0"><em># First, we pull in the helper functions.</em></font><br>
<font color="#408010">. </font><font color="#1060a0"> ${</font><font color="#1060a0">0</font><font color="#408010">%</font>/*<font color="#1060a0">}</font>/helper_functions <font color="#a0b0c0"><em># `dirname $0`/helper_functions</em></font><br>
<font color="#a0b0c0"><em># get_x_user comes from here...</em></font><br>
<font color="#408010">. </font><font color="#1060a0"> ${</font><font color="#1060a0">0</font><font color="#408010">%</font>/*<font color="#1060a0">}</font>/x_helper_functions <font color="#a0b0c0"><em># `dirname $0`/x_helper_functions</em></font><br>
<font color="#007020"><strong>export</strong></font> PATH</p>
<p><font color="#5b3674"><em>ME</em></font>=<font color="#1060a0"> ${</font><font color="#1060a0">0</font><font color="#408010">##</font>*/<font color="#1060a0">}</font> <font color="#a0b0c0"><em># basename $0</em></font></p>
<p><font color="#a0b0c0"><em># argument $4 is set to $EV_ID in helper_functions which is included above</em></font><br>
<font color="#4c8f2f"><strong>if</strong></font> <font color="#408010">[</font> <font color="#4c8f2f"><strong>-z</strong></font> <font color="#408010">"</font><font color="#1060a0"> $EV_ID</font><font color="#408010">"</font> <font color="#408010">]</font><font color="#408010">;</font> <font color="#4c8f2f"><strong>then</strong></font><br>
DEBUG <font color="#408010">"</font><font color="#1060a0"> $ME</font><font color="#4070a0"> 'Sorry, not enough arguments: </font><font color="#1060a0"> $4</font><font color="#4070a0"> is empty.'</font><font color="#408010">"</font> WARN<br>
<font color="#1060a0"> $SCRIPT_RETURN</font> <font color="#1060a0"> $EV_ID</font> <font color="#40a070">1</font> <font color="#408010">"</font><font color="#1060a0"> $ME</font><font color="#4070a0"> finished unsuccessful.</font><font color="#408010">"</font><br>
<font color="#007020"><strong>exit</strong></font> <font color="#40a070">1</font><br>
<font color="#4c8f2f"><strong>fi</strong></font></p>
<p><font color="#a0b0c0"><em># this script run as root, so we need to pretend we are the normal user, or</em></font><br>
<font color="#a0b0c0"><em># X functionalities won't work.</em></font><br>
run_on_xserver<font color="#408010">()</font> <font color="#70a0d0"><em>{</em></font><br>
get_x_user<br>
DEBUG <font color="#408010">"</font><font color="#4070a0">User </font><font color="#1060a0"> $X_USER</font><font color="#4070a0"> display </font><font color="#1060a0"> $DISP</font><font color="#4070a0"> </font><font color="#1060a0"> $1</font><font color="#4070a0"> </font><font color="#408010">"</font> INFO<br>
su - <font color="#1060a0"> $X_USER</font> -c <font color="#408010">"</font><font color="#4070a0">DISPLAY=</font><font color="#1060a0"> $DISP</font><font color="#4070a0"> </font><font color="#1060a0"> $1</font><font color="#408010">"</font><br>
<font color="#70a0d0"><em>}</em></font></p>
<p><font color="#5b3674"><em>HOTKEY</em></font>=<font color="#1060a0"> $3</font></p>
<p><font color="#5b3674"><em>TYPE</em></font>=<font color="#1060a0"> $1</font></p>
<p>DEBUG <font color="#408010">"</font><font color="#4070a0">Custom event script for ThinkPad ibm_acpi driver</font><font color="#408010">"</font> INFO</p>
<p><font color="#a0b0c0"><em># we discard $2 which is the name of the current scheme.</em></font><br>
<font color="#007020"><strong>set</strong> </font><font color="#1060a0"> $HOTKEY</font> <font color="#a0b0c0"><em># powersaved gives us "other '<current_scheme_name>' '<content of /proc/acpi/event>'"</em></font><br>
<font color="#a0b0c0"><em># so we must split $3 to get the contents of /proc/acpi/event.</em></font><br>
<font color="#5b3674"><em>EVENT</em></font>=<font color="#1060a0"> $1</font> <font color="#a0b0c0"><em># "ibm/hotkey"</em></font><br>
<font color="#5b3674"><em>ACPI</em></font>=<font color="#1060a0"> $2</font> <font color="#a0b0c0"><em># "HOTK"</em></font><br>
<font color="#5b3674"><em>WHAT</em></font>=<font color="#1060a0"> $3</font> <font color="#a0b0c0"><em># "00000080"</em></font><br>
<font color="#5b3674"><em>SERIAL</em></font>=<font color="#1060a0"> $4</font> <font color="#a0b0c0"><em># "0000100c" Fn+F12</em></font></p>
<p><font color="#a0b0c0"><em># it is easier to deal with numerical values (for me :-)</em></font><br>
<font color="#007020"><strong>declare</strong></font> <font color="#5b3674"><em>-i</em></font> <font color="#5b3674"><em>VAL</em></font><br>
<font color="#5b3674"><em>VAL</em></font>=0x<font color="#1060a0"> $WHAT</font> <font color="#a0b0c0"><em># hex -> decimal</em></font><br>
<font color="#007020"><strong>declare</strong></font> <font color="#5b3674"><em>-i</em></font> <font color="#5b3674"><em>SER</em></font><br>
<font color="#5b3674"><em>SER</em></font>=0x<font color="#1060a0"> $SERIAL</font> <font color="#a0b0c0"><em># hex -> decimal</em></font></p>
<p><font color="#a0b0c0"><em># on screen display, it's always good to have visual feedback</em></font><br>
<font color="#5b3674"><em>OSD</em></font>=<font color="#408010">"</font><font color="#4070a0">DISPLAY=:0.0 osd_cat -p bottom -o 80 -A center -c green -l 1 -f -*-lucidatypewriter-*-r-*-*-*-240-*-*-*-*-*-*</font><font color="#408010">"</font></p>
<p><font color="#a0b0c0"><em># configration file of kxdocker, needed to change it so kxdocker is started at correct position when display mode</em> </font><br>
<font color="#a0b0c0"><em># changed between clone and xinemera mode</em></font><br>
<font color="#5b3674"><em>KXDOCKER_CONF</em></font>=<font color="#408010">"</font><font color="#4070a0">/home/huahaiy/.kde/share/apps/kxdocker/kxdocker_conf.xml</font><font color="#408010">"</font></p>
<p><font color="#4c8f2f"><strong>if</strong></font> <font color="#408010">[</font> <font color="#408010">"</font><font color="#1060a0"> $EVENT</font><font color="#408010">"</font> <font color="#4c8f2f"><strong>=</strong></font> <font color="#4070a0">"ibm/hotkey"</font> <font color="#408010">]</font><font color="#408010">;</font> <font color="#4c8f2f"><strong>then</strong></font><br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">log event</font><font color="#408010">"</font><br>
<font color="#4c8f2f"><strong>if</strong></font> <font color="#408010">[</font> <font color="#408010">"</font><font color="#1060a0"> $VAL</font><font color="#408010">"</font> <font color="#4c8f2f"><strong>-eq</strong></font> <font color="#40a070">128</font> <font color="#408010">]</font><font color="#408010">;</font> <font color="#4c8f2f"><strong>then</strong></font><br>
<font color="#4c8f2f"><strong>case</strong></font> <font color="#1060a0"> $SER</font> <font color="#4c8f2f"><strong>in</strong></font><br>
4097<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+F1</font><font color="#408010">"</font> <br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">make wireless connection</font><font color="#408010">"</font><br>
/home/huahaiy/bin/wireless.sh <font color="#408010">&</font><br>
<font color="#007020"><strong>;;</strong></font><br>
4098<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+F2</font><font color="#408010">"</font> <br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">lock screen</font><font color="#408010">"</font><br>
<font color="#a0b0c0"><em>#run_on_xserver "dcop kdesktop KScreensaverIface lock"</em> </font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">xscreensaver-command -lock</font><font color="#408010">"</font><br>
<font color="#007020"><strong>;;</strong></font><br>
4099<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+F3</font><font color="#408010">"</font><br>
<font color="#a0b0c0"><em>#if [ -x /opt/thinkpad/pm/onscreen_pm.sh ] ; then</em></font><br>
<font color="#a0b0c0"><em># run_on_xserver "/opt/thinkpad/pm/onscreen_pm.sh start" &</em></font><br>
<font color="#a0b0c0"><em># ACTION="start onscreen_pm applet"</em></font><br>
<font color="#a0b0c0"><em>#else</em></font><br>
<font color="#a0b0c0"><em># run_on_xserver "xset dpms force off" &</em></font><br>
<font color="#a0b0c0"><em># ACTION="blank screen"</em></font><br>
<font color="#a0b0c0"><em>#fi</em></font><br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">enter powersave mode</font><font color="#408010">"</font><br>
powersave -e Powersave<br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">echo 'Power Save Mode' | </font><font color="#1060a0"> $OSD</font><font color="#408010">"</font> <font color="#408010">&</font> <br>
<font color="#007020"><strong>;;</strong></font><br>
4100<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+F4</font><font color="#408010">"</font><br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">suspend-to-ram</font><font color="#408010">"</font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">xscreensaver-command -lock</font><font color="#408010">"</font> <font color="#408010">&</font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">xset dpms force suspend</font><font color="#408010">"</font><br>
<font color="#408010"> . </font><font color="#1060a0"> $SYSCONF_DIR</font>/<font color="#007020"><strong>sleep</strong></font><br>
<font color="#408010">[</font> <font color="#408010">"</font><font color="#1060a0"> $DISABLE_USER_SUSPEND2RAM</font><font color="#408010">"</font> <font color="#4c8f2f"><strong>!=</strong></font> <font color="#408010">"</font><font color="#4070a0">yes</font><font color="#408010">"</font> <font color="#408010">]</font> <font color="#408010">&&</font> powersave <font color="#408010">"</font><font color="#4070a0">--</font><font color="#1060a0"> $ACTION</font><font color="#408010">"</font><br>
<font color="#007020"><strong>;;</strong></font><br>
4101<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+F5</font><font color="#408010">"</font> <br>
<font color="#4c8f2f"><strong>if</strong></font> <font color="#408010">[</font> <font color="#4c8f2f"><strong>-x</strong></font> /opt/thinkpad/ac/onscreen_ac.sh <font color="#408010">]</font> <font color="#408010">;</font> <font color="#4c8f2f"><strong>then</strong></font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">/opt/thinkpad/ac/onscreen_ac.sh start</font><font color="#408010">"</font> <font color="#408010">&</font><br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">start onscreen_ac applet</font><font color="#408010">"</font><br>
<font color="#4c8f2f"><strong>elif</strong></font> <font color="#007020"><strong>grep</strong></font> <font color="#4c8f2f"><strong>-q</strong></font> <font color="#408010">"</font><font color="#4070a0">status.*disabled</font><font color="#408010">"</font> /proc/acpi/ibm/bluetooth <font color="#408010">;</font> <font color="#4c8f2f"><strong>then</strong></font><br>
<font color="#007020"><strong>echo</strong></font><font color="#4070a0"> enable </font><font color="#4c8f2f"><strong>></strong></font> /proc/acpi/ibm/bluetooth<br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">enable blooetooth</font><font color="#408010">"</font><br>
<font color="#4c8f2f"><strong>else</strong></font><br>
<font color="#007020"><strong>echo</strong></font><font color="#4070a0"> disable </font><font color="#4c8f2f"><strong>></strong></font> /proc/acpi/ibm/bluetooth<br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">disable blooetooth</font><font color="#408010">"</font><br>
<font color="#4c8f2f"><strong>fi</strong></font><br>
<font color="#007020"><strong>;;</strong></font><br>
4102<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+F6</font><font color="#408010">"</font> <br>
powersave -e Performance<br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">echo 'Full Performance Mode' | </font><font color="#1060a0"> $OSD</font><font color="#408010">"</font> <font color="#408010">&</font><br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">enter full performance mode</font><font color="#408010">"</font><br>
<font color="#007020"><strong>;;</strong></font><br>
4103<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+F7</font><font color="#408010">"</font><br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">toggle external display</font><font color="#408010">"</font><br>
<font color="#a0b0c0"><em>#echo video_switch > /proc/acpi/ibm/video</em></font><br>
<font color="#4c8f2f"><strong>if</strong></font> run_on_xserver <font color="#408010">"</font><font color="#4070a0">xrandr -q</font><font color="#408010">"</font> <font color="#408010">|</font> <font color="#007020"><strong>grep</strong></font> <font color="#408010">"</font><font color="#4070a0">VGA connected</font><font color="#408010">";</font> <font color="#4c8f2f"><strong>then</strong></font> <br>
<font color="#4c8f2f"><strong>if</strong></font> run_on_xserver <font color="#408010">"</font><font color="#4070a0">xrandr -q</font><font color="#408010">"</font> <font color="#408010">|</font> <font color="#007020"><strong>grep</strong></font> <font color="#408010">"</font><font color="#4070a0">VGA connected [0-9]\+</font><font color="#408010">";</font> <font color="#4c8f2f"><strong>then</strong></font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">echo 'Turn OFF External VGA Display' | </font><font color="#1060a0"> $OSD</font><font color="#408010">"</font> <font color="#408010">&</font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">xrandr --output VGA --off</font><font color="#408010">"</font><br>
<font color="#4c8f2f"><strong>else</strong></font> <br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">echo 'Turn ON External VGA Display' | </font><font color="#1060a0"> $OSD</font><font color="#408010">"</font> <font color="#408010">&</font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">xrandr --output VGA --mode 1024x768</font><font color="#408010">"</font><br>
<font color="#4c8f2f"><strong>fi</strong></font><br>
<font color="#4c8f2f"><strong>else</strong></font><br>
<font color="#a0b0c0"><em># if VGA is unplugged, mark it off, and restart kxdocker with correct position</em></font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">echo 'External VGA Display is DISCONNECTED' | </font><font color="#1060a0"> $OSD</font><font color="#408010">"</font> <font color="#408010">&</font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">dcop kxdocker MainApplication-Interface quit</font><font color="#408010">"</font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">xrandr --output VGA --off</font><font color="#408010">"</font><br>
<font color="#007020"><strong>sed</strong></font> <font color="#4c8f2f"><strong>-i</strong></font> <font color="#4c8f2f"><strong>-e</strong></font> <font color="#408010">'</font><font color="#4070a0">s/LeftForce="-512"/LeftForce="0"/</font><font color="#408010">'</font> <font color="#1060a0"> $KXDOCKER_CONF</font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">kxdocker</font><font color="#408010">"</font><br>
<font color="#4c8f2f"><strong>fi</strong></font><br>
<font color="#007020"><strong>;;</strong></font><br>
4104<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+F8</font><font color="#408010">"</font> <br>
<font color="#a0b0c0"><em>#ACTION="expand screen"</em></font><br>
<font color="#a0b0c0"><em>#echo expand_toggle > /proc/acpi/ibm/video</em></font><br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">toggle monitor layout</font><font color="#408010">"</font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">dcop kxdocker MainApplication-Interface quit</font><font color="#408010">"</font><br>
<font color="#4c8f2f"><strong>if</strong></font> run_on_xserver <font color="#408010">"</font><font color="#4070a0">xrandr -q</font><font color="#408010">"</font> <font color="#408010">|</font> <font color="#007020"><strong>grep</strong></font> <font color="#408010">"</font><font color="#4070a0">VGA connected</font><font color="#408010">";</font> <font color="#4c8f2f"><strong>then</strong></font> <br>
<font color="#4c8f2f"><strong>if</strong></font> run_on_xserver <font color="#408010">"</font><font color="#4070a0">xrandr -q</font><font color="#408010">"</font> <font color="#408010">|</font> <font color="#007020"><strong>grep</strong></font> <font color="#408010">"</font><font color="#4070a0">VGA connected 1024x768+1024</font><font color="#408010">";</font> <font color="#4c8f2f"><strong>then</strong></font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">echo 'Switch to Clone Mode' | </font><font color="#1060a0"> $OSD</font><font color="#408010">"</font> <font color="#408010">&</font> <br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">xrandr --output VGA --pos 0x0 --fb 2048x768</font><font color="#408010">"</font><br>
<font color="#4c8f2f"><strong>else</strong></font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">echo 'Switch to Xinerama Mode' | </font><font color="#1060a0"> $OSD</font><font color="#408010">"</font> <font color="#408010">&</font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">xrandr --output VGA --pos 1024x0 --fb 2048x768</font><font color="#408010">"</font><br>
<font color="#4c8f2f"><strong>fi</strong></font><br>
<font color="#007020"><strong>sed</strong></font> <font color="#4c8f2f"><strong>-i</strong></font> <font color="#4c8f2f"><strong>-e</strong></font> <font color="#408010">'</font><font color="#4070a0">s/LeftForce="0"/LeftForce="-512"/</font><font color="#408010">'</font> <font color="#1060a0"> $KXDOCKER_CONF</font><br>
<font color="#4c8f2f"><strong>else</strong></font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">echo 'External VGA Display is DISCONNECTED' | </font><font color="#1060a0"> $OSD</font><font color="#408010">"</font> <font color="#408010">&</font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">xrandr --output VGA --off</font><font color="#408010">"</font><br>
<font color="#007020"><strong>sed</strong></font> <font color="#4c8f2f"><strong>-i</strong></font> <font color="#4c8f2f"><strong>-e</strong></font> <font color="#408010">'</font><font color="#4070a0">s/LeftForce="-512"/LeftForce="0"/</font><font color="#408010">'</font> <font color="#1060a0"> $KXDOCKER_CONF</font><br>
<font color="#4c8f2f"><strong>fi</strong></font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">kxdocker</font><font color="#408010">"</font><br>
<font color="#007020"><strong>;;</strong></font> <br>
4105<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+F9</font><font color="#408010">"</font><br>
<font color="#a0b0c0"><em>#ACTION="undock"</em></font><br>
<font color="#a0b0c0"><em>#echo undock > /proc/acpi/ibm/dock</em></font><br>
powersave -e Presentation<br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">echo 'Presentation Mode' | </font><font color="#1060a0"> $OSD</font><font color="#408010">"</font> <font color="#408010">&</font><br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">enter presentation mode</font><font color="#408010">"</font><br>
<font color="#007020"><strong>;;</strong></font><br>
4106<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+F10</font><font color="#408010">"</font> <font color="#007020"><strong>;;</strong></font><br>
4107<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+F11</font><font color="#408010">"</font> <br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">make NIC connection</font><font color="#408010">"</font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">echo 'Connecting LAN...' | </font><font color="#1060a0"> $OSD</font><font color="#408010">"</font> <font color="#408010">&</font><br>
/home/huahaiy/bin/nic.sh <font color="#408010">&</font><br>
<font color="#007020"><strong>;;</strong></font><br>
4108<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+F12</font><font color="#408010">"</font><br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">suspend-to-disk</font><font color="#408010">"</font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">xscreensaver-command -lock</font><font color="#408010">"</font> <font color="#408010">&</font><br>
<font color="#408010"> . </font><font color="#1060a0"> $SYSCONF_DIR</font>/<font color="#007020"><strong>sleep</strong></font><br>
<font color="#408010">[</font> <font color="#408010">"</font><font color="#1060a0"> $DISABLE_USER_SUSPEND2DISK</font><font color="#408010">"</font> <font color="#4c8f2f"><strong>!=</strong></font> <font color="#408010">"</font><font color="#4070a0">yes</font><font color="#408010">"</font> <font color="#408010">]</font> <font color="#408010">&&</font> powersave <font color="#408010">"</font><font color="#4070a0">--</font><font color="#1060a0"> $ACTION</font><font color="#408010">"</font><br>
<font color="#007020"><strong>;;</strong></font><br>
4109<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+Backspace</font><font color="#408010">"</font> <font color="#007020"><strong>;;</strong></font><br>
4110<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+Insert</font><font color="#408010">"</font> <font color="#007020"><strong>;;</strong></font><br>
4111<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+Delete</font><font color="#408010">"</font> <font color="#007020"><strong>;;</strong></font><br>
4112<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+Home</font><font color="#408010">"</font><br>
powersave -ku<br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">brighter display</font><font color="#408010">"</font> <br>
<font color="#007020"><strong>;;</strong></font><br>
4113<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+End</font><font color="#408010">"</font><br>
powersave -kd<br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">dimmer display</font><font color="#408010">"</font> <br>
<font color="#007020"><strong>;;</strong></font><br>
4116<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Fn+Zoom</font><font color="#408010">"</font><br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">toggle screen resolution</font><font color="#408010">"</font><br>
<font color="#a0b0c0"><em>#run_on_xserver "/home/huahaiy/bin/toggle-zoom.sh"</em></font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">ksnapshot</font><font color="#408010">"</font><br>
<font color="#007020"><strong>;;</strong></font><br>
4120<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Thinkpad</font><font color="#408010">"</font><br>
run_on_xserver <font color="#408010">"</font><font color="#4070a0">konsole</font><font color="#408010">"</font> <font color="#408010">&</font><br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">launch konsole</font><font color="#408010">"</font><br>
<font color="#007020"><strong>;;</strong></font><br>
*<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Unidentified</font><font color="#408010">"</font> <font color="#007020"><strong>;;</strong></font><br>
<font color="#4c8f2f"><strong>esac</strong></font><br>
<font color="#4c8f2f"><strong>else</strong></font><br>
<font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Unidentified</font><font color="#408010">"</font><br>
<font color="#4c8f2f"><strong>fi</strong></font> <br>
DEBUG <font color="#408010">"</font><font color="#1060a0"> $HOTKEY</font><font color="#4070a0"> hotkey: keycode </font><font color="#1060a0"> $VAL</font><font color="#4070a0"> serial </font><font color="#1060a0"> $SER</font><font color="#4070a0">. action: </font><font color="#1060a0"> $ACTION</font><font color="#4070a0"> </font><font color="#408010">"</font> INFO<br>
<font color="#4c8f2f"><strong>elif</strong></font> <font color="#408010">[</font> <font color="#408010">"</font><font color="#1060a0"> $EVENT</font><font color="#408010">"</font> <font color="#4c8f2f"><strong>=</strong></font> <font color="#4070a0">"ibm/bay"</font> <font color="#408010">]</font><font color="#408010">;</font> <font color="#4c8f2f"><strong>then</strong></font><br>
<font color="#4c8f2f"><strong>case</strong></font> <font color="#1060a0"> $VAL</font> <font color="#4c8f2f"><strong>in</strong></font><br>
1<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Eject lever inserted</font><font color="#408010">"</font> <font color="#007020"><strong>;;</strong></font><br>
3<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Eject Request</font><font color="#408010">"</font> <font color="#007020"><strong>;;</strong></font><br>
*<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Unidentified</font><font color="#408010">"</font> <font color="#007020"><strong>;;</strong></font><br>
<font color="#4c8f2f"><strong>esac</strong></font><br>
DEBUG <font color="#408010">"</font><font color="#1060a0"> $HOTKEY</font><font color="#4070a0"> UltraBay event: </font><font color="#1060a0"> $EVENT</font><font color="#4070a0"> </font><font color="#408010">"</font> INFO<br>
<font color="#4c8f2f"><strong>elif</strong></font> <font color="#408010">[</font> <font color="#408010">"</font><font color="#1060a0"> $EVENT</font><font color="#408010">"</font> <font color="#4c8f2f"><strong>=</strong></font> <font color="#4070a0">"ibm/dock"</font> <font color="#408010">]</font><font color="#408010">;</font> <font color="#4c8f2f"><strong>then</strong></font><br>
<font color="#4c8f2f"><strong>case</strong></font> <font color="#1060a0"> $VAL</font> <font color="#4c8f2f"><strong>in</strong></font><br>
0<font color="#007020"><strong>)</strong></font> <font color="#4c8f2f"><strong>if</strong></font> <font color="#408010">[</font> <font color="#1060a0"> $SER</font> <font color="#4c8f2f"><strong>-eq</strong></font> <font color="#40a070">3</font> <font color="#408010">]</font><font color="#408010">;</font> <font color="#4c8f2f"><strong>then</strong></font> <font color="#a0b0c0"><em># X32 has strange dock code</em></font><br>
<font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Dock requested</font><font color="#408010">"</font><br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">Docking</font><font color="#408010">"</font><br>
<font color="#007020"><strong>echo</strong></font><font color="#4070a0"> dock </font><font color="#4c8f2f"><strong>></strong></font> /proc/acpi/ibm/dock <font color="#40a070">2</font><font color="#4c8f2f"><strong>></strong></font><font color="#408010">&</font><font color="#40a070">1</font><br>
<font color="#4c8f2f"><strong>fi</strong></font><br>
<font color="#007020"><strong>;;</strong></font><br>
1<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Dock requested</font><font color="#408010">"</font><br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">Docking</font><font color="#408010">"</font><br>
<font color="#007020"><strong>echo</strong></font><font color="#4070a0"> dock </font><font color="#408010">></font> /proc/acpi/ibm/dock <font color="#40a070">2</font><font color="#408010">>&1</font><br>
<font color="#007020"><strong>;;</strong></font><br>
3<font color="#007020"><strong>)</strong></font> <font color="#5b3674"><em>HOTKEY</em></font>=<font color="#408010">"</font><font color="#4070a0">Undock requested</font><font color="#408010">"</font><br>
<font color="#5b3674"><em>ACTION</em></font>=<font color="#408010">"</font><font color="#4070a0">Undocking</font><font color="#408010">"</font><br>
<font color="#007020"><strong>echo</strong></font><font color="#4070a0"> undock </font><font color="#408010">></font> /proc/acpi/ibm/dock <font color="#40a070">2</font><font color="#408010">>&1</font><br>
<font color="#007020"><strong>;;</strong></font><br>
<font color="#4c8f2f"><strong>esac</strong></font><br>
DEBUG <font color="#408010">"</font><font color="#1060a0"> $HOTKEY</font><font color="#4070a0">: keycode </font><font color="#1060a0"> $VAL</font><font color="#4070a0"> serial </font><font color="#1060a0"> $SER</font><font color="#4070a0">. action: </font><font color="#1060a0"> $ACTION</font><font color="#4070a0"> </font><font color="#408010">"</font> INFO<br>
<font color="#4c8f2f"><strong>else</strong></font><br>
DEBUG <font color="#408010">"</font><font color="#4070a0">Unidentified event: </font><font color="#1060a0"> $EVENT</font><font color="#4070a0"> </font><font color="#1060a0"> $ACPI</font><font color="#4070a0"> </font><font color="#1060a0"> $WHAT</font><font color="#4070a0"> </font><font color="#1060a0"> $SERIAL</font><font color="#408010">"</font> INFO<br>
<font color="#4c8f2f"><strong>fi</strong></font></p>
<p><font color="#1060a0"> $SCRIPT_RETURN</font> <font color="#1060a0"> $EV_ID</font> <font color="#40a070">0</font> <font color="#408010">"</font><font color="#1060a0"> $ME</font><font color="#4070a0"> finished</font><font color="#408010">"</font><br>
EXIT <font color="#40a070">0</font> </p>
<p></font></p>
<p>Notice that you need to install <em>osd_cat</em> package to get on-screen display, or you can comments out them. Also, I used <em>xscreensaver</em> to lock screen, because KDE screen saver and locker do not support <a href="https://thinkfinger.sourceforge.net/">ThinkFinger</a>. I like the coolness of login and unlocking screen with a finger swipe :) Finally, I use simple scripts to make network connections. Here is <em>nic.sh</em>:</p>
<p><font face="monospace" size="1em"><br>
<font color="#a0b0c0"><em>#!/bin/sh</em></font></p>
<p><font color="#a0b0c0"><em># This script brings up wired network connection (plug in cable first!). With</em> </font><br>
<font color="#a0b0c0"><em># augument "stop", it turns off wireless network interface. Root privilige</em></font><br>
<font color="#a0b0c0"><em># is required to run</em> </font><br>
<font color="#a0b0c0"><em>#</em></font><br>
<font color="#a0b0c0"><em># Author: Huahai Yang, Oct 15, 2007</em></font><br>
<font color="#a0b0c0"><em>#</em></font><br>
<font color="#4c8f2f"><strong>if</strong></font> <font color="#408010">[</font> <font color="#408010">"</font><font color="#1060a0"> $1</font><font color="#408010">"</font> <font color="#4c8f2f"><strong>=</strong></font> <font color="#4070a0">"stop"</font> <font color="#408010">]</font><font color="#408010">;</font> <font color="#4c8f2f"><strong>then</strong></font><br>
ifdown eth0<br>
<font color="#4c8f2f"><strong>else</strong></font> <br>
ifup eth0</p>
<p><font color="#a0b0c0"><em># restart some services that depends on networking</em></font><br>
<font color="#a0b0c0"><em>#/etc/init.d/samba restart</em></font><br>
/etc/init.d/spamassassin restart<br>
<font color="#4c8f2f"><strong>fi</strong></font> </p>
<p></font></p>
<p>And here is <em>wireless.sh</em></p>
<p><font face="monospace" size="1em"><br>
<font color="#a0b0c0"><em>#!/bin/sh</em></font><br>
<font color="#a0b0c0"><em># This script use Matthew Brett's wlan-ui.pl to select a wireless AP to</em> </font><br>
<font color="#a0b0c0"><em># connect to. With augument "stop", it turns off wireless network interface.</em></font><br>
<font color="#a0b0c0"><em># Root privilige is required to run</em> </font><br>
<font color="#a0b0c0"><em>#</em></font><br>
<font color="#a0b0c0"><em># Author: Huahai Yang</em></font><br>
<font color="#a0b0c0"><em>#</em></font><br>
<font color="#4c8f2f"><strong>if</strong></font> <font color="#408010">[</font> <font color="#408010">"</font><font color="#1060a0"> $1</font><font color="#408010">"</font> <font color="#4c8f2f"><strong>=</strong></font> <font color="#4070a0">"stop"</font> <font color="#408010">]</font><font color="#408010">;</font><br>
<font color="#4c8f2f"><strong>then</strong></font><br>
ifconfig eth1 down<br>
/etc/init.d/ipw3945d stop<br>
modprobe <font color="#4c8f2f"><strong>-r</strong></font> ipw3945<br>
<font color="#4c8f2f"><strong>else</strong></font> <br>
/etc/init.d/ipw3945d start<br>
<font color="#5b3674"><em>DISPLAY</em></font>=:0.<font color="#40a070">0</font> wlan-ui.pl</p>
<p><font color="#a0b0c0"><em># restart some services that depends on networking</em></font><br>
<font color="#a0b0c0"><em>#/etc/init.d/samba restart</em></font><br>
/etc/init.d/spamassassin restart<br>
<font color="#4c8f2f"><strong>fi</strong></font> </p>
<p></font></p>
<p><a href="https://wlan-ui.sourceforge.net/wlan-ui_pod.html">wlan-ui.pl</a> is a GTK-2 based little GUI program that scans the available wireless access points, and allows you to connect to one of them. The only configuration needed is to put the name of your wireless card kernel module name in <em>/etc/wlan-uirc</em>, mine has a line:<em> $MODULE='ipw3945'</em></p>
<p><strong>Configure X hotkeys</strong></p>
<p>ACPI does not deal with the rest of the hotkeys. But most of these can be seen by X server, so it's possible to map them to any functions you like.</p>
<p>First, need to get their keycodes. Use <em>xev</em> to do that and write down the keycodes.</p>
<p>Second, edit your <em>~/.Xmodmap</em>, put these keycodes in, assign them reasonable XF86 names, and mine is here:</p>
<div class="highlight"><pre><span></span><code>! Page Left, Right keycode 234 = F19 keycode 233 = F20`
! multimedia
keycode 162 = XF86AudioPlay
keycode 164 = XF86AudioStop
keycode 153 = XF86AudioNext
keycode 144 = XF86AudioPrev
! volume up, down
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
! Windows keys
keycode 117 = XF86MenuKB
keycode 115 = XF86Start
! No Caps Lock
clear lock
! Caps Lock as Win key
add mod4 = Caps\_Lock
</code></pre></div>
<p>Now try <em>xmodmap ~/.Xmodmap</em>, then go to KDE Control Center > Regional and Accessibility > Input Actions, and associate these keys with whatever actions you like.</p>
<p>To autoload your Xmodmap setting, create a file in <em>~/.kde/Autostart</em>, and put the xmodmap command in. Mine has:</p>
<p><code>#!/bin/sh # map keys xmodmap ~/.Xmodmap</code></p>
<p>To properly handle volume up and down keys, I associated these keys with this script:</p>
<p><font face="monospace" size="1em"><br>
<font color="#a0b0c0"><em>#!/bin/sh</em></font><br>
<font color="#a0b0c0"><em>#########################################################################</em></font><br>
<font color="#a0b0c0"><em># Bring up or down sound volume with amixer, with on screen display</em></font><br>
<font color="#a0b0c0"><em># the total volume range is 58.5dB, so we change 4.5dB each run, it takes</em></font><br>
<font color="#a0b0c0"><em># 13 run to go from 0 to 58.5dB</em> </font><br>
<font color="#a0b0c0"><em>#</em> </font><br>
<font color="#a0b0c0"><em># Usage: audio-volume.sh [up|down]</em></font><br>
<font color="#a0b0c0"><em>#</em> </font><br>
<font color="#a0b0c0"><em># Author: Huahai Yang</em></font><br>
<font color="#a0b0c0"><em># Last upated: Oct. 16, 2007</em></font><br>
<font color="#a0b0c0"><em>########################################################################</em></font></p>
<p><font color="#4c8f2f"><strong>if</strong></font> <font color="#408010">[</font> <font color="#408010">"</font><font color="#1060a0"> $1</font><font color="#408010">"</font> <font color="#4c8f2f"><strong>=</strong></font> <font color="#4070a0">"up"</font> <font color="#408010">]</font><font color="#408010">;</font> <font color="#4c8f2f"><strong>then</strong></font><br>
<font color="#5b3674"><em>PERCENT</em></font>=<font color="#ff0000"><strong><span class="underline"> $(</span></strong></font><font color="#70a0d0"><em>amixer</em> </font><font color="#007020"><strong>set</strong></font><font color="#70a0d0"><em> PCM</em> </font><font color="#40a070">4</font><font color="#70a0d0"><em>.5dB+</em> </font><font color="#408010">|</font><font color="#70a0d0"><em> \</em></font><br>
<font color="#70a0d0"><em> sed -n -e</em> </font><font color="#408010">'</font><font color="#4070a0">s/[^\[]*\[</font><font color="#70a0d0"><em>\(</em></font><font color="#4070a0">[0-9]*</font><font color="#70a0d0"><em>\)</em></font><font color="#4070a0">\%\][^\%]*/\1/p</font><font color="#408010">'</font><font color="#70a0d0"><em> -e</em> </font><font color="#408010">'</font><font color="#4070a0">n</font><font color="#408010">'</font><font color="#ff0000"><strong><span class="underline">)</span></strong></font><br>
<font color="#4c8f2f"><strong>elif</strong></font> <font color="#408010">[</font> <font color="#408010">"</font><font color="#1060a0"> $1</font><font color="#408010">"</font> <font color="#4c8f2f"><strong>=</strong></font> <font color="#4070a0">"down"</font> <font color="#408010">]</font><font color="#408010">;</font> <font color="#4c8f2f"><strong>then</strong></font><br>
<font color="#5b3674"><em>PERCENT</em></font>=<font color="#ff0000"><strong><span class="underline"> $(</span></strong></font><font color="#70a0d0"><em>amixer</em> </font><font color="#007020"><strong>set</strong></font><font color="#70a0d0"><em> PCM</em> </font><font color="#40a070">4</font><font color="#70a0d0"><em>.5dB-</em> </font><font color="#408010">|</font><font color="#70a0d0"><em> \</em></font><br>
<font color="#70a0d0"><em> sed -n -e</em> </font><font color="#408010">'</font><font color="#4070a0">s/[^\[]*\[</font><font color="#70a0d0"><em>\(</em></font><font color="#4070a0">[0-9]*</font><font color="#70a0d0"><em>\)</em></font><font color="#4070a0">\%\][^\%]*/\1/p</font><font color="#408010">'</font><font color="#70a0d0"><em> -e</em> </font><font color="#408010">'</font><font color="#4070a0">n</font><font color="#408010">'</font><font color="#ff0000"><strong><span class="underline">)</span></strong></font><br>
<font color="#4c8f2f"><strong>else</strong></font><br>
<font color="#5b3674"><em>PERCENT</em></font>=<font color="#ff0000"><strong><span class="underline"> $(</span></strong></font><font color="#70a0d0"><em>amixer get PCM</em> </font><font color="#408010">|</font><font color="#70a0d0"><em> \</em></font><br>
<font color="#70a0d0"><em> sed -n -e</em> </font><font color="#408010">'</font><font color="#4070a0">s/[^\[]*\[</font><font color="#70a0d0"><em>\(</em></font><font color="#4070a0">[0-9]*</font><font color="#70a0d0"><em>\)</em></font><font color="#4070a0">\%\][^\%]*/\1/p</font><font color="#408010">'</font><font color="#70a0d0"><em> -e</em> </font><font color="#408010">'</font><font color="#4070a0">n</font><font color="#408010">'</font><font color="#ff0000"><strong><span class="underline">)</span></strong></font><br>
<font color="#4c8f2f"><strong>fi</strong></font> </p>
<p>osd_cat <font color="#70a0d0"><em>-b</em></font> percentage <font color="#70a0d0"><em>-P</em></font> <font color="#1060a0"> $PERCENT</font> <font color="#70a0d0"><em>-d</em></font> <font color="#40a070">1</font> <font color="#70a0d0"><em>-p</em></font> bottom <font color="#70a0d0"><em>-o</em></font> <font color="#40a070">80</font> <font color="#70a0d0"><em>-i</em></font> <font color="#40a070">100</font> <font color="#70a0d0"><em>-A</em></font> left <font color="#70a0d0"><em>-c</em></font> green <font color="#70a0d0"><em>-T</em></font> <font color="#408010">"</font><font color="#4070a0">Sound Volume</font><font color="#408010">"</font> <font color="#408010">&</font></p>
<p></font></p>
<p>That's all there is to it. Now all hotkeys work as intended, and with nice on-screen user feedback. Please let me know if I missed anything.</p>
<p><strong>Updated</strong>: I've changed Fn+F8 key to toggle between Clone mode and Xinerama mode of dual head display, please see <a href="https://yyhh.org/blog/2007/11/dual-head-xrandr-1-2-revisited">this post</a> for details.</p>Use XRandR 1.2 to Swtich on External Display for Thinkpad Laptop2007-10-28T15:00:00-07:002007-10-28T15:00:00-07:00Huahaitag:yyhh.org,2007-10-28:/blog/2007/10/use-xrandr-12-to-swtich-on-external-display-for-thinkpad-laptop<p>Thinkpad X61 has an VGA output port, so it supports dual-head display. However, with the Intel GMA965 graphics chipset in X61, the thinkpad_acpi (used to be called ibm_acpi) kernel module does not seem to support switching on or off this VGA port any more. The traditionally used commands, such as …</p><p>Thinkpad X61 has an VGA output port, so it supports dual-head display. However, with the Intel GMA965 graphics chipset in X61, the thinkpad_acpi (used to be called ibm_acpi) kernel module does not seem to support switching on or off this VGA port any more. The traditionally used commands, such as "echo crt_enable > /proc/acpi/ibm/video", no longer work.<br>
Fortunately, the xserver-xorg-video-intel display driver supports xrandr 1.2. extension in recent versions of Xorg X server. So we can use xrandr to dynamically switch on or off the external VGA display, and much more.</p>
<p>It's often necessary to connect a projector through the VGA port and display the same content as the LCD, for example, for presentation purpose. This so called clone mode of dual-head is supported out-of-box with xrandr, no X configuration and no restarting X is necessary. xrandr can detect the presence of the external video connection, even when the external device is not powered on! Let's try it out. First, without connecting anyting to the VGA port, issue xrandr query command:</p>
<p><code>xrandr -q</code></p>
<p>You will get something like this:</p>
<p>Screen 0: minimum 320 x 200, current 1024 x 768, maximum 1024 x 1024<br>
VGA disconnected (normal left inverted right x axis y axis)</p>
<p>LVDS connected 1024x768+0+0 (normal left inverted right x axis y axis) 246mm x 184mm<br>
1024x768 50.0*+ 60.0 40.0</p>
<p>800x600 60.3</p>
<p>640x480 60.0 59.9</p>
<p>Now, connect your an external monitor to the VGA port without powering it on, issue the same xranr query command. The output will be something similar to:</p>
<p>Screen 0: minimum 320 x 200, current 1024 x 768, maximum 1024 x 1024</p>
<p>VGA connected (normal left inverted right x axis y axis)</p>
<p>1024x768 60.0</p>
<p>800x600 60.3</p>
<p>640x480 59.9</p>
<p>LVDS connected 1024x768+0+0 (normal left inverted right x axis y axis) 246mm x 184mm</p>
<p>1024x768 50.0*+ 60.0 40.0</p>
<p>800x600 60.3</p>
<p>640x480 60.0 59.9</p>
<p>This shows the presence of the external VGA device. And the device is given some generic display modes.<br>
Now power on the monitor, you will get something similar to:</p>
<p>Screen 0: minimum 320 x 200, current 1024 x 768, maximum 1024 x 1024</p>
<p>VGA connected (normal left inverted right x axis y axis)</p>
<p>1024x768 75.0 + 84.9 85.0 75.1 75.0 70.1 60.0</p>
<p>832x624 74.6</p>
<p>800x600 84.9 85.1 72.2 75.0 60.3 56.2</p>
<p>640x480 85.0 84.6 75.0 72.8 75.0 60.0 59.9</p>
<p>720x400 85.0 70.1</p>
<p>640x400 85.1</p>
<p>640x350 85.1</p>
<p>LVDS connected 1024x768+0+0 (normal left inverted right x axis y axis) 246mm x 184mm</p>
<p>1024x768 50.0*+ 60.0 40.0</p>
<p>800x600 60.3</p>
<p>640x480 60.0 59.9</p>
<p>Now the monitor's supported modes are detected, and those allowable modes for the 1024x1024 virtual screen are shown.<br>
At this moment, the external VGA device is connected and powered on, but has not been given any video signal (so from a software point of view, it's off). In order to use the VGA device, we need to use xrandr command to "turn it on". This command will do:</p>
<p><code>xrandr --output VGA --auto</code></p>
<p>You should see the cloned view of your LCD on the monitor. Now issue xrandr query command, you will see:<br>
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 1024 x 1024<br>
VGA connected 1024x768+0+0 (normal left inverted right x axis y axis) 312mm x 234mm<br>
1024x768 75.0*+ 84.9 85.0 75.1 75.0* 70.1 60.0<br>
832x624 74.6<br>
800x600 84.9 85.1 72.2 75.0 60.3 56.2<br>
640x480 85.0 84.6 75.0 72.8 75.0 60.0 59.9<br>
720x400 85.0 70.1<br>
640x400 85.1<br>
640x350 85.1<br>
LVDS connected 1024x768+0+0 (normal left inverted right x axis y axis) 246mm x 184mm<br>
1024x768 50.0*+ 60.0 40.0<br>
800x600 60.3<br>
640x480 60.0 59.9<br>
The difference is that VGA now have a string '1024x768+0+0', where 1024x768 obviously is the size, and the 0 0 is the start x y position of the VGA viewpoint within the virtual screen.<br>
Of course, you can "turn it off" by</p>
<p><code>xrandr --output VGA --off</code></p>
<p>Similarly, you can turn off/on your laptop built-in LCD display with</p>
<p><code>xrandr --output LVDS --off</code></p>
<p>or</p>
<p><code>xrandr --output LVDS --auto</code></p>
<p>It's so easy, and it works beautifully. For convenience, you can hook these commands to your favorite ACPI events handling program, such as powersave (if you use this, check out my other blog entry on hotkey setup), pm-utils, etc. Then, by pressing Fn+F7, you can toggle external display on or off, just like you would do in Windows.</p>
<p>Instead of "clone" mode, many people want to set up "real dual-head", i.e. creating a big virtual screen shared by the built-in LCD and the external monitor. The LCD view could be to the leftof, rightof, above, or below the external display view. It's easy to setup, just add a line "Virtual bigX bigY" in the Display subsection of the Monitor section in your /etc/X11/xorg.conf, where bigX and bigY are the desired sizes of the virtual display, e.g. 2048 2048. Restart X, then use xrandr command to turn on/off external display and move the viewpoints anywhere within this virtual screen. You can probably man xrandr to find out more.<br>
I personally do not use "real dual-head", because I have the inverse problem: I have more computers than monitors. What I need is software KVM switch, for which Yunyao have found a solution: <a href="https://synergy2.sourceforge.net/">synergy.</a> Thanks, my dear :) <strong>Update</strong>: I actually did "real dual-head", please see <a href="/blog/2007/11/dual-head-xrandr-1-2-revisited">this post</a> for details.</p>Install MEPIS Linux on X612007-10-28T00:58:00-07:002007-10-28T00:58:00-07:00Huahaitag:yyhh.org,2007-10-28:/blog/2007/10/install-mepis-linux-on-x61<p>I got a brand new Thinkpad X61 laptop last Saturday. Unfortunately, the factory loaded Vista Home Basic was too bloated and ate up 700MB memory from a fresh boot without launching any application! If you know me, you know what I will do - remove Windows and load up Linux!</p>
<p>The …</p><p>I got a brand new Thinkpad X61 laptop last Saturday. Unfortunately, the factory loaded Vista Home Basic was too bloated and ate up 700MB memory from a fresh boot without launching any application! If you know me, you know what I will do - remove Windows and load up Linux!</p>
<p>The Linux distribution of my choice has always been <a href="/www.mepis.org">SimplyMEPIS</a>. It's a KDE distribution, which I like better than its major alternative Gnome. The latest SimplyMEPIS is 7.0rc5. This version of MEPIS went back to their original pure Debian roots. Their 6.x versions were based on Ubuntu, which I always thought was a bad decision. I am glad that they now realized it too.</p>
<p><strong>Installation</strong></p>
<p>Before installation, I changed BIOS setting so that hard-disk is in "compatibility"mode. I downloaded, burned to CD, and then loaded the MEPIS 7.0rc5 LiveCD with a portable USB CD-ROM, because X61 doesn't have an internal CD-ROM (it's a tiny machine). Clicking "Install MEPIS" icon on the desktop started the installation. The installation was smooth as always. I did not touch the 4GB Thinkpad reserved partition, so Thinkpad's Recover and Rescue function should be fine. In case I need to send in the laptop for warranty service, I can always turn it back to factory state.</p>
<p><strong>Graphics and Network</strong></p>
<p>The integrated Intel X3100 graphic chip was not recognized after installation. So I had to work in 640x480 at the beginning. To fix that, I need to get the Intel graphic driver from Debian "testing" pool. First thing first, get a network connection. This version of MEPIS has already gotten the Intel 3945ABG wireless driver installed. After fiddling with the MEPIS Network Assistant software for a few minutes, I got the wireless network working. Installed the Intel graphic driver:</p>
<p><code>apt-get install xserver-xorg-video-intel</code></p>
<p>Then edit <em>/etc/X11/xorg.conf</em>, changed driver to "intel" . So the device section looks like this:</p>
<p><code>Section "Device" Identifier "Generic Video Card" Driver "intel" BusID "PCI:0:2:0" EndSection</code></p>
<p>Hit ctrl-alt-backspace to restart X, and I got a nice 1024x768 desktop.</p>
<p><strong>Sound</strong></p>
<p>The loaded MEPIS kernel version is 2.6.22.1, which still has some bugs that prevent the integrated Intel AD1984 sound chip from working. There are two solutions, both involve changing the kernel. One can download a patch and rebuild snd-hda-intel module to fix it, or can get the latest kernel 2.6.23, which has already fixed the bugs. I sort of did both: I got a valina kernel source 2.6.22.9, applied some patches, and built my own kernel (I omitted the steps here. I can write a guide later if anyone interested).</p>
<p>The reason I did not go with 2.6.23 is that I want the <a href="https://members.optusnet.com.au/ckolivas/kernel/">-ck patch</a>. -ck patch has always been on my Linux desktops because it's better than mainline kernel in term of UI responsiveness. The latest-ck patch is for 2.6.22. It's sad that the author of this patch, <a href="https://apcmag.com/6735/interview_con_kolivas">Con Koliva, has left kernel hacking</a>. So this is also the last -ck patch I will ever get to use. Of course, after plugging in the new kernel, I got the voice back.</p>
<p><strong>Fingerprint Reader</strong></p>
<p>This X61 has a Fingerprint Reader, which of course can be used for authentication purpose. For this, an open source driver <a href="https://thinkfinger.sourceforge.net/">ThinkFinger</a> can be used. Downloaded, unpacked, <em>./configure, make, make install</em>. Tried out the command line tf-tool to enroll and verified my fingerprint, and it worked. Also, I can use console login and su with a finger swipe.</p>
<p>Nice, now I wanted to use it in GUI applications, for example, using a finger swipe to login, to unlock the screensaver, etc. ThinkFinger uses PAM for these purposes. Unfortunately, KDE does not support PAM authentication well, as <a href="https://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader_with_ThinkFinger">the guide on ThinkWiki</a> suggested. Here, the flexibility of open source software kicked in. It turns out that I could just use gnome's display manager GDM, instead of the KDE's default KDM. GDM support ThinkFinger very well. So I installed gdm.</p>
<p><code>apt-get install gdm</code></p>
<p>During the installation, it even asked me to choose between gdm and kdm. Aftr I chose gdm, restart X, I could use my finger to login! Once logged in, I still get a KDE desktop with no loss of functionality. How about screen lock/unlock? Well, I have to remove KDE's kscreensaver, and installed xscreensaver. It handles ThinkFinger very well.</p>
<p>In summary, all the hardware of Thinkpad X61 were supported by Linux. I am happy with this result.<br>
What about the memory usage I was complaining about Vista? Well, some people say that KDE is bloated, but compared with Vista, it's nothing. After booting up my fully loaded KDE desktop, the memory stands at 170MB. Look at Vista's 700MB, how about that for a comparison?</p>Posting blog entry to Drupal from within Vim2007-10-27T21:52:00-07:002007-10-27T21:52:00-07:00Huahaitag:yyhh.org,2007-10-27:/blog/2007/10/posting-blog-entry-to-drupal-from-within-vim<p>Some people may wonder why would anyone want to do this? Well, there are at least two benefits. </p>
<p>One, I can write posts <em>offline</em> with my favorite editor, whenever I feel like it. Then post them from within vim once I got an Internet connection. </p>
<p>Two, I get to use …</p><p>Some people may wonder why would anyone want to do this? Well, there are at least two benefits. </p>
<p>One, I can write posts <em>offline</em> with my favorite editor, whenever I feel like it. Then post them from within vim once I got an Internet connection. </p>
<p>Two, I get to use niceties of vim such as spellchecker, autocompletion and syntax highlighting for html code. I found this solution on <a href="https://www.petersblog.org/node/876">Peter Wilkinson's Blog</a>. I did a few minor changes to make <a href="https://www.petersblog.org/node/876">his script</a> to work with the latest version of python. </p>
<p>A step further, I combined it with <a href="https://www.petersblog.org/node/907">his another post</a>, now I can even use the regular vim syntax to read/post blog entry just like a regular file, e.g. <em>:e blog/4</em> to edit blog entry number 4, <em>:w</em> to post the edited version. Very cool. See the following <em>.vimrc</em> code for details:</p>
<p><font face="monospace" size="1.2em"><br>
<font color="#786000">" post blog entry to my Drupal site</font><br>
<font color="#786000">" Use :e blog/nodeID_which_is_digits to open an existing entry for editting;</font><br>
<font color="#786000">" For example :e blog/12</font><br>
<font color="#786000">" Use :e blog/anything_other_than_digits to open a new entry for editing</font><br>
<font color="#786000">" For example :e blog/blah</font><br>
<font color="#786000">" Use :w to post it. </font><br>
<font color="#786000">" Use :w blog/anything to post a file as a new blog entry</font></p>
<p><font color="#786000">python << EOF</font></p>
<p>strUserName = <font color="#000000">'</font><font color="#077807">your_username</font><font color="#000000">'</font><br>
strPassword = <font color="#000000">'</font><font color="#077807">your_password</font><font color="#000000">'</font><br>
strDrupal = <font color="#000000">'</font><font color="#077807"><a href="https://your.domain.name">https://your.domain.name</a></font><font color="#000000">'</font></p>
<p><font color="#800090">import</font> vim<br>
<font color="#800090">import</font> xmlrpclib<br>
<font color="#800090">import</font> re</p>
<p><font color="#1f3f81"><strong>def</strong></font> <font color="#007080">PostBlog</font>():</p>
<p><font color="#786000">#</font><br>
<font color="#786000"># If first line contains a blog entry ID then edit existing post,</font><br>
<font color="#786000"># otherwise write a new one.</font><br>
<font color="#786000">#</font><br>
nFirstLine = 0<br>
strID = vim.current.buffer[0]<br>
<font color="#1f3f81"><strong>if</strong></font> <font color="#1f3f81"><strong>not</strong></font> re.match( <font color="#000000">'</font><font color="#077807">^\d+$</font><font color="#000000">'</font>, strID):<br>
strID = <font color="#000000">''</font><br>
else:<br>
nFirstLine = 1</p>
<p>strTitle = vim.current.buffer[nFirstLine]<br>
strText = <font color="#000000">"</font><font color="#912f11">\n</font><font color="#000000">"</font>.join( vim.current.buffer[nFirstLine+1:])</p>
<p>oDrupal = xmlrpclib.ServerProxy( strDrupal + <font color="#000000">'</font><font color="#077807">/xmlrpc.php</font><font color="#000000">'</font>)</p>
<p>oPost = { <font color="#000000">'</font><font color="#077807">title</font><font color="#000000">'</font>: strTitle, <font color="#000000">'</font><font color="#077807">description</font><font color="#000000">'</font>: strText}</p>
<p><font color="#1f3f81"><strong>if</strong></font> strID == <font color="#000000">''</font>:<br>
strID = oDrupal.metaWeblog.newPost( <font color="#000000">'</font><font color="#077807">blog</font><font color="#000000">'</font>, strUserName, strPassword, oPost, True)<br>
else:<br>
bSuccess = oDrupal.metaWeblog.editPost( strID, strUserName, strPassword, oPost, True)</p>
<p><font color="#1f3f81"><strong>print</strong></font> <font color="#000000">"</font><font color="#077807">Posted entry %s</font><font color="#000000">"</font> % strID</p>
<p><font color="#786000">#</font><br>
<font color="#786000"># Don't intend to write posts to disk so unmodify the buffer and</font><br>
<font color="#786000"># allow easy quit from VIM.</font><br>
<font color="#786000">#</font><br>
vim.command( <font color="#000000">'</font><font color="#077807">set nomodified</font><font color="#000000">'</font>)</p>
<p><font color="#1f3f81"><strong>def</strong></font> <font color="#007080">ReadBlog</font>( strID ):<br>
<br>
<font color="#786000">#</font><br>
<font color="#786000"># So html plugin is automatically enabled for editing the post </font><br>
<font color="#786000"># with auto-completion and syntax highlighting</font><br>
<font color="#786000">#</font><br>
vim.command(<font color="#000000">'</font><font color="#077807">setfiletype html</font><font color="#000000">'</font>)</p>
<p><font color="#1f3f81"><strong>if</strong></font> <font color="#1f3f81"><strong>not</strong></font> strID.isdigit():<br>
<font color="#1f3f81"><strong>print</strong></font> <font color="#000000">"</font><font color="#077807">New blog entry</font><font color="#000000">"</font><br>
<font color="#1f3f81"><strong>return</strong></font></p>
<p>oDrupal = xmlrpclib.ServerProxy( strDrupal + <font color="#000000">'</font><font color="#077807">/xmlrpc.php</font><font color="#000000">'</font>)</p>
<p>oBlog = oDrupal.metaWeblog.getPost( strID, strUserName, strPassword )</p>
<p>vim.current.buffer[:] = []<br>
vim.current.buffer[0] = strID<br>
vim.current.buffer.append( oBlog[<font color="#000000">'</font><font color="#077807">title</font><font color="#000000">'</font>])<br>
vim.current.buffer.append( <font color="#000000">''</font>)<br>
<font color="#1f3f81"><strong>for</strong></font> strLine <font color="#1f3f81"><strong>in</strong></font> oBlog[<font color="#000000">'</font><font color="#077807">description</font><font color="#000000">'</font>].split(<font color="#000000">'</font><font color="#912f11">\n</font><font color="#000000">'</font>):<br>
vim.current.buffer.append( strLine)</p>
<p><font color="#786000">EOF</font></p>
<p>:au BufWriteCmd blog/* <font color="#1f3f81"><strong>py</strong></font> <font color="#000000">PostBlog</font><font color="#1f3f81"><strong>()</strong></font> <br>
:au BufReadCmd blog/* <font color="#1f3f81"><strong>py</strong></font> <font color="#000000">ReadBlog</font><font color="#1f3f81"><strong>(</strong></font>vim<font color="#1f3f81"><strong>.</strong></font>eval<font color="#1f3f81"><strong>(</strong></font><font color="#077807">"expand('<afile>:t')"</font><font color="#1f3f81"><strong>))</strong></font></p>
<p><font color="#1f3f81"><strong>syntax</strong></font> <font color="#912f11"><strong>on</strong></font> </p>
<p></font></p>Putty as a Chinese Telnet client2005-11-02T00:42:00-08:002005-11-02T00:42:00-08:00Huahaitag:yyhh.org,2005-11-02:/blog/2005/11/putty-as-a-chinese-telnet-client<p>How to display Chinese characters correctly on a Telnet client running on a non-Chinese version of Windows machine? Web browsers today support whatever character encodings, this is not so with Telnet client. If you make a Telnet connection to a Chinese server with Windows telnet client, you will most likely …</p><p>How to display Chinese characters correctly on a Telnet client running on a non-Chinese version of Windows machine? Web browsers today support whatever character encodings, this is not so with Telnet client. If you make a Telnet connection to a Chinese server with Windows telnet client, you will most likely see strange characters on screen.</p>
<p>Solution: <a href="https://www.chiark.greenend.org.uk/~sgtatham/putty/">PuTTY</a>.</p>
<p>Download the PuTTY programs. Better to download the Windows installer, install as usual. </p>
<p>Launch PuTTY, you will see a configuration screen. Choose Wndows->Appearance, change Font settings, to use a Chinese font, such as NSimsun. On the Font dialog, change Script from Western to Chinese_GB2312. </p>
<p>on the configuration screen, choose Windows->Translation, click on the Charater set translation on received data pull-down menu to select the last one: Use font encoding. </p>
<p>Connect to your favirate Chinese BBS server. </p>
<p>If your Windows do not have Chinese fonts already installed, you can install from your Windows installation disk, or download it from somewhere.</p>Dual Head with Xorg on Thinkpad X312005-10-15T04:00:00-07:002005-10-15T04:00:00-07:00Huahaitag:yyhh.org,2005-10-15:/blog/2005/10/dual-head-with-xorg-on-thinkpad-x31<p>My Thinkpad X31 got a small 12.1 inch screen, so I decide to increase the screen real estate by adding an extra monitor. The idea is that the LCD and the CRT monitor will display different part of the same desktop. This dual head solution is sometimes called 'Xinerama' …</p><p>My Thinkpad X31 got a small 12.1 inch screen, so I decide to increase the screen real estate by adding an extra monitor. The idea is that the LCD and the CRT monitor will display different part of the same desktop. This dual head solution is sometimes called 'Xinerama' in X terminology. </p>
<p>I happen to have a 17 inch CRT monitor floating around so I set out to acheive this Xinerama objective. Plug this extra monitor into my laptop, I got a cloned view of the LCD on the CRT, which is nice for presentation, but is not Xinerama. After some googling, I found out that Xorg 6.8.2, the version of X server I am using on this laptop, does not seem to work well with regular xinerama extension setup. However, its display driver for my ATI chip, Radeon, has a native xinerama-like function built in, called MergedFB. The idea is that two monitors will share a big, virtual desktop (framebuffer), and each monitor can then look at different part of the virtual desktop, exactly what I wanted.<br>
Setup is easy. Change /etc/X11/xorg.conf. In Device section, I have </p>
<div class="highlight"><pre><span></span><code><span class="nv">Section</span><span class="w"> </span><span class="s2">"Device"</span><span class="w"> </span>
<span class="w"> </span><span class="nv">Identifier</span><span class="w"> </span><span class="s2">"ATI Radeon"</span><span class="w"> </span>
<span class="w"> </span><span class="nv">Driver</span><span class="w"> </span><span class="s2">"radeon"</span><span class="w"> </span>
<span class="w"> </span><span class="nv">BoardName</span><span class="w"> </span><span class="s2">"Radeon Mobility M6 LY"</span><span class="w"> </span>
<span class="w"> </span><span class="nv">Option</span><span class="w"> </span><span class="s2">"AGPMode"</span><span class="w"> </span><span class="s2">"4"</span><span class="w"> </span>
<span class="w"> </span><span class="nv">Option</span><span class="w"> </span><span class="s2">"AGPFastWrite"</span><span class="w"> </span><span class="s2">"on"</span><span class="w"> </span>
<span class="w"> </span><span class="nv">Option</span><span class="w"> </span><span class="s2">"EnablePageFlip"</span><span class="w"> </span><span class="s2">"on"</span><span class="w"> </span>
<span class="w"> </span><span class="nv">Option</span><span class="w"> </span><span class="s2">"RenderAccel"</span><span class="w"> </span><span class="s2">"on"</span><span class="w"> </span>
<span class="w"> </span>#<span class="w"> </span><span class="nv">radeon</span><span class="w"> </span><span class="nv">specific</span><span class="w"> </span><span class="nv">Xinerama</span><span class="w"> </span><span class="nv">settings</span>:<span class="w"> </span>
<span class="w"> </span><span class="nv">Option</span><span class="w"> </span><span class="s2">"MergedFB"</span><span class="w"> </span><span class="s2">"on"</span><span class="w"> </span>
<span class="w"> </span><span class="nv">Option</span><span class="w"> </span><span class="s2">"MonitorLayout"</span><span class="w"> </span><span class="s2">"LVDS, CRT"</span><span class="w"> </span>
<span class="w"> </span><span class="nv">Option</span><span class="w"> </span><span class="s2">"MetaModes"</span><span class="w"> </span><span class="s2">"1024x768-1024x768 1024x768"</span><span class="w"> </span>
<span class="w"> </span><span class="nv">Option</span><span class="w"> </span><span class="s2">"MergedDPI"</span><span class="w"> </span><span class="s2">"108 108"</span><span class="w"> </span>
<span class="w"> </span>#<span class="k">for</span><span class="w"> </span><span class="nv">external</span><span class="w"> </span><span class="nv">monitor</span><span class="w"> </span>
<span class="w"> </span><span class="nv">Option</span><span class="w"> </span><span class="s2">"CRT2HSync"</span><span class="w"> </span><span class="s2">"30.0-68.0"</span><span class="w"> </span>
<span class="w"> </span><span class="nv">Option</span><span class="w"> </span><span class="s2">"CRT2VRefresh"</span><span class="w"> </span><span class="s2">"50.0-110.0"</span><span class="w"> </span>
<span class="w"> </span><span class="nv">Option</span><span class="w"> </span><span class="s2">"CRT2Position"</span><span class="w"> </span><span class="s2">"RightOf"</span><span class="w"> </span>
<span class="nv">EndSection</span><span class="w"> </span>
</code></pre></div>
<p>Basically, the MergedFB option turns on the pseudo-xinerama setting. MonitorLayout specifies the two monitors: one the laptop LCD, another external CRT. The MetaModes defines two modes: one for the big virtual screen, one for regular small screen. You can use xrandr -s 0/1 to switch them back and forth. CRT2Position says this external monitor should be rendered as if it's at the right of the LCD. Other values include: "LeftOf", "Above", "Below' and "Clone". man radeon to see details. </p>
<p>Well, that's it. Restart X, plug in your external monitor, you will have a big virtual desktop across two displays. And windows on the desktop will be placed intelligently by the system so you won't get half of the window on one monitor another half on another, which is very nice. xrandr -s 0 will switch to a clone mode, where both displays the same view.<br>
There is still a pesty problem. The font size is bad in cloned views! xrandr -q shows that there's two display sizes, 2048x768, and 1024x768, which is fine. The problem is that both modes has the SAME physical sizes! So basically, in the 1024x768 mode, your DPI is cut in half, which renders fine in KDE, but not on other applications, such as PDF reader, OpenOffice, and Firefox, etc. This problem makes this setup unworkable when you don't have an external Monitor. </p>
<p>So right now, I don't have a perfect solution for dual head on Xorg 6.8.2 :( Normally, I will not turn on MergedFB. Only when I need an extra monitor, I will edit xorg.conf to uncomment the MergeFB line, then restart X. </p>
<p>Looking forward to a patch to radeon to solve this problem.</p>LCD and X DisplaySize2005-10-15T04:00:00-07:002005-10-15T04:00:00-07:00Huahaitag:yyhh.org,2005-10-15:/blog/2005/10/lcd-and-x-displaysize<p>Under Linux, have you ever felt that stuff on your brand new LCD display looked blurry, especially with small font sizes, the words start to look fuzzy after a while? Chances are that you did not set the LCD with its optimal resolution. There is an easy fix: </p>
<ol>
<li>
<p>Measure the …</p></li></ol><p>Under Linux, have you ever felt that stuff on your brand new LCD display looked blurry, especially with small font sizes, the words start to look fuzzy after a while? Chances are that you did not set the LCD with its optimal resolution. There is an easy fix: </p>
<ol>
<li>
<p>Measure the actually size of your LCD display area in millimeters (mm). Use a ruler. For example, my small X31 screen measures 240mm (width) by 180mm (height ). </p>
</li>
<li>
<p>Now check the values you have in your X configuration </p>
<p><code>xdpyinfo | grep dimensionsi</code></p>
</li>
</ol>
<p>and compare the mm with the your actual measurement. If the numbers are far off, you do have a misconfiged display size. </p>
<ol>
<li>
<p>Edit /etc/X11/xorg.conf as root, in the "Monitor" section, add a line </p>
<p><code>DisplaySize 240 180</code></p>
</li>
</ol>
<p>Use your measured values of course. </p>
<p>Press Ctrl-Alt-Backspace to restart X server. </p>
<p>Once the X is back, you should see crisp clear display. </p>
<p>The fonts may now look too big or too small, you can change them in window manager settings, be it KDE or GNOME or something else.</p>"Centralized authentication with LDAP + NFS + Samba (Part I: LDAP)"2005-01-17T05:00:00-08:002005-01-17T05:00:00-08:00Huahaitag:yyhh.org,2005-01-17:/blog/2005/01/centralized-authentication-with-ldap-nfs-samba-part-i-ldap<p>Ok, what is centralized authentication? Why bother? Well, if each person in your home or organization uses her/his own computer only, no need for this. However, if you or your organization have a bunch of machines and people need to login to different machines at different times, you've got …</p><p>Ok, what is centralized authentication? Why bother? Well, if each person in your home or organization uses her/his own computer only, no need for this. However, if you or your organization have a bunch of machines and people need to login to different machines at different times, you've got a problem. Do you want to setup an account for each person on each machine? What about people's files? People would like to have access to their files no matter where they login. For this kind of environment, centralized authentication is the way to go.</p>
<p>I am setting up a centralized authentication environment for a small work group, it consists of 7 or so Debian Linux boxes, 2 Sun Solaris boxes, and 5 Windows 2k/XP machines. Since the budget is tight, I will use all open source solution for this setup, namely, OpenLDAP, NFS and Samba.</p>
<p>The actual setup proved to be quite easy, but took us a few days to figure it out, mostly due to the scant documentation available. I hope this series of posts can help alleviate this problem. The first installment deals with seting up LDAP server and client on Debian Linux machines. Most of the steps assume you have root privilige.</p>
<p><strong>LDAP Server</strong></p>
<p>One Linux machine will be used as a dedicated LDAP server for the whole workgroup. It is a Pentium III 1GB with 256MB (an old IBM NetVista, manufactured around 2000), running SimplyMEPIS 2004-6.</p>
<p>Get and install OpenLDAP server (slapd): </p>
<div class="highlight"><pre><span></span><code>apt-get install slapd
</code></pre></div>
<ul>
<li>Enter your DNS domain name: dept.school.edu, this does not have to be a real domain name, just something makes sense. </li>
<li>Enter the name of your organization: whatever name you like for your organization (or your home) </li>
<li>Admin password: this is the root password for this LDAP directory, don't forget this </li>
<li>Allow LDAPv2 protocol: no, since this is a new environment, no backward compatibility needed</li>
</ul>
<p>This will install and start the OpenLDAP server.</p>
<p>Now get some useful LDAP utilities: <code>apt-get install ldap-utils</code></p>
<p>To start populate the LDAP directory, let's import some initial data. We can use migrationtools: </p>
<div class="highlight"><pre><span></span><code><span class="n">apt</span><span class="o">-</span><span class="n">get</span><span class="w"> </span><span class="n">install</span><span class="w"> </span><span class="n">migration_tools</span>
<span class="n">cd</span><span class="w"> </span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">migrationtools</span>
</code></pre></div>
<p>edit migrate_common.ph:</p>
<div class="highlight"><pre><span></span><code>$DEFAULT_BASE = "dc=dept,dc=school,dc=edu" # use your own information here
$IGNORE_UID_BELOW = 1000;
$IGNORE_GID_BELOW = 100;
./migrate_base.pl > base.ldif
./migrate_group.pl /etc/group > group.ldif
./migrate_passwd.pl /etc/passwd > passwd.ldif
</code></pre></div>
<p>The migration scripts do not actually check the encryption methods used for password, and it simply use {crypt} for userPassword field. You will need to edit passwd.ldif, change {crypt} to {md5} if your system use md5 encryption, which is usually true.</p>
<p>Now let's use LDAP utilies to load these ldif (LDAP data interchange format) files into our server:</p>
<div class="highlight"><pre><span></span><code>ldapadd -x -h localhost -W -D 'cn=admin,dc=dept,dc=school,dc=edu' -c -f base.ldif
ldapadd -x -h localhost -W -D 'cn=admin,dc=dept,dc=school,dc=edu' -c -f group.ldif
ldapadd -x -h localhost -W -D 'cn=admin,dc=dept,dc=school,dc=edu' -c -f passwd.ldif
</code></pre></div>
<p>Let's check if these are loaded in the LDAP directory:</p>
<div class="highlight"><pre><span></span><code>ldapsearch -x -h localhost -b 'dc=hci,dc=albany,dc=edu'
</code></pre></div>
<p>There should be a lot of information being printed out, and they should just look like the content of those ldif files.</p>
<p>This pretty much finished the LDAP server setup. Finally, configure the firewall so LDAP port is open. Note that this LDAP server is NOT configured as a LDAP client, so oridnary LDAP users are not able to login to this machine. This enhances the security I think.</p>
<p>We now need to configure the client machines to use this LDAP server for authentication.</p>
<p><strong>LDAP Client</strong></p>
<p>This test client machine is a highend home grown graphics workstation, running the same SimplyMEPIS Linux as the LDAP server machine. We need to get ldap-utils and migrationtools for this client machine too, since there are some accounts on this machine need to be migrated to the LDAP server. We basically did the same thing as that on the server for the migration, only changed the host name from localhost to the name of the LDAP Server.</p>
<p>Now let's enable authentication with LDAP. Get the necessary packages first:</p>
<div class="highlight"><pre><span></span><code>apt-get install libnss-ldap
</code></pre></div>
<ul>
<li>LDAP server host address: enter the IP address of the LDAP server </li>
<li>distinguished name of the search base: dc=dept,dc=school,dc=edu </li>
<li>LDAP version to use: 1, version 3 </li>
<li>database requires login: no, you don't have to login to browse the directory, better performance. </li>
<li>make configuration readable/writable by owner only: yes</li>
</ul>
<p>Now edit /etc/nsswitch.conf, insert "ldap" in front of "compat" for passwd, group and shadow:</p>
<div class="highlight"><pre><span></span><code><span class="n">passwd</span><span class="o">:</span><span class="w"> </span><span class="n">ldap</span><span class="w"> </span><span class="n">compat</span><span class="w"> </span>
<span class="n">group</span><span class="o">:</span><span class="w"> </span><span class="n">ldap</span><span class="w"> </span><span class="n">compat</span><span class="w"> </span>
<span class="n">shadow</span><span class="o">:</span><span class="w"> </span><span class="n">ldap</span><span class="w"> </span><span class="n">compat</span>
</code></pre></div>
<p>This way, system will check with LDAP directory first for user information.</p>
<p>If you have a user who does not have an account on this machine, but has an entry in LDAP directory, suppose this user's uid is 1005, a way of checking if nsswitch is working is:</p>
<div class="highlight"><pre><span></span><code>touch /tmp/test
chown 1005 /tmp/test
ls -l /tmp/test
</code></pre></div>
<p>In the output, if the uid 1005 is replaced by the user name, nsswitch is working, or someting went wrong. The reason is that the system has to check with LDAP to know what user name this uid 1005 is mapped to, since this user does not exist on this machine at all.</p>
<div class="highlight"><pre><span></span><code>apt-get install libpam-ldap
</code></pre></div>
<ul>
<li>Make local root Database admin: no, since we don't want local machine's root to be equivent to the root of the whole network managed by the LDAP directory. </li>
<li>Database requires loggin in: no </li>
<li>Local crypt to use when changing password: 6. md5. We want the local machine encrypt the password first before sending it to the LDAP server for storage.</li>
</ul>
<p>You may want to chmod 644 libnss-ldap.conf, so users other than root can also read the file.</p>
<div class="highlight"><pre><span></span><code>cd /etc/pam.d
</code></pre></div>
<p>Edit common-account, common-auth and common-password, so they looks like this:</p>
<div class="highlight"><pre><span></span><code>auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure try_first_pass
</code></pre></div>
<p>Basically, this let PAM (Pluggable Authentication Modules) try to authenticate with LDAP first, if it fails, fall back to the local machine's accounts.</p>
<p>At this point, you should be able to login with LDAP. Again, the way to test is to login as a user that does NOT exist on this client machine, but exists in LDAP directory.</p>
<p><strong>sshd</strong></p>
<p>Login via SSH needs a bit more tweaks. Edit /etc/ssh/sshd_config</p>
<div class="highlight"><pre><span></span><code>PasswordAuthentication no
ChallengeresponseAuthentication yes
PAMAuthenticationViaKbdInt yes
UsePAM yes
</code></pre></div>
<p><strong>nscd</strong></p>
<p>To speed things up, it is better to install nscd (name service cache daemon) package: </p>
<div class="highlight"><pre><span></span><code>apt-get install nscd
</code></pre></div>
<p>This finishes this part of the guide. </p>
<p>=====================<br>
Debian packages used:<br>
=====================<br>
Server: SimplyMEPIS 2004-6<br>
slapd 2.1.30-3<br>
ldap-utils 2.1.30-3<br>
migrationtools 46-1 </p>
<hr>
<p>Client: SimplyMEPIS 2004-6<br>
ldap-utils 2.1.30-3<br>
migrationtools 46-1<br>
libnss-ldap 220-1<br>
libpam-ldap 169-1<br>
nscd 2.3.2.ds1-20<br>
ssh 1:3.8.1p1-8</p>"Centralized authentication with LDAP + NFS + Samba (Part II: NFS)"2005-01-17T05:00:00-08:002005-01-17T05:00:00-08:00Huahaitag:yyhh.org,2005-01-17:/blog/2005/01/centralized-authentication-with-ldap-nfs-samba-part-ii-nfs<p>NFS (Network File System) is an old Unix technology that enables a machine to mount a remote file system. This is desirable for centralized authentication, as the user can access the same home directory no matter which machine he uses.</p>
<p><strong>Server</strong></p>
<p>Install NFS server: </p>
<div class="highlight"><pre><span></span><code>apt-get install nfs-kernel-server
</code></pre></div>
<p>Edit /etc/exports …</p><p>NFS (Network File System) is an old Unix technology that enables a machine to mount a remote file system. This is desirable for centralized authentication, as the user can access the same home directory no matter which machine he uses.</p>
<p><strong>Server</strong></p>
<p>Install NFS server: </p>
<div class="highlight"><pre><span></span><code>apt-get install nfs-kernel-server
</code></pre></div>
<p>Edit /etc/exports, put in lines such as</p>
<div class="highlight"><pre><span></span><code>/home *.dept.school.edu(rw,no_subtree_check)
</code></pre></div>
<p>to export directories to allow machines on local network have access to /home and its subdirectories.</p>
<p>Start the server:</p>
<div class="highlight"><pre><span></span><code>/etc/init.d/nfs-kernel-server start
</code></pre></div>
<p>If you have a personal firewall running on the machine, you will need to configure it so NFS traffic can be served from this machine. On MEPIS Linux, go to Guarddog->Protocol->Local->Network File System - Sun Microsystems, and check the box, apply; For client, goto the Internet zone, instead of Local zone, check the same box. Since NFS is highly vulunrable for exploitation, you should make sure your whole subnetwork is behind a firewall.</p>
<p><strong>Client</strong></p>
<p>We would like to automatically mount the NFS volume when a user is trying to access it. am-utils, an automounter, will do this. Get and install it: </p>
<div class="highlight"><pre><span></span><code>apt-get install am-utils
</code></pre></div>
<ul>
<li>use NIS: no </li>
<li>use net map: yes </li>
<li>use passwd map: no</li>
</ul>
<p>Edit /etc/am-utils/amd.conf,<br>
Uncomment nfs-proto = udp, for better performance<br>
Add two lines:</p>
<div class="highlight"><pre><span></span><code>[/homes]
map_name = /etc/am-utils/amd.homes
</code></pre></div>
<p>If user joe's home directory is on machine yoda, we can create a file amd.homes, which contains lines such as:</p>
<div class="highlight"><pre><span></span><code>joe<span class="w"> </span>host!=yoda;type:=nfs;rhost:=yoda;rfs:=/home;sublink:=<span class="cp">${</span><span class="n">key</span><span class="cp">}</span>;opts:=rw,intr,nosuid,grpid<span class="w"> </span>
host==yoda;type:=link;fs:=/home;sublink:=<span class="cp">${</span><span class="n">key</span><span class="cp">}</span>;opts:=rw,intr,nosuid,grpid
</code></pre></div>
<p>Copy this file to all your machines.</p>
<p>Create the mount point:</p>
<div class="highlight"><pre><span></span><code>mkdir /homes
</code></pre></div>
<p>What this does, is to mount a user's home directory on the NFS server (/home/joe) to this NFS client machine, at /homes/joe, whenever /homes/joe is requested. Usually, it happens when user login. Of course, /homes/joe should be this user's default home directory.</p>
<div class="highlight"><pre><span></span><code>ls /homes/joe
</code></pre></div>
<p>If everythings are working, you should be able to see the content of /home/joe on the NFS server.</p>
<p>One more thing, what if the user login to his/her NFS server itself? To avoid a potential problem, the automounter amd should be launched with option -r, so that it will inherent the local file system /home/joe, instead of attempting mount it as a NFS. To achieve this, edit /etc/init.d/am-utils:</p>
<p>append -r to the end of the line :</p>
<div class="highlight"><pre><span></span><code>/etc/sbin/amd -F /etc/am-utils/amd.conf $dnsdomain $AMDARGS
</code></pre></div>
<p>to</p>
<div class="highlight"><pre><span></span><code>/etc/sbin/amd -F /etc/am-utils/amd.conf $dnsdomain $AMDARGS -r
</code></pre></div>
<p>For some system, you may want to comment out this two lines so that amd can start:</p>
<div class="highlight"><pre><span></span><code><span class="nv">echo</span><span class="w"> </span><span class="s2">"$0: please setup your domainname"</span><span class="w"> </span><span class="mi">1</span><span class="o">>&</span><span class="mi">2</span><span class="w"> </span>
<span class="k">exit</span><span class="w"> </span><span class="mi">1</span>
</code></pre></div>
<p>Now restart amd:</p>
<div class="highlight"><pre><span></span><code>/etc/init.d/am-utils restart
</code></pre></div>
<p>===============<br>
Debian package used<br>
===============<br>
Server:<br>
nfs-kernel-server 1:1.0.6-3.1 </p>
<hr>
<p>Client:<br>
am-utils 6.0.9-3.1</p>JBuilder "could not reserve enough space for object heap"2005-01-10T05:00:00-08:002005-01-10T05:00:00-08:00Huahaitag:yyhh.org,2005-01-10:/blog/2005/01/jbuilder-could-not-reserve-enough-space-for-object-heap<p>I have been using Borland programming environment since 1994, beginning with its Turbo C 2.0, then Borland C++, and now JBuilder. This company has always produced programmer friendly products. Comparing with other products, Borland's offering are always the most natural, and the easiest to get the job done. At …</p><p>I have been using Borland programming environment since 1994, beginning with its Turbo C 2.0, then Borland C++, and now JBuilder. This company has always produced programmer friendly products. Comparing with other products, Borland's offering are always the most natural, and the easiest to get the job done. At least to me. </p>
<p>Well, I mostly do Java programming these days. I have used all sorts of Java IDEs over the years. VisualCafe, VisualAge, NetBean, Eclipse, and so on. At the end, I still decided to settle on the tried -and-true Borland product: JBuilder. </p>
<p>For my personal projects, I need a free IDE. JBuilder now offer a free downloadable version called JBuilder 2005 Foundation. I have been very pleased with it. </p>
<p>Today, I decide to install it on my work machine, a Dell OptiPlex GX270, Pentium 4 CPU 3.00GHz with 1GB memory, running WindowXP. After download and installation, when I clicked on the JBuilder icon, a splash screen showed up and immediately disappeared, but nothing else happened. </p>
<p>To figure out why, I opened up Windows command line, and ran JBuilder.exe, the error messages readed: </p>
<blockquote>
<p>Error occurred during initialization of VM<br>
Could not reserve enough space for object heap </p>
</blockquote>
<p>Okay, it must be a Java Virtual Machine heap size issue, the max size is too small. I quickly found out that I can edit jubilder.config file in the JBuilder bin directory to fix it. Change "vmmemmax 75%" to "vmmemmax 256M", save the file, and relaunch JBuilder. Everything works now. </p>
<p>I've installed JBuilder on many other machines and encountered no such problem before. The reason for the problem on this machine, I guess, is somehow the JVM bundled with JBuilder miscalculated the maximum heap size from this 75% due to large memory of this machine (1GB). Changing it to a fixed size such as 256M avoided this calculation.</p>