Posts

Showing posts from February, 2010

New (very) rough drafts available for both Java and Lisp editions of "Practical Semantic Web and Linked Data Applications"

While I have been following Semantic Web technologies for over 8 years, I find the slow adoption to be frustrating. I am trying to do my part to promote the Semantic Web by writing two editions of "Practical Semantic Web and Linked Data Applications." One edition has examples in Java/Clojure/Scala/Jruby and the other has examples written in Common Lisp. There is a lot of common material in both editions so I expect people to only read the edition that covers their favorite programming language. I will sell physical print books via lulu.com and there will always be free PDF versions on my Open Content web page. I hope to have the Java/Clojure/Scala/Jruby edition finished by early April and the Common Lisp edition finished sometime in early summer. I just posted PDFs for both editions. That said, these are very rough cuts, with large sections still to be written. There are a lot of very good Semantic Web tools and frameworks - both open source and commercial. I am using the co...

Ugh, Python. But, PyCharm is charming :-)

I love coding in Ruby but I have always had an aversion to Python. I have tried: about 5 years ago I carefully worked through Mark Pilgrim's excellent "Dive Into Python" book and I use Python to take advantage of libraries like NLTK (Natural Language Tool Kit). I got pointed back to using Python this morning. I am writing an article for Developer.com magazine comparing Amazon AWS and Google AppEngine. I have used, I think, every available platform service on AWS and I have written a lot of Java code for AppEngine (and experimented with JRuby and Clojure). The one huge gap in my experience for writing this article is writing a Python based web app for AppEngine. And, Python really is the best supported AppEngine Language (e.g., smallest server instance startup time for "loading requests," better tool support for importing/exporting data, etc.) Anyway, it would be totally unfair to critique AppEngine without spinning up on their best supported language and tools. ...

Wrappers: staying portable and agile

As developers we build systems using components that other people write. This is the rational way to write software: trying to get the best result using the fewest possible resources. That said, it really pays off in the long run to not only use the best available components but to plan and design for portability. The art of the wrapper. Seeing Jonathan Weiss's simply_stored wrapper for CouchDB and SimpleDB this morning reminded me how important this effort is. The trick is to spend an appropriate amount of time staying portable. In the last 12 years I have invested quite a lot of time and resources working on my own entity identification code (i.e., find people, product, place names in text, relationships between them, associating pronouns in text with names, etc.) Today, I almost always use Open Calais instead of my own code because it performs better, but, I do maintain and improve my code just so I maintain the flexibility of having my own NLP components. I like using the comm...

Comparing Clojure and Scala as 'Java replacements'

I have been doing more Java coding than I would like lately <grin>. An antidote has been some work with Clojure and Scala. Unfortunately, I have not reached a sufficient level of proficiency with either language that I can instantly switch between them: it takes me more than a few minutes to to get into the flow with either of them. For customer work, I don't expect either language to be in much demand but since I also work on my own projects I would like to have a good alternative language when Ruby or Lisp (either Common Lisp or Scheme) don't work for me because of lack of libraries or other constraints. (BTW, in the last 3 years, probably 60% of my paid for consulting work has used Ruby, about 30% Common Lisp, and only about 10% Java.) For my personal development needs, Clojure's and Scala's good support for concurrency is not too large of an issue. What is an issue for me is that I want to be able to use existing Java libraries and frameworks and I like concis...

new URL for this blog: http://blog.markwatson.com

I had to change the URL for this blog: please update any links to: http://blog.markwatson.com

Semantic Web: an alternative for RDFa

A few years ago I thought that XHTML would eventually be widely used but when the W3C decided to standardize on HTML5 (which I love for non Semantic Web reasons), that may have been the beginning of the end for RDFa because RDFa is an XML application. I believe that a better alternative in a HTML5 world is to keep RDF separate from web pages but have a clear set of rules for finding RDF data files that correspond to web pages (either static or generated). One rule might be to look for a file named index.rdf for top level domain URLs; for example, see if http://markwatson.com/index.rdf exists for http://markwatson.com. For a URL like http://markwatson.com/hobbies look for http://markwatson.com/hobbies.rdf or http://markwatson.com/hobbies/index.rdf. Although CMS support (e.g., Drupal) for RDFa and helper libraries like the RDFa Rails plugin might make it fairly easy for some web sites to provide RDFa, I think that we need something simpler that might be adopted by more web sites. I am ...

Click is now a top level Apache project

Congrats to the Click team. My interest in doing Java web apps is low since I have mostly been using Rails for the last three years. That said, Click hits a sweet spot with a good templating system and model super classes for pages, forms, tables, etc. Because I might be using Google AppEngine for more projects, I may need to use Java so I have just read through the documentation and code samples for the latest version that is compatible with AppEngine.

Saving money: using a 64bit Ubuntu VPS instead of a 64bit Large EC2 instance

I need to frequently run a 64bit Linux web service (commercial app, not available as a 32bit app). Unfortunately, small EC2 instances are only available as 32bit. I ended up using a 64bit VPS instance (I use RimuHosting, but I think Slicehost also has low cost 64bit VPSs). Saving a lot of money over the long term :-)