December 21, 2011
[Mac] Delete backups from Time Macine
December 19, 2011
Book: Programming Erlang: Software for a Concurrent World
I actually read this book a few years ago -- I was searching for a better way for concurrent programming and found Erlang. Coincidently, Erlang was starting to get some attention little after. I believe this was the only Erlang book at that time. The book clearly shows and explains how to program in Erlang. Reading this book was like a wake-up call for me, whose background is mostly OOP and procedural languages.
Book: Clojure in Action
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. I enjoyed reading this book very much, and I strongly recommend to anyone who wants to know Clojure. After this book, you might want to read Joy of Clojure, which delves into Clojure deeper.
December 2, 2011
Common Lisp, Web framework, VPS, OSX issues
Goal:
Develop web apps using common lisp with a web framework in Linux environment.
Environment:
Dev: OSX 10.6 Snow leopard.
Target: Ubuntu 10.10 on OpenVZ, tiny config, hosted in VPS.
Issues:
Two widely used common lisp web frameworks and require multi threading:
(Use quicklisp to install them.)
1. Dev env:
OSX's CLISP binary doesn't support multithreading.
Tried SBCL, and macport binary does support multithreading.
2. Target env:
Ubuntu's CLISP package supports multithreading.
SBCL install via apt-get failed. There's a problem with memory (don't remember the specific message). It was due to SBCL's memory requirement, needing 8GB of memory for its GC, but the server only has 512MB with no swap, since openVZ does not give swap.
On dev env - use SBCL, on target, use CLISP.
Some suggested that LISPBOX has Clozure Common LISP and the binary supports multithreading on OSX, therefore use that (lispbox's clozure). However, on this VPS' Ubuntu, installing LISPBOX seems unnecessarily difficult, due to the LISPBOX binary's age and wouldn't install on VPS' headless Ubuntu 11.04.
Conclusion
There is an issue with CLISP on OSX , SBCL on OpenVZ based VPS.
Apache, Glassfish and JAX-WS
Environment: Apache, Glassfish 3.1.1 (or here) on Ubuntu server 11.04, behind FW with VIP. Here is the good tutorial on installing Glasfish on Ubuntu.
Start/Stop commands for Glassfish:
glassfish/bin/asadmin stop-domain domain1
glassfish/bin/asadmin start-domain domain1
- For virtual hosting, this page might be a good help.
- For SSL, see this page.
Apache + Glassfish
Usual Reverse Proxy configuration will work fine:
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
JAX-WS (Web Service) "soap:address location" Issue
My apache server is behind a firewall, and has a VIP, then using apache reverse proxy to Glassfish. 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:
<soap:address location="http://127.0.0.1/myapp/mywebservice"/>
This is a problem for client to generate WS client codes using the WSDL. I spent good amount of time Googling for the solution and found a few things:
1. it's been reported as a bug and is supposed to be fixed before 3.1.1. May be my problem is caused by my environment: FW and VIP.
2. someone actually wrote servlet filtering to intercept the output, and regex the host name to change it to a correct one.
3. another solution was to grab the generated WSDL, save it locally, hand edit it, then upload.
#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. So did more digging and reading, found a simpler solution. In the Apache config for the reverse proxy, just add one more line and it would look like this:
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
I hope this little finding saves other developers' time.
Rooting Nook Tablet
It'd be nice if I can do some programming on the device directly (and compile too).
Nook SDK: https://nookdeveloper.barnesandnoble.com/tools-services/nook-tablet-sdk.html
Nook Color vs. Nook Tablet vs. Kindle Fire: http://www.barnesandnoble.com/u/compare-nook-tablet-vs-kindle-fire/379003173/
So far, Nook Tablet looks like it is the best low-end/cost tablet.
Amazon's Kindle source code
http://www.amazon.com/gp/help/customer/display.html?nodeId=200203720
...source codes for Kindle 2nd gen, 3rd gen, 3G, DX, 6" wifi, Touch, and the latest Kindle Fire.
September 20, 2011
September 15, 2011
Visualization
Some interesting pages from this site:
- Class room sitting habits
- Girl Scout cookie pie chart
- True size of Africa
- 17 ways to visualize the Twitter universe
- Rise of the data scientist
- What visualization tool/software should you use? - Getting started
- Dreaming in numbers
- 40 essential tools and resources to visualize data
- GnuPlot, Python with Scipy/Numpy, PHP -- they are all very good tools for creating charts.
- Use Google Chart, JavaScript or Flash for charting.
- Search for existing tools first, rather than bang your head on the ground and write from scratch.
September 7, 2011
Great free kindle ebook from O'Reilly - Big Data Now
September 6, 2011
quicklisp
ASDF doesn't work for me -- I couldn't install it properly on OSX, and it is obsolete anyway. I found quicklisp (http://www.quicklisp.org/beta) instead, and it works quite well.
For Common Lisp, check your Common Lisp version -- I believe it requires at least 2.47.
Simple Steps
- wget http://beta.quicklisp.org/quicklisp.lisp
- Run lisp: $ clisp (or sbcl)
- (load "quicklisp.lisp")
- (quicklisp-quickstart:install)
- ; load quick lisp at start up. do only once.
(ql:add-to-init-file) - ; check if pkg avail
(ql:system-apropos "<package name>") - ; load -- replace <package name> with package name
(ql:quickload "<package name>")
- It will create and store downloaded modules under ~user/quicklisp.
- Step#5 will modify ~/.sbclrc or ~/.clisprc
- quicklisp doesn't resolve dependencies.
- clbuild is another lisp package installer.
September 3, 2011
Stanford opens some information technology courses to the world
September 1, 2011
Book: The Passionate Programmer
Get a Kindle
Very convenient and many ebooks are cheaper than printed books.
August 27, 2011
Mercurial using BitBucket and Eclipse
(1) Create a repository in BitBucket.
(2) Go into shell, and clone from BitBucket which is empty.
$ mv hello_world hello_world.bak $ cp -r hello_world.bak hello_world $ hg clone https://bitbucket.org/BBUSER/hello_world http authorization required realm: Bitbucket.org HTTP user: BBUSER password: destination directory: hello_world no changes found updating to branch default 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(3) Then move or copy those files from the local project directory into the BitBucket cloned directory.
$ cd hello_world $ hg add adding .... [ommit] $ hg ci -u BBUSER $ hg push
(4) Remove hello_world project from eclipse (make sure to have a backup) and from disk.
(5) In eclipse's menu -> New -> Other -> Mercurial -> Clone Existing Mercurial Repository, then click <next> button.
(6) In next dialog, enter URL to the BitBucket repository (get this when the repository was created, or go to the site and find out), username/password.
(7) Click next, next, finish.
...there should be an easier way...
August 26, 2011
12 Things A Programmer Really Needs To Know
...
http://regulargeek.com/2010/08/07/12-things-a-programmer-really-needs-to-know/
August 21, 2011
Selling Yourself: Why? and How!
http://www.javacodegeeks.com/2011/08/selling-yourself-why-and-how.html
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?
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.
June 16, 2011
Peter's blog: It's official: developers get better with age. And...
May 22, 2011
May 19, 2011
(Updated) jMonkeyEngine + Eclipse = JMonkeyPlatform
May 6, 2011
May 3, 2011
April 30, 2011
ACM lifetime member!
I've been a member of ACM since 1998. I finally decided to become a lifetime member. Being an ACM member means getting great benefits, magazines, and a lot of great information in Computer Science world.
My member VCARD: http://member.acm.org/~keithkim
Permanent email address: keithkim-at-acm-dot-org
February 17, 2011
Google API
* Google Data API
Get Google Data API plugin and follow this instruction:
http://code.google.com/p/gdata-java-client-eclipse-plugin/wiki/Installation
http://www.thetechtrendz.com/2011/02/getting-started-with-gdata-api-in-java.html
(It needs Google Guava: http://code.google.com/p/guava-libraries/ )
* Google Data API - http://code.google.com/apis/gdata/javadoc/
* Google Calendar API - http://code.google.com/apis/calendar/data/2.0/developers_guide_java.html
To Do - Java App Engine
* Data Store - http://code.google.com/appengine/docs/java/datastore/overview.html
* Data Store with JDO - http://code.google.com/appengine/docs/java/gettingstarted/usingdatastore.html
* Data Store with JPA - http://code.google.com/appengine/docs/java/datastore/jpa/overview.html
* http://www.ibm.com/developerworks/java/library/j-gaej3.html
Tools
* Heap memory testing tool - http://sourceforge.net/projects/hmte/
* Contracts for Java - http://code.google.com/p/cofoja/
Tips
* GAE, browse local java app engine datastore: http://localhost:8888/_ah/admin