Posts

Showing posts from January, 2010

A followup on using Windows 7 for Ruby and Java development

I wrote 2 weeks ago about adapting to using my new Windows 7 laptop (inexpensive, well constructed, and 4 cores). This is a followup with some miscellaneous advice. I was having some problems writing with Latex so I re-installed MikTex doing a complete installation (well over 1 gig). My Latex problems are solved with some brute force. Still, when I know that I will be mostly writing, I still boot my MacBook to use TexShop, etc. With a much faster laptop (4 cores!), I am very much enjoying using the new IntelliJ 9 for Java, Scala, and Clojure development. I am currently writing code that wraps the Sesame RDF data store, my own geolocation code, and Lucene. (I am writing a book on the AllegroGraph product and I want all of the examples to also run using my wrapper for Sesame, my geolocation stuff, and Lucene.) I am also writing idiomatic wrappers (to my wrapper) in Clojure and Scala and it is great to have everything in one large IntelliJ project. I continue to rely on E TextEditor (a W...

The beauty of Latex: my AllegroGraph book becomes two books, one for JVM languages and one for Lisp

Image
I have been working on and off for 16 months on a book about Semantic Web (or Linked Data) application programming using the AllegroGraph product. I have decided to substantially increase the scope of this applications/tutorial style book to also include support for Sesame . The figure on the left shows the software architecture road map for the book using JVM languages. I am splitting the book into two volumes, and using Latex makes this really easy to share small amounts of common material so both books stand on their own. Latex also makes it easy to combine both books into one all-inclusive book, eliminating the duplicated parts. The two volumes are: Volume I: will cover the use of both AllegroGraph and Sesame using JVM languages: Java, Scala, JRuby, and Clojure. I am working on a common wrapper written in Java that supplies my own (rather simple) API to both AllegroGraph and Sesame. My wrapper implements Sesame support for geolocation and free text indexing and search so the wrapp...

Looking towards a universal wrapper/proxy for knowlege and data stores

I often start out by writing code specific for a single project and then refactor it to make working code more generally useful. I am working on an applications book for the AllegroGraph RDF data store services. Since most people (probably) use Java clients with AllegroGraph, the first step is to wrap Franz's APIs with my own interfaces so for my own work (that is, beyond the scope of writing this book), I can write implementations for other back end RDF data stores as I need them. I also plan on writing "thin" Scala, JRuby, and Clojure friendly interfaces to my Java library. For the purposes of the book, I'll use this library to support example client applications written in Java, JRuby, Scala, and Clojure. I have a lot of material already written with Lisp examples but I think that I am going to set that all aside for a future writing project (that I may, quite honestly, never get back to). I also decided to not support Python in my book: Franz has a good Python int...

Using Windows 7 for Ruby and Java development

As I mentioned in my last blog, I surprised my friends and family by buying a Windows 7 laptop. The combination of Windows 7 and Ubuntu is not quite as good as OS X and Ubuntu dual boot, but try buying a Mac laptop with 4 CPU cores. Of course, the first thing to do to a Windows 7 system is to install cygwin. I installed just about everything available. To avoid confusion, I always run bash in command windows and I set up my .bashrc file for cygwin to mimic my .profile file for OS X and my .bashrc file for Ubuntu. With cygwin installed, life is good. For basic Ruby and Java development, Rubymine and IntelliJ work identically under OS X, Windows 7, and Ubuntu Linux. I needed a plain text editor: I use TextMate on OS X and GEdit on Ubuntu. I tried, then bought a copy of E TextEditor that works with TextMate plugins. Recommended! I also installed XEmacs. For writing I installed OpenOffice.org and Latex (I used the MikTex distribution). Both E TextEditor and XEmacs are fine for editing Lat...

New laptop: Toshiba Satellite U505

I very much like the MacBook that I bought almost three years ago, but it has it limitations (mainly not enough disk space). I decided to buy a "Windows" laptop because for $800 I could get a laptop with 4 CPU cores (Intel CORE i3), 1/2 terabyte disk, and 4 gigs RAM. Ubuntu Linux uses all the cores :-)

Running OpenCyc 2.0 on OS X

The latest release of OpenCyc uses a Java runtime so it is portable. I often keep OpenCyc running on one of my servers, but for convenience I also wanted to be able to run it on my MacBook. My MacBook only has 2GB of RAM but this seems to be adequate, especially because I don't run the JVM in server mode on my laptop. Start by downloading the Linux OpenCyc 2.0 distribution. Make a copy of the file opencyc-2.0/server/cyc/run/bin/run-cyc.sh and replace the original file contents with: #!/bin/bash MIN_HEAP=1300m MAX_HEAP=1300m PERM_SIZE=98m java -Xms$MIN_HEAP -Xmx$MAX_HEAP -XX:MaxPermSize=$PERM_SIZE -cp lib/cyc.jar:lib/subl.jar:lib/juni\ t.jar:resource:lib/ext:plugins com.cyc.tool.subl.jrtl.nativeCode.subLisp.SubLMain -f "(progn (load\ \"init/jrtl-release-init.lisp\")))" "$@" With these settings, OpenCyc 2.0 starts up quickly and has fairly good runtime performan...