Tuesday, August 19, 2008
Wanted: authors for my 'virtual publishing' business
My wife Carol and I are starting a virtual publishing business. We are seeking a few authors to work with.
Carol is a world class editor and I am going to help authors with book content planning, technical editing, and marketing. We are aiming for the niche book market. I have noticed that the large book chains now have very little shelf space devoted to computer books. With fewer books sold through the major book store chains, instant on demand printing is looking more attractive since print on demand books can still be purchased from Amazon and directly from the printer. Additionally, traditional publishers must consider the size of market for any proposed book project to offset their high overhead per book while the cost is relatively constant for instant printing.
We are planning on flipping the royalty split differently than traditional publishers: authors will get most of the profit from each book sold. The profit from on demand printed books will probably be around $10 to $15 per book. Compare this to a few dollars per book that publishers usually pay in royalties.
I believe that both authors and my wife and I can make sufficient profit from niche market books to make this profitable. I am about 1/3 done with my first book that we will publish ("Practical Artificial Intelligence Programming in Java, third edition") and I have done some work on writing example programs for a work in progress ("Practical Semantic Web Programming in Java").
My advice to people wanting to write a book: if the topic is more "mass market", then I would recommend going with a traditional publisher. I have had 14 books published and with only one exception, every publisher that I have worked with has been great. However, many of us have a real passion for specific subjects that are more niche or small market: here I believe it is better to write what you have real passion for, and hope that the higher profit per book sold makes print on demand work financially.
Carol is a world class editor and I am going to help authors with book content planning, technical editing, and marketing. We are aiming for the niche book market. I have noticed that the large book chains now have very little shelf space devoted to computer books. With fewer books sold through the major book store chains, instant on demand printing is looking more attractive since print on demand books can still be purchased from Amazon and directly from the printer. Additionally, traditional publishers must consider the size of market for any proposed book project to offset their high overhead per book while the cost is relatively constant for instant printing.
We are planning on flipping the royalty split differently than traditional publishers: authors will get most of the profit from each book sold. The profit from on demand printed books will probably be around $10 to $15 per book. Compare this to a few dollars per book that publishers usually pay in royalties.
I believe that both authors and my wife and I can make sufficient profit from niche market books to make this profitable. I am about 1/3 done with my first book that we will publish ("Practical Artificial Intelligence Programming in Java, third edition") and I have done some work on writing example programs for a work in progress ("Practical Semantic Web Programming in Java").
My advice to people wanting to write a book: if the topic is more "mass market", then I would recommend going with a traditional publisher. I have had 14 books published and with only one exception, every publisher that I have worked with has been great. However, many of us have a real passion for specific subjects that are more niche or small market: here I believe it is better to write what you have real passion for, and hope that the higher profit per book sold makes print on demand work financially.
Wednesday, August 13, 2008
New version of my KBtextmaster NLP library is available
I just released a new version of my KBtextmaster Natural Language Processing (NLP) Java library. Free for non-commercial use, with a small fee for commercial use. Should also work fine with JRuby :-)
Labels: AI, commercial products, Java, NLP
Friday, August 08, 2008
More use of Eclipse and Mylyn: new book project using Latex
Except for Ruby and Rails (where I use a combination of NetBeans and TextMate) I am switching over just about all of my projects to Eclipse and Mylyn because of Mylyn's task management functionality: if you have not given Mylin a try, please do :-)
I am working on the 3rd edition of my Java AI book and I set up Eclipse with TeXlipse today. Now, I have always liked using TeXShop on my Mac, and I still really like TeXSHop but the ability to have my book code examples and my Latex files in one working environment with Mylin task management makes it well worth the effort to switch setups.
I am working on the 3rd edition of my Java AI book and I set up Eclipse with TeXlipse today. Now, I have always liked using TeXShop on my Mac, and I still really like TeXSHop but the ability to have my book code examples and my Latex files in one working environment with Mylin task management makes it well worth the effort to switch setups.
Labels: Eclipse, Latex, Mylin, technical writing
Saturday, August 02, 2008
Eclipse Mylyn: a show-changer?
I have been using Netbeans this year for most Java, Ruby, and Ruby on Rails development. Except for Ruby on Rails development, I think that I may switch back to Eclipse because of the Mylyn sub-project. I blogged about Mylyn a year and half ago (when it was called Mylar) and I recently gave the latest versions of Eclipse and Mylyn another try with Java, plain Ruby, and plain Python projects.
Mylyn treats tasks as first class objects that aggregate developer experience with specific source files, emails, web sites visited, bug tracking systems, etc. In the simplest use, you create tasks and let Eclipse know which task that you are working on. Mylyn remembers which files you edit, etc. and only shows you working material that you use most for the current task. You can easily switch back to a "show me everything" mode. Switching tasks immediately changes Eclipse to show you only the working materials for the newly selected task.
As a developer it feels very comfortable to see just what you need as you switch tasks. I like to turn off email and the telephone during development to reduce distractions. Having an IDE hide everything but the working material for the task at hand also helps to stay focused. Cool stuff!
Mylyn treats tasks as first class objects that aggregate developer experience with specific source files, emails, web sites visited, bug tracking systems, etc. In the simplest use, you create tasks and let Eclipse know which task that you are working on. Mylyn remembers which files you edit, etc. and only shows you working material that you use most for the current task. You can easily switch back to a "show me everything" mode. Switching tasks immediately changes Eclipse to show you only the working materials for the newly selected task.
As a developer it feels very comfortable to see just what you need as you switch tasks. I like to turn off email and the telephone during development to reduce distractions. Having an IDE hide everything but the working material for the task at hand also helps to stay focused. Cool stuff!
Tuesday, July 29, 2008
New cuil.com search site and other alternative search engines
As someone who has spent a lot of my own time experimenting with Nutch, I have long desired to create my own "niche" search site that indexed only technology sites with clustered result categories. So, I am a little envious of ex-google employees and their family/friends who (reportedly) had $30 million of venture capital to start the cuil.com search site. Although a lot of the images don't seem to match search results, cuil.com looks pretty good - I especially like the "Explore by Category" tab that works similarly to another favorite search site clusty.com. "Explore by Category" is both cool and useful!
It is interesting that new search engines can attract a lot of venture capital: with Google, Microsoft, and Yahoo all making very large investments, it must make investors nervous - but with the upside of large financial gains if any search startup gets a good fraction of the market.
It is interesting that new search engines can attract a lot of venture capital: with Google, Microsoft, and Yahoo all making very large investments, it must make investors nervous - but with the upside of large financial gains if any search startup gets a good fraction of the market.
Monday, July 28, 2008
Open data sources like Metaweb, Wikipedia, and SEC Edgar database
I just read a few month old blog by Toby Segaran (author of the very useful book Programming Collective Intelligence
) on link information for shared board of directors members between large corporations. Many years ago I did something similar from combined CIA Factbook and SEC Edgar data and I still have a SQL dump file on my Open Source web page.
Since Toby works at Metaweb he fetched the corporate director link data from Metaweb (Freebase). Freebase sets a high standard for the ease of finding and extracting information. Other sources like Wikipedia (via custom web scraping or fetching their entire database) or the RDF extraction of Wikipedia (DBpedia) are not as simple to use, but still useful.
I have a long history of organizing and cataloging information, starting in the 1980s at SAIC. Back in the pre-gopher days, I used to maintain lists (as plain text files) of where to find useful tools and information on FTP sites on the Internet and when someone would ask me where to find something then I would grep my own lists. Things have improved a lot since then :-)
I just finished the rough draft for an article on the Semantic Web this morning. Although standards like RDF/RDFS/OWL/SPARQL are very useful, I expect the Semantic Web to also have a strong ad hoc component. However ad hoc information sources may have standard interfaces built for them (E.g., SPARQL end points, etc.)
Since Toby works at Metaweb he fetched the corporate director link data from Metaweb (Freebase). Freebase sets a high standard for the ease of finding and extracting information. Other sources like Wikipedia (via custom web scraping or fetching their entire database) or the RDF extraction of Wikipedia (DBpedia) are not as simple to use, but still useful.
I have a long history of organizing and cataloging information, starting in the 1980s at SAIC. Back in the pre-gopher days, I used to maintain lists (as plain text files) of where to find useful tools and information on FTP sites on the Internet and when someone would ask me where to find something then I would grep my own lists. Things have improved a lot since then :-)
I just finished the rough draft for an article on the Semantic Web this morning. Although standards like RDF/RDFS/OWL/SPARQL are very useful, I expect the Semantic Web to also have a strong ad hoc component. However ad hoc information sources may have standard interfaces built for them (E.g., SPARQL end points, etc.)
Thursday, July 24, 2008
Dynamic language 'goodness': comparing JRuby and Java Semantic Web example programs
Although there are several Semantic Web libraries or frameworks that I like to use, I had to choose just one for a DevX article that I am finishing up. I chose to use Sesame. After covering what I think are some "big wins" of using RDF/RDFs/OWL (for some applications) I present some example programs that I hope that readers have lots of fun with. The "wrapper" library that I wrote for Sesame works fine for both Java (which Sesame is written in) and JRuby. I must say that for experimenting with Sesame, JRuby is a lot nicer because the example programs are much shorter and with Ruby duck typing it is easier to write callback handlers, etc. for my wrapper library. Being able to work interactively in a JRuby jirb shell is also a big win for experimenting with code, different SPARQL queries, etc.
Labels: Java, RDF, Ruby, semantic web
Thursday, July 17, 2008
Programming for small devices
Several years ago I did a few projects for the "Java cell phone" (J2ME) platform, and had a lot of fun with that.
After recently setting up NetBeans with the Java ME CDC tools and Eclipse with the most recent Android platform tools, late last night and early this morning I installed Apple's latest developer's tools that include the iPhone SDK and Dashcode. Since I very much like my Nokia N800, I am also interested in medium resolution devices (the N800 has a good 800x480 screen).
My interest is in writing web portals that support both browsers and small devices. One option is just creating special CSS for different web browser screen sizes, and another option is rendering page view data as XML or JSON and letting rich clients provide the display and handling of forms, etc. (an option I used several years ago on a customer project).
Ideally, I would like to be able to support a wide variety of small devices without a very large investment in my time getting (back) up to speed. I have just a little experience with Objective-C and Cocoa so for the iPhone, just using Dashcode looks like a good option (for me).
After recently setting up NetBeans with the Java ME CDC tools and Eclipse with the most recent Android platform tools, late last night and early this morning I installed Apple's latest developer's tools that include the iPhone SDK and Dashcode. Since I very much like my Nokia N800, I am also interested in medium resolution devices (the N800 has a good 800x480 screen).
My interest is in writing web portals that support both browsers and small devices. One option is just creating special CSS for different web browser screen sizes, and another option is rendering page view data as XML or JSON and letting rich clients provide the display and handling of forms, etc. (an option I used several years ago on a customer project).
Ideally, I would like to be able to support a wide variety of small devices without a very large investment in my time getting (back) up to speed. I have just a little experience with Objective-C and Cocoa so for the iPhone, just using Dashcode looks like a good option (for me).
Labels: Java
Sunday, July 13, 2008
I am evaluating Google's Protocol Buffers for my knowledgebooks.com KB_bundle product
I am working on a new Java version of my knowledgebooks.com KB_bundle product (see home page for an overview) that implements an all in one toolbox for Natural Language Processing (NLP), entity extraction from text, text summarizing, text clustering, knowledge extraction to RDF/RDFS, support for document management (file management, index/search), and SPARQL querires of either embedded or external RDF data stores. KB_bundle will be free for non-commercial use and evaluation, and available for a fee for commercial use.
While I designed KB_bundle as an embedded Java library, I have always planned for both RESTful and SOAP web service support. I have been looking at Google's Protocol Buffer documentation and examples this weekend and I think that I will also supply a third wrapper for Protocol Buffer RPC support.
Earlier this year, a project that I was working on had performance problems due to the overhead of serializing data to XML and then parsing it in a REST based system. The problem was that when the project started, relatively little data was transferred between back end processes and a front end Rails application so the overhead of using XML was OK. As the project requirements changed, we passed much more data encoded in XML. I am looking at Protocol Buffer in general as a way to avoid performance problems in the future.
While I designed KB_bundle as an embedded Java library, I have always planned for both RESTful and SOAP web service support. I have been looking at Google's Protocol Buffer documentation and examples this weekend and I think that I will also supply a third wrapper for Protocol Buffer RPC support.
Earlier this year, a project that I was working on had performance problems due to the overhead of serializing data to XML and then parsing it in a REST based system. The problem was that when the project started, relatively little data was transferred between back end processes and a front end Rails application so the overhead of using XML was OK. As the project requirements changed, we passed much more data encoded in XML. I am looking at Protocol Buffer in general as a way to avoid performance problems in the future.
Saturday, July 12, 2008
OpenDS 1.0 LDAPv3 server
OpenDS 1.0 LDAP server has just been released and was easy to install, configure, and run. One thing that I especially like is that it is set up by default to run nicely in a development environment (including test data to play with) with directions for reconfiguring for production use with replication.
I used the JNLP setup file, hitting this link and accepted the standard install options (installed in my home directory in ~/OpenDS). There are test command line clients to test the installation and configuration; for example:
I used the JNLP setup file, hitting this link and accepted the standard install options (installed in my home directory in ~/OpenDS). There are test command line clients to test the installation and configuration; for example:
markw$ bin/ldapsearch --hostname localhost --port 1389 --baseDN "dc=example,dc=com" --searchScope base "(objectClass=*)"and then you can use JNDI APIs for Java client LDAP enabled applications. I think that Sun is going to offer good support for Glassfish + OpenDS (if they don't already). BTW, I have many years of good experiences developing on the Tomcat platform (and a little less use of JBoss) but I am becoming more enthusiastic about Glassfish, integration with NetBeans, etc. The days of consultants developing their own private set of infrastructure tools is just about over: for me, I look to either a subset of J2EE or Ruby on Rails to save development time on projects. Except for developing my own tools that are very application domain specific (usually AI, text and data mining, NLP, etc.), I prefer spending time studying and using standard frameworks, plugins, and components.
dn: dc=example,dc=com
objectClass: domain
objectClass: top
dc: example
Wednesday, June 25, 2008
A trip down memory lane: Pascal development
In the late 1970s, I used UCSD Pascal to develop what was the world's first commercial Go playing program ("Honinbo Warrior"). A nice language and tools. I just received a small grant to convert one of my LGPL Open Source projects (FastTag: a part of speech tagger for both English and for English + medical terms) from Java to Pascal.
Monday, June 23, 2008
Great tools: the Java advantage
Last February, I wrote a AI blog article on a very simple Ruby library to parse some relationship values returned by the Open Calais web service. I wanted the same functionality today in a Java program. I was surprised that the number of lines of code required was the same - strange since Ruby is a much more concise language than Java.
The trick was that I was able to point my NetBeans IDE at the WSDL file for the Open Calais web service, and the work of calling the web service was essentially done. The Java code for parsing what I wanted out of the returned result was a little longer than the Ruby code, so the two programs ended up being the same length.
Another example of a time saver for Java vs. dynamic languages like Ruby, Python, and Lisp: using a Java IDE (like NetBeans) to generate unit test stubs from any application class - not so good for test first development, but I don't do that: I like to make a first cut at implementing classes, then add unit tests. While the Domain Specific Language (DSL) Ruby on Rails does generate test stubs, they are not as complete or useful as what NetBeans generates for me.
Lastly, because Java is a statically typed language, Java IDEs still do a better job at refactoring, code completion, etc. than environments for dynamic languages although Emacs based Lisp development tools and the Ruby NetBeans tools are very good.
The trick was that I was able to point my NetBeans IDE at the WSDL file for the Open Calais web service, and the work of calling the web service was essentially done. The Java code for parsing what I wanted out of the returned result was a little longer than the Ruby code, so the two programs ended up being the same length.
Another example of a time saver for Java vs. dynamic languages like Ruby, Python, and Lisp: using a Java IDE (like NetBeans) to generate unit test stubs from any application class - not so good for test first development, but I don't do that: I like to make a first cut at implementing classes, then add unit tests. While the Domain Specific Language (DSL) Ruby on Rails does generate test stubs, they are not as complete or useful as what NetBeans generates for me.
Lastly, because Java is a statically typed language, Java IDEs still do a better job at refactoring, code completion, etc. than environments for dynamic languages although Emacs based Lisp development tools and the Ruby NetBeans tools are very good.
Labels: Java
Friday, June 20, 2008
Good news: Microsoft to support ODF as default Word file format
I am going to wait a while, and if their support is good I will probably upgrade to the newest version of Mac Word.
I have written 2 of my last 3 books using OpenOffice.org, not Word, but Word is a slick product and if I feel very comfortable that my Word ODF documents are readable by all of the word processors that already support ODF, then Microsoft gets another sale - this all depends on their sticking to the ODF standard and not messing with it.
I recommended in a blog a few years ago that Microsoft both support ODF and stop releasing new version names of Windows and instead sell a yearly subscription for updates - let's see if they take my advice on that :-)
I have written 2 of my last 3 books using OpenOffice.org, not Word, but Word is a slick product and if I feel very comfortable that my Word ODF documents are readable by all of the word processors that already support ODF, then Microsoft gets another sale - this all depends on their sticking to the ODF standard and not messing with it.
I recommended in a blog a few years ago that Microsoft both support ODF and stop releasing new version names of Windows and instead sell a yearly subscription for updates - let's see if they take my advice on that :-)
Thursday, June 12, 2008
PLT Scheme v4.0 is released
The PLT Scheme system has always been impressive and now it looks even better. It supports R6RS and many improvements to the documentation. If you have used PLT Scheme (DrScheme) before, it is a good idea to at least read through the Welcome to PLT Scheme Introduction to pick up the changes.
Sunday, June 01, 2008
Ruby on Rails 2.1 and the MagLev Ruby virtual machine
First, 2.1 looks like a great update: I have not seen any compatibility problems with 2.0 that could not be instantly fixed. The named_scope (has_finder) changes look good for organizing database queries, and I especially like the way they nest. I have not tried using the new gems dependency functionality yet but this looks very useful when deploying applications to fresh servers.
The news about the large performance boost using MagLev looks interesting, but I will reserve my enthusiasm until the project is further along and I can try running it myself. I find myself reverting from coding in Ruby back to Common Lisp or Java to get around performance issues, so a much faster Ruby runtime environment sounds good. Ruby is such a slow language, that there is plenty of room for improvement.
The news about the large performance boost using MagLev looks interesting, but I will reserve my enthusiasm until the project is further along and I can try running it myself. I find myself reverting from coding in Ruby back to Common Lisp or Java to get around performance issues, so a much faster Ruby runtime environment sounds good. Ruby is such a slow language, that there is plenty of room for improvement.
Labels: Ruby, Ruby Rails
Friday, May 23, 2008
"Indiana Jones and the Kingdom of the Crystal Skull": Cate Blanchett steals the show
Cate Blanchett plays the villainess, with lots of humor. This movie is well worth seeing. Blanchett is an amazing actress who has played many very different types of roles in her career.
Wednesday, May 21, 2008
Packaging Java libraries to be "IDE friendly"
I have been working on packaging some of my (mostly) research code into four libraries (a picture), three that depend on a forth.
My concern is mostly "Java IDE kung-fu": users of these libraries (mostly just me :-) only want the highest level APIs to show in popup completion lists and the entire set of implementation classes remain invisible. The solution is easy: a public API class with implementation classes in the same package with package-ony (i.e., neither public or private) visibility.
My concern is mostly "Java IDE kung-fu": users of these libraries (mostly just me :-) only want the highest level APIs to show in popup completion lists and the entire set of implementation classes remain invisible. The solution is easy: a public API class with implementation classes in the same package with package-ony (i.e., neither public or private) visibility.
Labels: Java
Sunday, May 18, 2008
Scala and the Lift web applicaton framework
I have been playing with Scala for a while - playing is the correct word to use since I am waiting to see how popular the language becomes. I think that Scala will possibly end up being 'the better Java' for the JVM, but for my business I prefer not learning and using another language that is not main stream (my almost 25 years of using Lisp professionally has sometimes been a hassle because of the unavailability of other skilled Lisp developers and a smaller ecosystem, and I don't want to devote a lot of time to mastering another language that may end up being "on the fringe").
That said, Scala is a very nice language that has two non-language things going for it: very efficient runtime performance with OK memory use and that it runs on the JVM. Scala looks to be a good language for AI development and its interactive console adds some of the advantages of interactive bottom up development - a style I like to use when working in Lisp, Ruby, or Python.
Until this morning I have only read about the Scala Lift web framework, but after reading Vivek Pandey's blog about running Lift I gave it a try this morning. The maven setup and default web application construction was all very smooth, and the generated code was interesting to read. I also like the way Scala unit tests work and the debug modes supporting both an interactive Scala console and running with an embedded jetty web server. Everything works very well together and the entire system has a polished feel to it.
That said, Scala is a very nice language that has two non-language things going for it: very efficient runtime performance with OK memory use and that it runs on the JVM. Scala looks to be a good language for AI development and its interactive console adds some of the advantages of interactive bottom up development - a style I like to use when working in Lisp, Ruby, or Python.
Until this morning I have only read about the Scala Lift web framework, but after reading Vivek Pandey's blog about running Lift I gave it a try this morning. The maven setup and default web application construction was all very smooth, and the generated code was interesting to read. I also like the way Scala unit tests work and the debug modes supporting both an interactive Scala console and running with an embedded jetty web server. Everything works very well together and the entire system has a polished feel to it.
Labels: Scala, web applications
Saturday, May 17, 2008
Book review: "Semantic Web for the Working Ontologist"
Dean Allemang and Jim Hendler's book provides a good overview of data modeling for the Semantic Web. Amazon purchase link: Semantic Web for the Working Ontologist: Effective Modeling in RDFS and OWL
. As someone who has invested a lot of time with both open source tools (Jena, Redland, Sesame, OwlApi, Protege, and Swi-Prologs Semantic Web libraries) and a commercial product (Franz AllegroGraph) it is refreshing to read a good book that abstracts away details like specific tools and RDF XML serialization and covers concepts and modeling how-to issues. I found it useful to enjoy this book at a high level while stopping occasionally to pause and experiment at the low level with OwlAPI, Redland, Protege, Sesame, and AllegroGraph. BTW, I wish that someone had told me years ago to never view XML serialization of RDF :-) The authors choice of showing XML serialization one time and then using N3 is very good.
There are a few tiny annoyances with this book, the primary one being small errors in the text that should have been caught in technical review. These do not however detract at all from the usefulness of the book - it is just too bad that such a very well thought out book has easily fixed mistakes.
For me one of the potential uses of this book is to loan it to or recommend it to customers who might want or need to use Semantic Web technology: I make my living as a consultant and it is important to have well informed customers and this book will provide a good understanding and rational for technically inclined customers, especially people with strong domain knowledge who want to (and can) directly participate in modeling efforts.
There are a few tiny annoyances with this book, the primary one being small errors in the text that should have been caught in technical review. These do not however detract at all from the usefulness of the book - it is just too bad that such a very well thought out book has easily fixed mistakes.
For me one of the potential uses of this book is to loan it to or recommend it to customers who might want or need to use Semantic Web technology: I make my living as a consultant and it is important to have well informed customers and this book will provide a good understanding and rational for technically inclined customers, especially people with strong domain knowledge who want to (and can) directly participate in modeling efforts.
Labels: semantic web
Saturday, May 10, 2008
Programming: sometimes simpler is better
I recently chose a development environment for a spare time project: I am re-working some of my old algorithms and miscelanious code (in several different programming languages) for extracting semantic information from plain text after reading through the excellent book The Text Mining Handbook: Advanced Approaches in Analyzing Unstructured Data
. I have been working on information extraction for about 20 years (very much part time), and although most of the material in this book was familiar I found the book to be an excellent reference and a good summary for the state of the art in information extraction techniques. I have blogged before about the excellent Reuters/ClearForest system - the authors were principles at ClearForest.
I chose for this project the combination of Gambit-C Scheme, Emacs, and a few customizations of the Gambit-C Emacs code. For "mostly thinking" projects like my information extraction library, I like simplicity: a simple clean programming language and an environment that provides good editing and debugging support but otherwise stays out of my way. Professionally, I do a lot of work with Common Lisp (either Franz + ELI + Emacs, or SBCL + Slime + Emacs) but since I am basically just experimenting with algorithms I felt like using something light weight. I thought about using Ruby (with either the excellent NetBeans support or TextMate) but I like the ease with which Gambit-C Scheme can be used to build native applications or libraries (compiles to intermediate C) and I will probably want to share my information extraction program (perhaps a free and commercial version) but not release the source code. The performance of compiled Gambit-C code is also very good.
I chose for this project the combination of Gambit-C Scheme, Emacs, and a few customizations of the Gambit-C Emacs code. For "mostly thinking" projects like my information extraction library, I like simplicity: a simple clean programming language and an environment that provides good editing and debugging support but otherwise stays out of my way. Professionally, I do a lot of work with Common Lisp (either Franz + ELI + Emacs, or SBCL + Slime + Emacs) but since I am basically just experimenting with algorithms I felt like using something light weight. I thought about using Ruby (with either the excellent NetBeans support or TextMate) but I like the ease with which Gambit-C Scheme can be used to build native applications or libraries (compiles to intermediate C) and I will probably want to share my information extraction program (perhaps a free and commercial version) but not release the source code. The performance of compiled Gambit-C code is also very good.
Subscribe to Posts [Atom]