<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9531440</id><updated>2012-02-16T09:31:28.119-05:00</updated><category term='visualization'/><category term='Architecture'/><category term='Java EE'/><category term='books'/><category term='glassfish'/><category term='Clojure'/><category term='Mac Tips'/><category term='nook tablet'/><category term='Tips'/><category term='Windows'/><category term='Management'/><category term='Java'/><category term='Robotics'/><category term='Apple'/><category term='Fun'/><category term='osx'/><category term='Lisp'/><category term='ebook'/><category term='misc'/><category term='chrome'/><category term='big data'/><category term='Unix/Linux'/><category term='kindle'/><category term='agile'/><category term='AI'/><category term='java3d'/><category term='web service'/><category term='mac app'/><category term='Cool Apps'/><category term='development methodology'/><category term='Development Tools'/><category term='PDA'/><category term='career'/><category term='project management'/><category term='jmonkeyplatform'/><category term='mercurial'/><category term='gaej'/><category term='J2EE'/><category term='jax-ws'/><category term='Goole App Engine'/><category term='Golang'/><category term='Erlang'/><title type='text'>Keith Kim</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.keithkim.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default?start-index=26&amp;max-results=25'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>63</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9531440.post-1382735727681218191</id><published>2012-01-23T10:57:00.000-05:00</published><updated>2012-01-23T10:57:39.113-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kindle'/><category scheme='http://www.blogger.com/atom/ns#' term='ebook'/><title type='text'>Set up Mac as an Access Point, and connect Kindle to it</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;If having kindle to connect to wifi is a problem, you can set up MacBook to use ethernet to use internet, and set up wifi as an access point. &amp;nbsp;This is very useful with services like "Send to Kindle" and "Kindle It" to send web documents to Kindle for offline reading. &amp;nbsp;I read a lot of technical web pages and reading them while commuting would save a lot of time. &amp;nbsp;But it requires wifi to transfer the documents to Kindle. &amp;nbsp;(Or, pay for the user document service to Amazon over 3G, and non-3G kindle doesn't have this option.)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Tested with Kindle keyboard 3G and Kindle Fire. &amp;nbsp;Great tip.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Source:&lt;/span&gt;&lt;br /&gt;&lt;a href="https://discussions.apple.com/thread/2743129?start=0&amp;amp;tstart=0"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;https://discussions.apple.com/thread/2743129?start=0&amp;amp;tstart=0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-size: large;"&gt;HOW TO GET IT TO WORK:&lt;/span&gt;&lt;/span&gt;&lt;br style="background-color: white; color: #333333; text-align: left;" /&gt;&lt;br style="background-color: white; color: #333333; text-align: left;" /&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;b&gt;A. On your Mac:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Make sure Internet works in general and that internet sharing is properly configured and works with another (Apple) computer / iDevice (Apple device)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;System Preferences =&amp;gt; Sharing =&amp;gt; Internet Sharing (disabled to configure) =&amp;gt; AirPort (enabled) =&amp;gt; AirPort Options...&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Network Name: (alpha characters, upper/lower case mix, no spaces; other characters might work, not tested; space(s) in-between might work, not tested)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Channel: Automatic&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Enable encryption (using WEP) =&amp;gt; enabled (optional)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Password, Confirm Password: (optional, 5 characters or 13 characters, depending on key length at next step, alphanumeric tested, upper/lower case mix tested, other characters tested but not as the first character)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;WEP Key Length: 40 or 128 bit (both tested)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;OK to confirm =&amp;gt; Internet Sharing (enabled) =&amp;gt; Start&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br style="background-color: white; color: #333333; text-align: left;" /&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;b&gt;B. On your Kindle:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Make sure the network name you chose above shows up, if not select "Rescan".&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Connect =&amp;gt; Password (optional, if encryption selected above)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Unable to Connect to Wi-Fi Network =&amp;gt; set up network&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Network Name: (should be properly filled in)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Connection Type: static (switch to)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;IP Address: 10.0.2.x (I chose 4 for x)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Subnet Mask: 255.255.255.0&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Router: 10.0.2.1&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;DNS: 10.0.2.1&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Security Type: WEP (WPA, WPA2 so far unsupported by OS X)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Password: (should be properly filled in)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: white; color: #333333; text-align: left;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;connect&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-1382735727681218191?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/1382735727681218191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/1382735727681218191'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2012/01/set-up-mac-as-access-point-and-connect.html' title='Set up Mac as an Access Point, and connect Kindle to it'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-2774651789146308431</id><published>2011-12-21T17:59:00.001-05:00</published><updated>2011-12-21T18:00:42.898-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Tips'/><title type='text'>[Mac] Delete backups from Time Macine</title><content type='html'>I got disk full message from Time Machine with 2TB external HDD. &amp;nbsp;I found this helpful video showing how to remove (old) backups from Time Machine disk.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="301" mozallowfullscreen="" src="http://player.vimeo.com/video/3268578?byline=0&amp;amp;portrait=0" webkitallowfullscreen="" width="400"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-2774651789146308431?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/2774651789146308431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/2774651789146308431'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/12/mac-delete-backups-from-time-macine.html' title='[Mac] Delete backups from Time Macine'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-5022341322228704163</id><published>2011-12-19T21:57:00.000-05:00</published><updated>2011-12-19T21:57:53.259-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>[Book] Programming Erlang: Software for a Concurrent World</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-z7g2YPNvZHo/Tu_4dKX7niI/AAAAAAABAM4/_kMP-et8V0g/s1600/41XOOpdBzKL._SL500_AA300_.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-z7g2YPNvZHo/Tu_4dKX7niI/AAAAAAABAM4/_kMP-et8V0g/s1600/41XOOpdBzKL._SL500_AA300_.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Programming-Erlang-Software-Concurrent-World/dp/193435600X"&gt;http://www.amazon.com/Programming-Erlang-Software-Concurrent-World/dp/193435600X&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I actually read this book a few years ago. &amp;nbsp;I was searching for a better way for concurrent programming, and found about Erlang, and coincidently, little after Erlang was starting to get some attention. &amp;nbsp;I believe at that time this was the only Erlang book. &amp;nbsp;This book clearly shows and explain how to program in Erlang. &amp;nbsp;Like any other functional programming languages, reading this book was like a wake-up call for me, whose background is mostly OOP and procedural languages. &amp;nbsp;Very enjoyable book.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-5022341322228704163?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/5022341322228704163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/5022341322228704163'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/12/book-programming-erlang-software-for.html' title='[Book] Programming Erlang: Software for a Concurrent World'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-z7g2YPNvZHo/Tu_4dKX7niI/AAAAAAABAM4/_kMP-et8V0g/s72-c/41XOOpdBzKL._SL500_AA300_.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-2216033440052884854</id><published>2011-12-19T21:51:00.003-05:00</published><updated>2011-12-19T21:54:12.742-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='Clojure'/><title type='text'>[Book] Clojure in Action</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-qxaYFMnmnV0/Tu_3r0c09sI/AAAAAAABAMw/wF3VtI3NKp8/s1600/51Y5BXxh7qL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-qxaYFMnmnV0/Tu_3r0c09sI/AAAAAAABAMw/wF3VtI3NKp8/s1600/51Y5BXxh7qL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Clojure-Action-Amit-Rathore/dp/1935182595"&gt;http://www.amazon.com/Clojure-Action-Amit-Rathore/dp/1935182595&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are many books on Clojure, and after reading/skimming through most of them, I found this book is the best one to start with. &amp;nbsp;I enjoyed reading this book very much, and I strongly recommend to anyone who wants to know Clojure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-2216033440052884854?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/2216033440052884854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/2216033440052884854'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/12/book-clojure-in-action.html' title='[Book] Clojure in Action'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-qxaYFMnmnV0/Tu_3r0c09sI/AAAAAAABAMw/wF3VtI3NKp8/s72-c/51Y5BXxh7qL._BO2%252C204%252C203%252C200_PIsitb-sticker-arrow-click%252CTopRight%252C35%252C-76_AA300_SH20_OU01_.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-1320754010157828346</id><published>2011-12-19T21:46:00.000-05:00</published><updated>2011-12-19T21:46:50.317-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>[책] 사장의 본심</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-kUw0_A0IPdw/Tu_1_OFWPaI/AAAAAAABAMo/_yfuZrjm53s/s1600/895276241x_2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-kUw0_A0IPdw/Tu_1_OFWPaI/AAAAAAABAMo/_yfuZrjm53s/s1600/895276241x_2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=895276241X"&gt;http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=895276241X&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;과연 오우너는 어떤 사고방식을 가지고 있을까 하고 궁금해 구입해 읽었는데,&amp;nbsp;크게 배울것은 없던 책이었다. &amp;nbsp;중소기업의 사장의 입장이라 대기업의 CEO의 마인드와는 무척 틀릴것이다. 그리고 많은 부분이 사장은 이러하니 이해를 하라 하는 글이 많다. 결국은 사장에게 잘 보이고, 잘 보이는것은 겉으로 보이는것을 무시 못한다는것이 핵심인듯 한데, 이것은 어디에서나 공통된 공식이다.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;그래도 읽은만하고, 가장 기억에 남는 부분은, 회의는 소통을 위한것이지 꼭 결론을 내려고 하는것은 아니라는 점이다. &amp;nbsp;나를 포함해 많은 직원들이 수많은 회의에 시간낭비라고 느낄때가 많은데, 이점을 일깨워준다.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-1320754010157828346?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/1320754010157828346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/1320754010157828346'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/12/blog-post_2358.html' title='[책] 사장의 본심'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-kUw0_A0IPdw/Tu_1_OFWPaI/AAAAAAABAMo/_yfuZrjm53s/s72-c/895276241x_2.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-3447735331293658738</id><published>2011-12-19T21:38:00.000-05:00</published><updated>2011-12-19T21:38:38.322-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>[책] 나는 언제까지 회사를 다닐 수 있을까?</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-bgT7YZsVLbY/Tu_zwpVP-lI/AAAAAAABAMg/w1P0rPIfFQs/s1600/8991120571_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-bgT7YZsVLbY/Tu_zwpVP-lI/AAAAAAABAMg/w1P0rPIfFQs/s1600/8991120571_1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8991120571"&gt;http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8991120571&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;모든 사람들이 회사를 끝까지 다녀서 은퇴를 하는게 아니라는것을 알게되고는 어떻게 자기 개발을 해야하는지 무엇을 고민하고 준비해야하는지 고민을 많이했다. 자신을 성찰하게 하고 무엇을 고민해야할지 어떤 마음의 준비를 해야할지 생각하게 해준다. 그리고 자신이 소중하게 생각하는게 무엇이고, 하고 싶은일은 무엇이며 가족을 소중하게 생각해야 함을 일깨워준다.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;책내용 발췌:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;- 한국인 평균 은퇴연령이 53세이고, 한국인 남자 평균 기대수명이 76세 (2010년 기준)...&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;i&gt;아마도 미국은 평균 은퇴연령이 55세 정도가 아닐까 싶다.&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-3447735331293658738?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/3447735331293658738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/3447735331293658738'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/12/blog-post_19.html' title='[책] 나는 언제까지 회사를 다닐 수 있을까?'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-bgT7YZsVLbY/Tu_zwpVP-lI/AAAAAAABAMg/w1P0rPIfFQs/s72-c/8991120571_1.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-4187232183755911163</id><published>2011-12-19T21:31:00.000-05:00</published><updated>2011-12-19T21:31:26.639-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>[책] 고역열차</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-gnPMOEZJRkU/Tu_zZ7tNwXI/AAAAAAABAMY/OcJFApa-W8s/s1600/8963706508_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-gnPMOEZJRkU/Tu_zZ7tNwXI/AAAAAAABAMY/OcJFApa-W8s/s1600/8963706508_1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8963706508"&gt;http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8963706508&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;일본책이면서 저자의 경험을 옮긴것이라는것에 더 끔찍함을 느끼게 해준 책이다. 인기있는 일본책이 다 그렇듯, 어떤 흡수 하는 면이 있어서 하루만에 순식간에 읽어 버렸다. 저자의 경험에 동화가 되면서 나도 그런 (상대적)밑바닥의 삶은 아닌가 하게 생각하게 만들기도 한다. 단지, 갑자기 중간에 스토리가 바뀌는것에 대해 당혹감을 느꼈다.&amp;nbsp;일본 소설이나 처세술 등의 책은 나와 맞지 않는듯하다. 읽을때는 재밌지만 읽고 난후에의 감동은 없고 거북한 느낌이 든다.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-4187232183755911163?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/4187232183755911163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/4187232183755911163'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/12/blog-post.html' title='[책] 고역열차'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-gnPMOEZJRkU/Tu_zZ7tNwXI/AAAAAAABAMY/OcJFApa-W8s/s72-c/8963706508_1.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-5308199073101342102</id><published>2011-12-02T23:27:00.004-05:00</published><updated>2011-12-02T23:44:02.580-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='osx'/><category scheme='http://www.blogger.com/atom/ns#' term='Clojure'/><title type='text'>Common Lisp, Web framework, VPS, OSX issues</title><content type='html'>&lt;b&gt;Goal:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Develop web apps using common lisp with a web framework on Linux environment.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Environment:&lt;/b&gt;&lt;br /&gt;Development environment is OSX 10.6&amp;nbsp;Snow leopard. &amp;nbsp;Target environment is Ubuntu 10.10 server running on&amp;nbsp;&lt;a href="http://wiki.openvz.org/Main_Page" target="_blank"&gt;OpenVZ&lt;/a&gt; with very small configuration, provided by VPS hosting service.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Issues:&lt;/b&gt;&lt;br /&gt;Two widely used common lisp web frameworks: (1) &lt;a href="http://common-lisp.net/project/cl-weblocks/" target="_blank"&gt;weblocks&lt;/a&gt;, (2)&amp;nbsp;&lt;a href="http://weitz.de/hunchentoot/" target="_blank"&gt;hunchentoot&lt;/a&gt;. &amp;nbsp;(Use &lt;a href="http://www.quicklisp.org/" target="_blank"&gt;quicklisp&lt;/a&gt; to install them.) &amp;nbsp;They both require multithreading support.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;1. Development side:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;OSX's &lt;a href="http://www.clisp.org/" target="_blank"&gt;CLISP&lt;/a&gt; binary doesn't support multithreading. &amp;nbsp;I don't want to spend too much time compiling it from scratch just for that. &amp;nbsp;Tried &lt;a href="http://www.sbcl.org/" target="_blank"&gt;SBCL&lt;/a&gt;, and its binary (macport) does support multithreading. &amp;nbsp;Good.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;2. Target environment side:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Ubuntu's CLISP package supports multithreading. &amp;nbsp;However, I couldn't install SBCL using apt-get, reporting there's a problem with memory (don't remember the specific message). &amp;nbsp;It turns out that SBCL requires 8GB memory for its GC. &amp;nbsp;However, the VPS has only 512MB memory, and no swap. &amp;nbsp;no SWAP?! &amp;nbsp;That's right -- openVZ does not give swap. &amp;nbsp;I could find a VPS hosting service using &lt;a href="http://www.xen.org/" target="_blank"&gt;XEN&lt;/a&gt;, but this hosting service's price is very low, and XEN based VPS hosting service companies are charging almost twice of the company I'm getting service from.&lt;br /&gt;&lt;br /&gt;So, in development environment, I have to use SBCL, but on the target machine, CLISP must be used. &amp;nbsp;(Gotta use the same environment!) Some suggested that &lt;a href="http://common-lisp.net/project/lispbox/" target="_blank"&gt;LISPBOX&lt;/a&gt; has &lt;a href="http://ccl.clozure.com/" target="_blank"&gt;Clozure Common LISP&lt;/a&gt; and the binary supports multithreading on OSX, therefore use that &lt;i&gt;(lispbox's clozure)&lt;/i&gt;. &amp;nbsp;However, on the Ubuntu in my VPS, installing LISPBOX is a bit of hassle -- compiling many things. (It's because the LISPBOX binary available on the web is a bit old, and does not install on my headless Ubuntu 11.04 VPS.) &amp;nbsp;Also, I selected Ubuntu to minimize any package compilation, and this defeats the purpose.&lt;br /&gt;&lt;br /&gt;I do not have to use common lisp and don't want to waste time on setting up environment -- already wasted good amount of time finding all this -- so decided to go with &lt;a href="http://clojure.org/" target="_blank"&gt;Clojure&lt;/a&gt; instead for frontend, and use clisp for the backend, probably.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;I hope my findings help other folks and save their time -- clisp issue on OSX, SBCL on virtual machine based using OpenVZ, etc. &amp;nbsp;And try Clojure. &amp;nbsp;It's cooler than Scala, IMHO.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-5308199073101342102?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/5308199073101342102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/5308199073101342102'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/12/common-lisp-web-framework-vps-osx.html' title='Common Lisp, Web framework, VPS, OSX issues'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-6877939327681334114</id><published>2011-12-02T23:00:00.002-05:00</published><updated>2011-12-19T22:24:16.652-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='jax-ws'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='glassfish'/><category scheme='http://www.blogger.com/atom/ns#' term='web service'/><category scheme='http://www.blogger.com/atom/ns#' term='Java EE'/><title type='text'>Apache, Glassfish and JAX-WS</title><content type='html'>&lt;b&gt;Install&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Environment: Apache, &lt;a href="http://dlc.sun.com.edgesuite.net/glassfish/3.1.1/release/" target="_blank"&gt;Glassfish 3.1.1&lt;/a&gt;&amp;nbsp;(or &lt;a href="http://glassfish.java.net/downloads/3.1.1-final.html" target="_blank"&gt;here&lt;/a&gt;) on Ubuntu server 11.04, behind FW with VIP. &amp;nbsp;&lt;a href="http://www.nabisoft.com/tutorials/glassfish/installing-glassfish-31-on-ubuntu" target="_blank"&gt;Here&lt;/a&gt; is the good tutorial on installing Glasfish on Ubuntu.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Start/Stop commands for Glassfish:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #444444; font-family: 'Courier New', Courier, monospace;"&gt;glassfish/bin/asadmin stop-domain domain1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #444444; font-family: 'Courier New', Courier, monospace;"&gt;glassfish/bin/asadmin start-domain domain1&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;- For virtual hosting, &lt;a href="http://webcache.googleusercontent.com/search?q=cache:VrCbWYktqLwJ:blogs.steeplesoft.com/2007/05/virtual-hosting-using-apache-and-glassfish/+&amp;amp;cd=8&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us" target="_blank"&gt;this page&lt;/a&gt; might be a good help.&lt;br /&gt;- For SSL, see &lt;a href="http://www.manorrock.com/documents/glassfish/proxy-v3.html" target="_blank"&gt;this page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Apache + Glassfish&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Usual Reverse Proxy configuration will work fine:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #444444; font-family: 'Courier New', Courier, monospace;"&gt;ProxyPass / http://127.0.0.1:8080/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #444444; font-family: 'Courier New', Courier, monospace;"&gt;ProxyPassReverse / http://127.0.0.1:8080/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;JAX-WS (Web Service) "soap:address location" Issue&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;My apache server is behind a firewall, and has a VIP, then using apache reverse proxy to Glassfish. &amp;nbsp;May be this set up is the cause of my problem, but I was getting the IP in ProxyPass/ProxyPassReverse in the JAX-WS's WSDL page for soap-address:location:&lt;br /&gt;&lt;span style="color: #444444; font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;soap:address location="http://127.0.0.1/myapp/mywebservice"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is a problem for client to generate WS client codes using the WSDL. &amp;nbsp;I spent good amount of time Googling for the solution and found a few things:&lt;br /&gt;1. it's been reported as a bug and is supposed to be fixed before 3.1.1. &amp;nbsp;May be my problem is caused by my environment: FW and VIP.&lt;br /&gt;2. someone actually wrote servlet filtering to intercept the output, and regex the host name to change it to a correct one.&lt;br /&gt;3. another solution was to grab the generated WSDL, save it locally, hand edit it, then upload. &lt;br /&gt;&lt;br /&gt;#2 and #3 are all hacks and I applaud for the developers effort, but I did not like those solution because I am too lazy to do any workaround coding for some environmental issue, and do hand edit things each time WSDL is updated. &amp;nbsp;So did more digging and reading, found a simpler solution. &amp;nbsp;In the Apache config for the reverse proxy, just add one more line and it would look like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: yellow; color: #444444; font-family: 'Courier New', Courier, monospace;"&gt;ProxyPreserveHost On&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #444444; font-family: 'Courier New', Courier, monospace;"&gt;ProxyPass / http://127.0.0.1:8080/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #444444; font-family: 'Courier New', Courier, monospace;"&gt;ProxyPassReverse / http://127.0.0.1:8080/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #444444; font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I hope this little finding saves other developers' time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-6877939327681334114?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/6877939327681334114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/6877939327681334114'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/12/apache-glassfish-and-jax-ws.html' title='Apache, Glassfish and JAX-WS'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-8480152294368506594</id><published>2011-12-02T22:33:00.001-05:00</published><updated>2011-12-02T22:35:33.947-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nook tablet'/><title type='text'>Rooting Nook Tablet</title><content type='html'>&lt;a href="http://reviewhorizon.com/2011/11/how-to-root-jailbreak-enable-side-load-apk-on-nook-tablet-install-android-market-amazon-app-store/"&gt;http://reviewhorizon.com/2011/11/how-to-root-jailbreak-enable-side-load-apk-on-nook-tablet-install-android-market-amazon-app-store/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It'd be nice if I can do some programming on the device directly (and compile too).&lt;br /&gt;&lt;br /&gt;Nook SDK: &lt;a href="https://nookdeveloper.barnesandnoble.com/tools-services/nook-tablet-sdk.html"&gt;https://nookdeveloper.barnesandnoble.com/tools-services/nook-tablet-sdk.html&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Nook Color vs. Nook Tablet vs. Kindle Fire: &lt;a href="http://www.barnesandnoble.com/u/compare-nook-tablet-vs-kindle-fire/379003173/"&gt;http://www.barnesandnoble.com/u/compare-nook-tablet-vs-kindle-fire/379003173/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So far, Nook Tablet looks like it is the best low-end/cost tablet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-8480152294368506594?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/8480152294368506594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/8480152294368506594'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/12/rooting-nook-tablet.html' title='Rooting Nook Tablet'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-5782980909672900059</id><published>2011-12-02T22:31:00.000-05:00</published><updated>2011-12-02T22:31:36.207-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kindle'/><title type='text'>Amazon's Kindle source code</title><content type='html'>They're available for download at:&lt;br /&gt;&lt;a href="http://www.amazon.com/gp/help/customer/display.html?nodeId=200203720"&gt;http://www.amazon.com/gp/help/customer/display.html?nodeId=200203720&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;...source codes for Kindle 2nd gen, 3rd gen, 3G, DX, 6" wifi, Touch, and the latest Kindle Fire.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-5782980909672900059?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/5782980909672900059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/5782980909672900059'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/12/amazons-kindle-source-code.html' title='Amazon&apos;s Kindle source code'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-1016425584007883000</id><published>2011-09-20T17:18:00.003-04:00</published><updated>2011-09-20T17:18:45.033-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac app'/><title type='text'>Useful Mac App: Open terminal here</title><content type='html'>&lt;br /&gt;&lt;b&gt;DTerm&lt;/b&gt;&lt;br /&gt;&lt;a href="http://itunes.apple.com/us/app/dterm/id415520058?mt=12"&gt;http://itunes.apple.com/us/app/dterm/id415520058?mt=12&lt;/a&gt;&lt;br /&gt;&lt;a href="http://decimus.net/DTerm"&gt;http://decimus.net/DTerm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Open Terminal Here&lt;/b&gt;&lt;br /&gt;&lt;a href="http://blog.leenarts.net/2009/09/03/open-service-here/"&gt;http://blog.leenarts.net/2009/09/03/open-service-here/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;more...&lt;br /&gt;&lt;a href="http://maururu.net/2007/enhanced-open-terminal-here-for-leopard/"&gt;http://maururu.net/2007/enhanced-open-terminal-here-for-leopard/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/cdto/"&gt;http://code.google.com/p/cdto/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-1016425584007883000?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/1016425584007883000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/1016425584007883000'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/09/useful-mac-app-open-terminal-here.html' title='Useful Mac App: Open terminal here'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-4147631100889766703</id><published>2011-09-15T23:09:00.000-04:00</published><updated>2011-09-15T23:29:12.728-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='big data'/><title type='text'>Visualization</title><content type='html'>Great data visualization site:&amp;nbsp;http://flowingdata.com/&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/mkEXx7sDXAI" width="560"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Some interesting pages from this site:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://flowingdata.com/2011/09/08/classroom-seating-habits/"&gt;Class room sitting habits&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://flowingdata.com/2011/09/09/girl-scout-cookie-pie-chart/"&gt;Girl Scout cookie pie chart&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://flowingdata.com/2010/10/18/true-size-of-africa/"&gt;True size of Africa&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://flowingdata.com/2008/03/12/17-ways-to-visualize-the-twitter-universe/"&gt;17 ways to visualize the Twitter universe&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://flowingdata.com/2009/06/04/rise-of-the-data-scientist/"&gt;Rise of the data scientist&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://flowingdata.com/2009/09/03/what-visualization-toolsoftware-should-you-use-getting-started/"&gt;What visualization tool/software should you use? - Getting started&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://flowingdata.com/2010/05/10/dreaming-in-numbers/"&gt;Dreaming in numbers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://flowingdata.com/2008/10/20/40-essential-tools-and-resources-to-visualize-data/"&gt;40 essential tools and resources to visualize data&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Adding my two cents here:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;GnuPlot, Python with Scipy/Numpy, PHP -- they are all very good tools for creating charts.&lt;/li&gt;&lt;li&gt;Use Google Chart, JavaScript or Flash for charting.&lt;/li&gt;&lt;li&gt;Search for existing tools first, rather than bang your head on the ground and write from scratch.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-4147631100889766703?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/4147631100889766703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/4147631100889766703'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/09/visualization.html' title='Visualization'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/mkEXx7sDXAI/default.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-2628932412003231870</id><published>2011-09-07T01:32:00.003-04:00</published><updated>2011-09-07T01:37:00.353-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='big data'/><title type='text'>Great free kindle ebook from O'Reilly - Big Data Now</title><content type='html'>&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.amazon.com/Big-Data-Now-Perspectives-ebook/dp/B005KDPILI/"&gt;&lt;img border="0" src="http://ecx.images-amazon.com/images/I/51dA5zOv3SL._SL500_AA278_PIkin4,BottomRight,-46,22_AA300_SH20_OU01_.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I just started to read this book. &amp;nbsp;It's very interesting and insightful. &amp;nbsp;Big data is becoming more and more important for any business and products. &amp;nbsp;Statistical and analytical approaches to derive meaning out of the data and add values to products is the key to win over competition.&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-2628932412003231870?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/2628932412003231870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/2628932412003231870'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/09/great-free-kindle-book-from-oreilly-big.html' title='Great free kindle ebook from O&apos;Reilly - Big Data Now'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-4933858339162268564</id><published>2011-09-06T20:35:00.003-04:00</published><updated>2011-09-14T11:17:39.078-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><title type='text'>quicklisp</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://www.cliki.net/ASDF-Install"&gt;ASDF&lt;/a&gt;&amp;nbsp;doesn't work for me -- I couldn't install it properly on OSX, and it is obsolete anyway. &amp;nbsp;I found &lt;a href="http://www.quicklisp.org/beta/"&gt;quicklisp&lt;/a&gt;&amp;nbsp;(&lt;a href="http://www.quicklisp.org/beta"&gt;http://www.quicklisp.org/beta&lt;/a&gt;) instead, and it works quite well.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;For Common Lisp, check your Common Lisp version -- I believe it requires at least 2.47. &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Simple Steps&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 18px;"&gt;wget http://beta.quicklisp.org/quicklisp.lisp&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 18px;"&gt;Run lisp: $ clisp (or sbcl)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 18px;"&gt;(load "quicklisp.lisp")&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 18px;"&gt;(quicklisp-quickstart:install)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 18px;"&gt;; load quick lisp at start up. do only once.&lt;br /&gt;(ql:add-to-init-file)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 18px;"&gt;; check if pkg avail&lt;br /&gt;(ql:system-apropos "&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;package name&amp;gt;&lt;/span&gt;")&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 18px;"&gt;; load -- replace &lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;package name&amp;gt;&lt;/span&gt;&amp;nbsp;with package name&lt;br /&gt;(ql:quickload "&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;package name&amp;gt;&lt;/span&gt;")&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 18px;"&gt;&lt;u&gt;Note&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 18px;"&gt;It will create and store downloaded modules under ~user/quicklisp.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 18px;"&gt;Step#5 will modify ~/.sbclrc or ~/.clisprc&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 18px;"&gt;quicklisp doesn't resolve dependencies.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 18px;"&gt;&lt;a href="http://common-lisp.net/project/clbuild/"&gt;clbuild&lt;/a&gt; is another lisp package installer.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 18px;"&gt;That's it. &amp;nbsp;Very simple.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-4933858339162268564?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/4933858339162268564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/4933858339162268564'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/09/quicklisp.html' title='quicklisp'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-621790278219129989</id><published>2011-09-03T00:31:00.001-04:00</published><updated>2011-09-03T02:24:59.398-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AI'/><title type='text'>Stanford opens some information technology courses to the world</title><content type='html'>&lt;span class="Apple-style-span" style="color: #252525; font-family: Georgia, serif; font-size: 14px; font-style: italic; line-height: 21px;"&gt;Courses on artificial intelligence, machine learning, and databases will be delivered to virtual classrooms of ten of thousands of students, if not hundreds of thousands.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-621790278219129989?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.zdnet.com/blog/service-oriented/stanford-opens-some-information-technology-courses-to-the-world/7515' title='Stanford opens some information technology courses to the world'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/621790278219129989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/621790278219129989'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/09/stanford-opens-some-information.html' title='Stanford opens some information technology courses to the world'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-6119217550134604011</id><published>2011-09-01T22:47:00.002-04:00</published><updated>2011-09-02T00:50:20.007-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='career'/><title type='text'>Book: The Passionate Programmer</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.amazon.com/Passionate-Programmer-Remarkable-Development-Pragmatic/dp/1934356344/" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://ecx.images-amazon.com/images/I/41fyjTVARFL._SL500_AA300_.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;I recently read &lt;a href="http://www.amazon.com/Passionate-Programmer-Remarkable-Development-Pragmatic/dp/1934356344/"&gt;The Passionate Programmer&lt;/a&gt; for the second time.&amp;nbsp; I wish I have read this book years ago. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Kindle-Special-Offers-Wireless-Reader/dp/B004HFS6Z0/"&gt;Get a Kindle&lt;/a&gt;&lt;br /&gt;Very convenient and many ebooks are cheaper than printed books.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-6119217550134604011?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/6119217550134604011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/6119217550134604011'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/09/book-passionate-programmer-creating.html' title='Book: The Passionate Programmer'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-7819480974853777492</id><published>2011-09-01T14:45:00.002-04:00</published><updated>2011-09-01T14:45:59.276-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AI'/><category scheme='http://www.blogger.com/atom/ns#' term='Robotics'/><title type='text'>AI vs. AI. Two chatbots talking to each other</title><content type='html'>&lt;iframe allowfullscreen="" frameborder="0" height="345" src="http://www.youtube.com/embed/WnzlbyTZsQY" width="560"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-7819480974853777492?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/7819480974853777492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/7819480974853777492'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/09/ai-vs-ai-two-chatbots-talking-to-each.html' title='AI vs. AI. Two chatbots talking to each other'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/WnzlbyTZsQY/default.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-7453995207774240364</id><published>2011-08-27T21:46:00.001-04:00</published><updated>2011-08-27T22:53:15.887-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='mercurial'/><title type='text'>Mercurial using BitBucket and Eclipse</title><content type='html'>If the project is already created in Eclipse, but not in mercurial repository, then:&lt;br /&gt;&lt;br /&gt;(1) Create a repository in BitBucket.&lt;br /&gt;(2) Go into shell, and clone from BitBucket which is empty.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;e.g.&amp;nbsp;If I have created non-mercurial project in local eclipse called "hello_world":&lt;/div&gt;&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;$ mv hello_world hello_world.bak&lt;br /&gt;$ cp -r hello_world.bak hello_world&lt;br /&gt;$ hg clone https://bitbucket.org/BBUSER/hello_world&lt;br /&gt;http authorization required&lt;br /&gt;realm: Bitbucket.org HTTP&lt;br /&gt;user: BBUSER&lt;br /&gt;password: &lt;br /&gt;destination directory: hello_world&lt;br /&gt;no changes found&lt;br /&gt;updating to branch default&lt;br /&gt;0 files updated, 0 files merged, 0 files removed, 0 files unresolved&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;(3) Then move or copy those files from the local project directory into the BitBucket cloned directory.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;$ cd hello_world&lt;br /&gt;$ hg add&lt;br /&gt;adding ....&lt;br /&gt;[ommit]&lt;br /&gt;&lt;br /&gt;$ hg ci -u BBUSER&lt;br /&gt;$ hg push&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;(4) Remove hello_world project from eclipse (make sure to have a backup) and from disk.&lt;br /&gt;(5) In eclipse's menu -&amp;gt; New -&amp;gt; Other -&amp;gt; Mercurial -&amp;gt; Clone Existing Mercurial Repository, then click &amp;lt;next&amp;gt; button.&lt;br /&gt;(6) In next dialog, enter URL to the BitBucket repository (get this when the repository was created, or go &amp;nbsp;to the site and find out), &amp;nbsp;username/password.&lt;br /&gt;(7) Click next, next, finish.&lt;br /&gt;&lt;br /&gt;...there should be an easier way...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-7453995207774240364?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/7453995207774240364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/7453995207774240364'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/08/mercurial-using-bitbucket-and-eclipse.html' title='Mercurial using BitBucket and Eclipse'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-2709790075819033228</id><published>2011-08-26T11:40:00.001-04:00</published><updated>2011-08-27T21:46:30.635-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='career'/><title type='text'>12 Things A Programmer Really Needs To Know</title><content type='html'>&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;"&lt;span class="Apple-style-span" style="color: #333333; line-height: 18px;"&gt;How do you answer the question, “what do I need to learn to be a good programmer?” I have written posts trying to answer that question, typically focusing on the languages that you should learn or the algorithms and other techniques you need to know. What about the rest of a programmer’s life? This is a less serious look at the life of a programmer. So, what does a programmer really need to know?"&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: inherit; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: inherit; line-height: 18px;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: inherit; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; line-height: 18px;"&gt;&lt;a href="http://regulargeek.com/2010/08/07/12-things-a-programmer-really-needs-to-know/"&gt;http://regulargeek.com/2010/08/07/12-things-a-programmer-really-needs-to-know/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-2709790075819033228?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://regulargeek.com/2010/08/07/12-things-a-programmer-really-needs-to-know/' title='12 Things A Programmer Really Needs To Know'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/2709790075819033228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/2709790075819033228'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/08/12-things-programmer-really-needs-to.html' title='12 Things A Programmer Really Needs To Know'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-914661869839332693</id><published>2011-08-21T11:56:00.001-04:00</published><updated>2011-08-21T11:57:41.368-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='career'/><title type='text'>Selling Yourself: Why? and How!</title><content type='html'>&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 21px;"&gt;Source:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 21px;"&gt;&lt;a href="http://www.javacodegeeks.com/2011/08/selling-yourself-why-and-how.html"&gt;http://www.javacodegeeks.com/2011/08/selling-yourself-why-and-how.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 21px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 21px;"&gt;I know many good developers who are under the impression that they either don’t have to sell themselves, or selling themselves is wrong, but is that really true?&lt;br /&gt;&lt;br /&gt;First let me clarify by defining what I mean by “selling yourself”. I don’t mean “selling out”, I mean marketing yourself, what you’re doing and what your skills are. Especially to your organization.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 21px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;I don’t need to sell myself, my code speaks for itself.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Really? Do you think your pristine code says enough about your skills especially to a non or semi-technical person? Think back about how many products with fancy UIs beat out excellent products with crappy UIs. The simple fact of life is that marketing is effective and required. Imagine creating a really good product and doing no advertising at all because you think that the product speaks for itself. No one will know about how good it is and no one will buy it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;The only person who can recognize the quality of your code is another developer of equal or greater talent&lt;/i&gt;&lt;/b&gt;. Now I realize that someone of lesser skill may be able to recognize that your code is “good”, because it is easy for them to read and it looks pretty, but just like a connoisseur of fine wines can distinguish the small differences that really count, it takes a developer of significant talent to recognize excellent code from good or even great code. Being armed with this knowledge it is easy to see why your code will rarely speak for itself.&lt;br /&gt;&lt;br /&gt;As a professional developer you have to consider your audience. Mostly the people influencing your career in development are not the highly talented developers who can appreciate your code. In my experience, it is a collective of all developers, project managers, and recruiters. Because of this audience, you must do more than write good code. That good code must be seen and the effects of it must also be seen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;It’s wrong to sell myself, it is politics, I don’t do politics, I just write code.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If it’s so wrong to do, how come so many of us do it when we are interviewing for a new job? It’s like a courtship when they guy is taking the gal out to dinner and buying her flowers and romancing her, but as soon as they get married where did the romance go? Many of us developers are just like that. We polish our resumé and go out looking for the job, dressed up in a suit and tie, presenting ourselves as professionals, but then we get the job and we settle in, we turn off the charm. It’s not wrong to keep the charm turned on, not only is it not wrong, it’s expected.&lt;br /&gt;&lt;br /&gt;How about the politics of it? Well yes, there are politics involved in selling yourself, but thinking you can be a technical person and completely ignore politics is a sure way to dead-end you career. Most developers want to reduce the amount of political situations they have to deal with, and I agree with that, but trying to ignore the problem to just make it go away is like trying to make a hungry lion go away by closing your eyes. Even if you are the best hacker in the world people skills are important. It is my strong opinion that every professional, developer or not, should read&amp;nbsp;&lt;a href="http://www.amazon.com/How-Win-Friends-Influence-People/dp/0671723650" style="color: #235fa3; text-decoration: none;"&gt;How to Win Friends and Influence People&lt;/a&gt;, by Dale Carnegie.&lt;br /&gt;&lt;br /&gt;I think there is also a large difference between tasteful marketing of a product or service and offensive or annoying marketing. Just like the XXX spam mail that shows up in your email unrequested, a developer can market themselves in an unsolicited and annoying way. On the the other hand…&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;There is a right or good way to market yourself.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Selling yourself tastefully takes some practice and thought. It really is a soft skill that must be acquired and thought about. It takes some amount of social engineering. Like all products, the better the product, the easier it is to market. Here are some tips I find useful for marketing yourself as a professional developer.&lt;br /&gt;&lt;br /&gt;1.&amp;nbsp;&lt;b&gt;&lt;i&gt;Create a weekly report of exactly what work you did each day of the week&lt;/i&gt;&lt;/b&gt;. The report should include a brief description of the major and minor accomplishments each day and perhaps a summary or highlight of any major accomplishments you did. Especially mention mentoring or helping other people. Send the weekly report voluntarily to your boss and CC your boss’s boss as an FYI. I know it’s a bit difficult to find a good way to CC your boss’s boss, but try to find a good way to do it that is tasteful. (For example, something like “I thought you might also like to receive these weekly reports I am sending out just as a FYI.” ) The benefit of doing this is two-fold. First, you will be highlighting all the good work you are doing to your boss and his boss, in a way that isn’t like “tooting your own horn.” Second, you will provide yourself a documented history of work you accomplished which is useful for reviews, protection against wrongful termination, and resume building.&lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;&lt;b&gt;&lt;i&gt;Update your resumé periodically, and your public profiles, LinkedIn etc&lt;/i&gt;&lt;/b&gt;. By keeping your resumé constantly up-to-date, you are ready to find a job quickly if you become unemployed. This will give you a safety net, which will allow you to feel more comfortable being a professional and sometimes&amp;nbsp;&lt;a href="http://blog.objectmentor.com/articles/2009/12/04/saying-no" style="color: #235fa3; text-decoration: none;"&gt;saying “no”&lt;/a&gt;. In addition, opportunities will come to you when you have your public profiles up-to-date.&lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;&lt;a href="http://simpleprogrammer.com/2009/12/08/great-developers-are-librarians/" style="color: #235fa3; text-decoration: none;"&gt;Get a library of books and put them up for display&lt;/a&gt;. (Read them, or you are just faking it.) If you have a mountain of books you have read, but they are sitting in a box at home, they are not marketing you. When I walk into a developer’s office and I look at his or her books I can tell many things about them already. When managers walk by and they see someone with a large number of programming books, it says something to them about your dedication and knowledge.&lt;br /&gt;&lt;br /&gt;4.&amp;nbsp;&lt;b&gt;If you have certifications frame them and put them on your wall, or on your cube&lt;/b&gt;. Yeah, I know it may seem cheesy, and you may get poked fun at a bit. But take it light-hearted and don’t brag about the certification, deep down inside the people poking jabs about certs really are feeling threatened they don’t have certifications.&lt;br /&gt;&lt;br /&gt;5.&amp;nbsp;&lt;b&gt;Help other developers, all the time&lt;/b&gt;. Be they guy that everyone asks their development questions to. When someone needs help figuring something out, volunteer. Help train the junior developers. Doing this will give you a reputation of being knowledgeable and helpful. Answering questions on&amp;nbsp;&lt;a href="http://stackoverflow.com/" style="color: #235fa3; text-decoration: none;"&gt;Stackoverflow&lt;/a&gt;&amp;nbsp;counts towards this if you have time.&lt;br /&gt;&lt;br /&gt;6.&amp;nbsp;&lt;b&gt;Prepare some power points and offer to give demonstrations or presentations on a project you did, or a new technology or methodology you want to introduce&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;7.&amp;nbsp;&lt;b&gt;Be vocal&lt;/b&gt;. Make sure that you are speaking up. In meetings, in design sessions, in general have something to say. Make sure you are not talking for the sake of talking, but contribute information and ideas. Doing this will help demonstrate your knowledge and critical thinking.&lt;br /&gt;&lt;br /&gt;8.&amp;nbsp;&lt;b&gt;Make occasional visits to the boss&lt;/b&gt;. Make sure you are being seen by management every once in a while and when you do, mention new ideas you have of ways to make your team better or more efficient. Offer to spearhead the implementation of those ideas.&lt;br /&gt;&lt;br /&gt;9.&amp;nbsp;&lt;b&gt;Take some risks in order to make things better&lt;/b&gt;. Sometimes you have to bet big to win big. Sometimes you have to do a controversial thing, or not get permission before you do something that will greatly improve development quality or output. Increasing developer quality through&amp;nbsp;&lt;a href="http://simpleprogrammer.com/2009/12/03/dedicated-developer-tools-teams/" style="color: #235fa3; text-decoration: none;"&gt;creating developer tools&lt;/a&gt;&amp;nbsp;is very valuable and very visible. Just make sure if you take a risk that if you accomplish it, it will have high returns for the company. People who do things without permission that are stupid get fired. People who do things without permission that are brilliant get praised.&lt;br /&gt;&lt;br /&gt;The bottom line is if you’re not selling your self, you’re selling yourself short.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Reference:&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;a href="http://simpleprogrammer.com/2010/01/12/selling-yourself/" style="color: #235fa3; text-decoration: none;"&gt;Selling Yourself&lt;/a&gt;&amp;nbsp;from our&amp;nbsp;&lt;a href="http://www.javacodegeeks.com/p/jcg.html" style="color: #235fa3; text-decoration: none;"&gt;JCG partner&lt;/a&gt;&amp;nbsp;&lt;a href="http://careers.stackoverflow.com/jsonmez" style="color: #235fa3; text-decoration: none;"&gt;John Sonmez&lt;/a&gt;&amp;nbsp;at&amp;nbsp;&lt;a href="http://simpleprogrammer.com/" style="color: #235fa3; text-decoration: none;"&gt;Making the Complex Simple&lt;/a&gt;&amp;nbsp;blog.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-914661869839332693?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.javacodegeeks.com/2011/08/selling-yourself-why-and-how.html' title='Selling Yourself: Why? and How!'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/914661869839332693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/914661869839332693'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/08/selling-yourself-why-and-how.html' title='Selling Yourself: Why? and How!'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-7667011264434896406</id><published>2011-06-16T10:15:00.000-04:00</published><updated>2011-06-16T10:15:14.942-04:00</updated><title type='text'>Peter's blog: It's official: developers get better with age. And...</title><content type='html'>&lt;a href="http://coding-and-more.blogspot.com/2011/06/its-official-developers-get-better-with.html?spref=bl"&gt;Peter's blog: It's official: developers get better with age. And...&lt;/a&gt;: "As a senior developer I get asked sometimes if constant change of technology is making me, well, obsolete. Personally I don't have problem w..."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-7667011264434896406?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://coding-and-more.blogspot.com/2011/06/its-official-developers-get-better-with.html?spref=bl' title='Peter&apos;s blog: It&apos;s official: developers get better with age. And...'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/7667011264434896406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/7667011264434896406'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/06/peters-blog-its-official-developers-get.html' title='Peter&apos;s blog: It&apos;s official: developers get better with age. And...'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-1965940203189599461</id><published>2011-05-22T22:54:00.000-04:00</published><updated>2011-05-22T22:54:28.372-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><category scheme='http://www.blogger.com/atom/ns#' term='development methodology'/><title type='text'>Agile</title><content type='html'>&lt;a href="http://dilbert.com/strips/comic/2007-11-26/" title="Dilbert.com"&gt;&lt;img alt="Dilbert.com" border="0" src="http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/00000/1000/700/1791/1791.strip.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dilbert.com/strips/comic/2007-11-26/" title="Dilbert.com"&gt;&lt;img alt="Dilbert.com" border="0" src="http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/00000/1000/000/1051/1051.strip.gif" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-1965940203189599461?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/1965940203189599461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/1965940203189599461'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/05/agile.html' title='Agile'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-2598920887975733469</id><published>2011-05-19T10:19:00.000-04:00</published><updated>2011-05-19T10:19:06.909-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jmonkeyplatform'/><category scheme='http://www.blogger.com/atom/ns#' term='java3d'/><title type='text'>(Updated) jMonkeyEngine + Eclipse = JMonkeyPlatform</title><content type='html'>JMonkeyEngine has "jMonkeyPlatform" -- all in one IDE (using eclipse) for jMonkey. &amp;nbsp;No more hassle with installing all different components. &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://java3d.java.net/"&gt;Java3D&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jmonkeyengine.org/"&gt;JMonkeyEngine&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="349" src="http://www.youtube.com/embed/nL7woH40i5c?rel=0" width="560"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-2598920887975733469?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/2598920887975733469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/2598920887975733469'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2010/10/jmonkeyengine-eclipse.html' title='(Updated) jMonkeyEngine + Eclipse = JMonkeyPlatform'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/nL7woH40i5c/default.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-9531440.post-7032306162374187243</id><published>2011-05-06T17:49:00.000-04:00</published><updated>2011-05-06T17:49:31.150-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><title type='text'>Google Chrome: Dear Sophie</title><content type='html'>&lt;iframe width="560" height="349" src="http://www.youtube.com/embed/R4vkVHijdQk?rel=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9531440-7032306162374187243?l=blog.keithkim.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/7032306162374187243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9531440/posts/default/7032306162374187243'/><link rel='alternate' type='text/html' href='http://blog.keithkim.com/2011/05/google-chrome-dear-sophie.html' title='Google Chrome: Dear Sophie'/><author><name>Keith Kim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/R4vkVHijdQk/default.jpg' height='72' width='72'/></entry></feed>
