Wednesday, October 31, 2007

OS X Leopard

I have 4 computers (1 laptop and 3 desktops) packed away - I now do everything on one fully loaded MacBook: for medical reasons(*), I either need to have my legs elevated or be walking - sitting at a desk for more than a few minutes is not a good idea. Fortunately, I can still hike for up to 3 or 4 hours at a time :-) Anyway, having everything in one laptop works best for me.

Anyway, since the work and research part of my life is bound up with one nicely configured laptop, I was hesitant to change anything, but after burning 4 backup DVD-Rs and cloning my laptop's disk drive to an external disk, I did a fresh install last night and restored my user files from the cloned disk.

It took a few hours to get all the tools working that I use (and I am probably still not there yet), but the time was well spent. I think the Time Machine idea is awesome - you really need to try it to appreciate it. I plan on alternating between two external disks, keeping one at a friends house for off site backup.

I am still deciding if the Finder changes are all that great. The icons don't seem as distinctive as the old ones. I do like the document automatic preview options.

The Java JVM support (version 5) performs well, and the NetBeans IDE (used only for Ruby and Ruby Rails development) seems more responsive. Ruby is installed as a shared library framework so if you should run many simultaneous Ruby processes, some real memory would be saved (like Apple does for multiple JVMs running). I was going to do my own Ruby install and decided against it.

Leopard seems very much faster than Tiger but that may be partially because I wiped the disk and did a clean install (the ultimate disk defragmentaton :-)


---

(*) A bit of advice: last year I was working really long hours sitting at my desk without getting up often enough - that lead to deep vein thrombosis and 2 pulmonary embolisms. Set a timer to remind yourself to get up every 30 minutes or so!

Thursday, October 25, 2007

ZFS: disuptive technology?

Many years ago I thought that CORBA was a disruptive technology that would change the world for distributed systems. I sort-of guessed wrong - in retrospect I explain my poor prediction on the relatively high cost of early CORBA software. CORBA became 'free' too late.

I also think that ZFS (a new "file system" - yet so much more than a file system) also could be a disruptive technology that changes the world for storing and retrieving information, supporting: multiple levels of data protection, a transactional model for committing changes, on the fly expandability, etc. As open source software, wide and free availability is not a problem with ZFS, or at least should not be when ZFS is available for OpenBSD, FreeBSD, Linux, OS X, etc.

That said, I think that ZFS is more of a platform than a 'file system'. That is, I think that developers with specific data storage and retrieval problems (e.g., large scale graphs, databases, permanent record archival, etc.) will look to ZFS as a possible bottom data layer instead of file systems on the low end or relational databases on the high end.

As ZFS storage pools grow to span multiple (file) servers, we can start thinking in terms of using distributed data queries and accumulating results (a little like using map reduce operations on GFS). ZFS seems like such a wide open platform that I expect that we will all be surprised at future novel applications layered on top of ZFS.

Tuesday, October 23, 2007

NetBeans 6.0 beta 2 is released

I have been using the Ruby and Ruby on Rails specific NetBeans 6.0 beta 1 for about 2 hours a day for Rails development. Beta 2 (just released today) has good improvements for code completion, popup documentation, and general RHTML editing. Good stuff!

I have blogged about this before: I am tired of using so many different programming languages (Common Lisp, Java, Ruby, Python, C++, Prolog, etc.) on customer projects. I am starting up a new (non-consulting) business so I am reducing the amount of consulting work I will accept. I would like to just do Ruby and Ruby on Rails development - turning down other work unless it is very interesting.

Algorithm development and solving people's problems - that is the fun stuff, not keeping current with a half dozen programming languages and dozens of frameworks.

Friday, October 19, 2007

Ruby debuggers

Although I do not actively use Smalltalk, I check the Smalltalk blog feeds several times a week because Smalltalkers are often into interesting things. James has been talking about Smalltalk debuggers a lot recently.

While the state of Ruby debuggers is no where near those found in Squeak or VisualWorks Smalltalks, debugging controllers in Ruby on Rails web applications is fairly slick: in development mode code and RHTML templates are dynamically reloaded (CSS style sheets are not, but that is OK). The NetBeans Ruby environment with the "fast debugger" installed is pretty good. That said, I feel that Ruby has some big advantages over Smalltalk for some types of applications, so it is really a personal decision based on what development and deployment requirements are.

Using a debugger to step through how Rails controllers are called is also pretty interesting, if not educational.

Netbeans IDE 6.0 Beta 1: (J)Ruby and Rails support is looking good; mixed experience with IntelliJ 7.0 + Ruby plugin

I did have an installation problem: I have every possible version of Java installed on my MacBook so I had to manually edit
/Applications/NetBeans/NetBeans 6.0 Beta 1.app/Contents/MacOS/netbeans
to explicitly set jdkhome to my 1.5.0 directory. Hopefully most people will not have that problem.

I found it most convenient to have local JRuby and Ruby installations in my home directory and use those so the NetBeans GEM tools had write access.

I still find using TextMate to be more convenient for development, but code completion and browsing features may win me over in the long run.

I have a 30 day IntelliJ 7 trial and installed the first Ruby plugin for version 7. I ran into errors running the generate script and could not create a Rails project from an existing Rails application directory. I would bet that these problems will be fixed quickly, so I will give version 7 another try before my trial license expires. (I am trying to decide whether to upgrade to version 7 and Ruby support will affect my decision).

Tuesday, October 16, 2007

"100% Rails all the way, baby!"

A few years ago my wife and I each spent about a week working on a healthy recipes web portal. I have been promising myself that some day I would set aside a large block of time and make a "social network" style cooking web portal, and recently decided to just do it. I am finishing off my existing large consulting tasks, and for about 6 months plan on spending most of my time developing CookingSpace. Currently I just have a Rails place-holder at CookingSpace.us and since Carol and I are planning a lot of travel in the next few months, I will probably not have a full prototype in place until early next year.

I had been planning on using Java, JSPs, struts 2, and Hibernate Search - but decided to go with Ruby on Rails. I made this decision partly because I have been doing a lot more Ruby work than Java work in the last 18 months, and partly because I have learned some new Rails architecture tricks, and wanted to use them.

In any case, Carol and I want to create a healthy cooking web portal that will make a real positive difference in people's health and in their enjoyment of cooking and eating. I believe that the concept of seeing nutritional ingredients for recipes coupled with the ability to change ingredients on the fly and see changes in fats, sodium, vitamins, etc. will help people who either have dietary problems or simply want to eat healthier. If we end up making some money on CookingSpace that would be nice also :-)

Friday, October 12, 2007

It is important to check web sites and web applications for usability by readers with disabilities

I have blogged about this before but it is an important issue: some web sites use some technologies that might not work well with screen readers for people with impaired vision or are blind. I just ran through my own web sites to make sure that they are usable with the text-only lynx web browser and they worked OK - if anyone needing assistive technologies has problems with my sites then please let me know.

Wow: what a difference caching makes!

I just spent a day adding MemCached to a customer's web application. Incredible what a difference it makes! The great thing about MemCached is that many client libraries are available and caching works with handling user sessions, web page fragments, some web service calls, etc. Depending a lot on the application, MemCached can take a load off of database servers, back end web services, etc. I was also pleasantly surprised by how simple it was to implement (after carefully analyzing the web application itself - gaining an understanding of what should be cached is the tricky part). Good stuff!

I don't think that I will ever deploy a web application again without analyzing it for MemCached use.

Tuesday, October 09, 2007

Joost: Internet TV done the right way

I have blogged about Joost a few times before, but the system now works even better than before: better looking video, very few pauses in video stream, and more interesting material.

One thing about Joost: the commercials are short and unobtrusive. I actually wish that they would include more commercials to ensure that as a company they stay in business. Good stuff!

I think that ABC also does Internet video very well (on my MacBook, they is a one time Java plugin installation). However, I like the more "Indy" style material on Joost. I also prefer Joost's technical approach of using a "rich client": not everything has to happen in a web browser. That said, I would hope that all major networks follow ABC's lead.

Tuesday, October 02, 2007

More fun with JRuby: using the PowerLoom reasoning system

I just wrote a complete example, including all required source code and a Makefile on my AI blog.

JRuby continues to please me: fantastic to be able to switch from C-Ruby to JRuby when I need to use large existing Java libraries.

Good PDF book: "Ferret" by David Balmain

Slashdot had a discussion yesterday on indexing and searching documents - a subject of particular interest to me. After reading the comments, I revisited the indexing and search tools that I have used over the years: Ferret (a Lucene clone) is my favorite library for several reasons: it uses the Lucene API (which I have used for years), it is very fast, and coding in Ruby is faster for me than Java (Lucene) or Common Lisp (Montezuma). I bought Dave's book on Ferret yesterday, and it is a good reference with lots of good examples.

I have a "semi alive" open source project (KBSPortal) written in Java, uses Lucene and my own clustering and analysis libraries. I have been mulling over switching to Ruby and Ruby on Rails because it would be easier developing the web interface, I like to code in Ruby more than Java, and there are some very nice text analysis Ruby Gems that I could use in place of some of my own Java analysis code (in the spirit of building on other people's libraries, when possible, to take advantage of shared work). I get consulting work setting up custom document management systems and I would like to have a complete stack that could be set up and customized in less than a day.