Posts

Showing posts from September, 2007

Plain text and other simple document types

I limit work to about half time so it is especially important for me to make my work processes as efficient as possible (I also spend about 10 hours a week researching and playing with new technology, but that is generally an unpaid for pleasure, driven by my own interests, not my customers'). Almost everything I deal with is plain text: Ruby, Lisp, Java code, detailed work log notes, design notes, etc. For information that I need to record just for myself, I get no benefit from styled text formatting. For other people I work with or want to communicate with, Latex does the job of generating great looking documents. The Pier content management and Wiki system looks very interesting to me because it supports Latex output. That said, I am finding Google Docs to be a good alternative to Latex for very small documents. Anything to save time. Pier is open source and deployment using Squeak looks simple . (I have written here before about easy deployment of Squeak web applications.)

I am loving Amazon's new MP3 musc store

I am finding very low prices on some music when buying entire albums. A few caveats: For Mac users: buy music using Safari and not Firefox or Camino Downloading is a one shot deal: Amazon encourages you to immediately make an archival copy of purchased music The album down loader is nicely integrated with iTunes - I hope that Apple does not try to break this convenient integration. In addition to saving money, this is a huge time saver for me: when I buy music from the iTunes store I always make an archival copy by burning an audio CD, then using Tunes to rip to MP3s, then add the MP3s to my permanent backups - this was a time consuming process.

"Why would you use Ruby when you could use Smalltalk???"

Patrick Logan poses the reasonable question "Why would you use Ruby when you could use Smalltalk???" Looking at things from a development rather than a deployment perspective, I would have a difficult time arguing with Patrick. Squeak provides a good open source platform, many libraries and third party projects, easy headless deployment of Seaside web applications, etc. Commercial Cincom VisualWorks adds the ability to create small executables, great web services libraries, good support for commercial licensing, etc. Ruby on the other hand also has a lot going for it: many instant install gem libraries, easy installation of Ruby itself, Rails is a nice web app framework, and the best of all: Ruby is already installed on most servers (and is easy to install otherwise) and deployment of Ruby applications and utility scripts is simple. Also JRuby is a very interesting technology for those of us who need to work in "Java land". One other big win, Ruby-wise, for me is

Iranian President Mahmoud Ahmadinejad is not crazy, but his speech irritated me today

The problem that I have with Iran is not that I view them as a threat to my country (USA) or the Middle East: it is that Iran is the second most despised government in the world (behind #1 Israel, and slightly ahead of #3 North Korea in just about every international opinion poll). I would expect a more conciliatory approach from a leader of a widely despised government (internal human rights, suppression of free speech, an economy that is so bad that their educated population leaves in great numbers, etc.) I don't think that any rational person really views Iran as a real security threat (although Iran is a convenient political issue in my country), but I have real problems with their internal (to Iran) behavior. Re: nuclear power technology in Iran: as long as they continue to be a member in the IAEA and allow inspections, that is good enough for me, but I understand the arguments of other people who don't feel comfortable with this. Unfortunately, incompetent foreign policy

Interesting article on graph/lattice theory leads me to a good looking library

After reading Mark Chu-Carroll's extremely interesting article on using lattices for representing information, I started a hunt for good graph representation and analysis libraries. I looked for Lisp, Ruby, and Java libraries, and found a great looking library written in Ruby (gratr) . One caveat: I spent 30 minutes enjoying reading through the library source code, but otherwise I have just experimented with the tests and examples. Thanks to Shawn Patrick Garbett, Luke Kanies and Horst Duchene. I often find interesting/useful software this way: I get excited reading a good technical paper or blog, and then go and look for relevant software tools.

Glassfish v2: Update Center and port 4848 Web Admin are cool, but...

Although I have been paid to work on both the Enhydra Enterprise Java application server and on the JBoss based Jaffa framework, I must admit that Tomcat has always been my favorite platform: lean, and add just what I need. As a result of my 'build up just what I need' preferences, I just got around to experimenting with Glassfish. The Update Center is great, and as more instant install frameworks and applications become available, this will be a time saver. The web admin tool is refined - no complaints there. I do have one complaint about the 200 MB resident memory footprint. A lot of what I do involves deploying to low cost servers, often semi-managed VPS systems. Smaller memory use is cheaper, but for most large server deployments, an extra 100 MB makes no difference. I thought that it was very cool that one of the available instant install components is JRuby with the most excellent Goldspike. I have written before in this blog about the ease of running Rails web apps wi

Programming languages: advantages of both specialization and being a generalist

In the 1970s, I very much enjoyed working through Jean Sammet's classic book "PROGRAMMING LANGUAGES: History and Fundamentals". For one thing, it was my first real exposure to Lisp, and it was fun learning many new languages at once. At one point I had over a dozen programming languages on my resume (due to needing to use some one-off languages for military hardware, and several different assembler languages). Generalization is good because the more experience with different languages, libraries, frameworks, and development styles that you have, then the easier it is to choose a good technology to solve new problems. I would argue that broad experience is at least a little better than narrow but deep experience. Unfortunately there is another side to this issue: whenever I see really great design and code, it almost always seems to be written by someone who deeply specializes in one, or perhaps two, programming languages. In the last few years, due to customer require

Great combination: nginx, Mongrel, and Rails for secure HTTPS

I had to set up a customer's Rails application to run using SSL+HTTPS this morning. Based on a few positive web blog articles I decided to try Igor Sysoev's nginx web server . If you first build and install OpenSSL and the Perl regular expression library, then build nginx with --with-http_ssl_module --with-openssl=/OPENSSL_SOURCE_DIR --with-pcre=/PCRE_SOURCE_DIR you should be all set to use HTTPS. Clustering mongrel is also simple; I used this nginx.conf file from Brainspl.at as an example and I was set up and running very quickly. Good stuff!

JRuby and Jython: a one way street?

This is just personal experience: JRuby and Jython are great when you want to use existing Java libraries and utilities from inside Ruby and Python programs. (Warning: Jython does not implement all of Python: many of my Python programs that use list comprehensions, generators, etc. simply do not work yet.) However, I am skeptical of the utility of doing the reverse: using modules of Ruby or Python code inside large Java applications. I would like to hear about examples of this that don't just use Ruby or Python as embedded scripting languages. BTW, since I usually prefer using the native C versions of Ruby and Python, I set up my bash environment to create aliases for running the JRuby and Jython command line tools: ## for Jython and JRuby without messing up PATH and native Ruby and Python: alias jython=/Users/mark/bin/jython2.2/jython alias jruby=/Users/mark/bin/jruby-1.0/bin/jruby alias jirb=/Users/mark/bin/jruby-1.0/bin/jirb alias jgem=/Users/mark/bin/jruby-1.0/bin/gem

1. Shameful behavior: ruining our grandchildren's lives because of our generation's greed 2. a story about my Grandmother

This is shameful behavior: the Federal Reserve (privately owned, not part of the US government) dropping interest rates to bail out stock market investors who have made bad investments, Bush's running up the deficit to line the pockets of his cronies, and now the US Congress talking about bailing out stupid homeowners who have acquired bad mortgages and spend stupidly beyond their means. Selfish, stupid behavior that will ruin the lives of so many in future generations. Past generations were made of better stuff. My Dad sent me an email today with a story that his Mother told him about the death of her father because he was trying to save the financial future of his family: My Mother told me this story when I was a small child. This was very personal for her, and I remember the emotion in her voice as she related it. My Mother was born in 1886 on a farm in Illinois. Several photographs have survived of this time. She, with her parents and two smaller brothers, lived in a lar

The New York Times 'gets it'

Oh, the pleasures in life: The New York Times now allows free access to almost all of their material. I used to spend lots of time reading the NYT online, and now that they have re-opened up their material (opinions, etc.) they are back on my very short Bookmarks menu (I use del.icio.us to manage most bookmarks: here are my personal del.icio.us bookmarks ). The NYT has clearly made the decision to go for more readers, and hope that advertising revenue makes up for subscription fees. In a small way, I do the same thing: after writing 14 published books, I put almost all of my writing effort into material that I simply give away for free - not totally altruistic: I earn my living as a consultant and having more people visit my site probably helps my bottom line about as much as book royalties. While I understand that people working for companies like SAP or Microsoft might have a different viewpoint than mine because of where they see their personal revenue stream coming from, I belie

Chris Petrilli's second brain

I always enjoy Petrilli's blog entries (both technical and political), and his discussion today on augmenting our brain's memory capacity with indexed and cross referenced programming manuals, PDF books, etc. seems right on. I have been more frequently buying PDF books: not as nice to read, but in the future it is great to have indexed and online. Because I mostly use a MacBook with open connections to my customers' servers for most of my work, my MacBook is the home for my "second brain". I have experimented with doing my own indexing and document clustering (naive O(N^2), hierarchical, and k-means), using Spotlight, and using Google Desktop for the Mac. I have settled on using Spotlight, but using the text, HTML, and PDF's in my "second brain" for my own research programming for IR, etc.

Classic "slip of the tongue"

My wife and I were just watching CNN and the host was apparently interviewing a security expert who was giving what I thought was an amazingly one-sided take on the private military company Blackwater's recent bad publicity in Iraq. After sounding like an advertisement for how great Blackwater is she had a "slip of the tongue": when asked what some of the services Blackwater provides in Iraq she said " we protect ...". Notice the use of the word "we" . It looks to me like CNN may have been interviewing a Blackwater employee without divulging that bit of information to viewers.

IBM's support for OpenOffice.org is important

Microsoft Office is one of the principle reasons why so many businesses feel like they are locked into using Microsoft Windows. While I support the rights of Microsoft as a business to try to lock people, companies, and governments into using their proprietary data formats, and thus their software, it is also the rights of people, companies, and governments to fight back for their own best interests. Proprietary data formats are a losing proposition for users. The lack of assistive technologies for people with disabilities has been a sticking point for wider adoption of OpenOffice.org - IBM's donation of the time of 35 engineers to work on assistive technologies is a large contribution to both open source and the infrastructure that so many of us build our businesses on.