Saturday, October 25, 2008

JetBrains Seeder Program

JetBrains has recently started the JetBrains Seeder Program, an attempt to build a volunteer evangelism network for their products. I'm not sure I'd make a great evangelist, since my use of IntelliJ IDEA has mostly been limited to my experimentation with Groovy. I might join the program anyway, since IntelliJ is a great IDE (especially for Groovy) and I'm curious to see how the seeder program works.

Update: I decided that I'd already signed up for enough programs like this without taking full advantage of them. As a side note, I've been trying out NetBeans 6.5 for my Groovy and Grails projects and have been pleasantly surprised. I'll have a dilemma on my hands when it comes time to either renew or drop my IntelliJ license in April.

Saturday, October 4, 2008

ConcurrentLinkedHashMap as In-Memory Cache

For my work, I was looking for a thread-safe equivalent of LinkedHashMap that would work well as the basis for an in-memory cache.  I was hoping that such a class might be showing up in the JSR166y project, but 'twas not to be.  After that, I tried googling for ConcurrentLinkedHashMap (my previous search had been for "concurrent LinkedHashMap" [minus the quotes]) and stumbled upon a small project at Google Code devoted to exactly what I was looking for: ConcurrentLinkedHashMap.  I've been looking over the code.  It seems pretty good and I might be helping out with it, but I'm not an expert with concurrency and the Java Memory Model to the extent really needed.  I'm in touch with the main author, who seems very amenable to suggestions and corrections.  We'll see how it works out.

Saturday, August 16, 2008

Amazing Research in Image Processing and Presentation

I recently stumbled upon a very interesting pair of research projects that started at the University of Washington.

The first is titled, Using Photographs to Enhance Videos of a Static Scene. The video toward the bottom of the screen demonstrates using still images to automatically enhance the resolution, lighting, and color of videos, along with the ability to mask sections of scene and replace them with substitute images.

The second project has been picked up by Microsoft Labs and further developed into Photosynth (unfortunately requiring a Windows-only browser plug-in). It allows you to view a set of images of the same subject in a 3-D browser. See this very cool video for several examples.

Friday, August 1, 2008

Odaiko New England Community Membership

Wow, I have a big back-log of potential blog entries! I'll start with a quick one.

My wife and I recently became community members of Odaiko New England, a wonderful Taiko (Japanese drumming) group. Being a community member isn't quite as exciting or as much of an honor as becoming a performing member, but we're still very proud of our achievement. Taiko is a wonderful activity combining music, exercise, and energy. If you'd like to try it out, there will be a free beginner class next Tuesday (August 5th). If you can't make that one, you can contact Mark to ask when the next class open to new students will be happening. I hope you'll give it a try. It's awesome!

Wednesday, July 23, 2008

Great Douglas Adams Quote

I came upon this quote linked to from another blog and loved it. What a shame that he died so young!
I love deadlines. I like the whooshing sound they make as they fly by.
Douglas Adams
English humorist & science fiction novelist (1952 - 2001)

Friday, May 9, 2008

Best Quote at JavaOne '08

"It's essentially impossible to avoid Swiss cheese." --Gil Tene, Azul Systems

Want to guess about the context? :)

Update: I think I've allowed enough time for everyone to guess. Jeff, with his more serious answer, was the closest. The quote came from the Q&A period that followed a Friday morning technical session, Performance Considerations in Concurrent Garbage-Collected Systems. Gil was explaining that whatever form of memory allocation you use, you'll eventually end up with memory fragmentation. In a JVM, if you use a garbage collector that's both parallel and concurrent, cleaning up that fragmentation can be done without a stop-the-world pause. Conveniently enough, the JVM that comes with Azul's boxes can be run in parallel/concurrent mode. :) Sorry that the quote is less funny when put in context.

Wednesday, April 16, 2008

Great Saturday Night Live Skit

A friend sent me a link to a Christopher Walken skit on Saturday Night Live. It was so funny, I had to post it. Mr. Walken and odd humor - the perfect combination.

Wednesday, April 2, 2008

RightScale - managing Amazon EC2 instances

I was recently reading some postings on High Scalability and came upon one discussing some cool new features in EC2. It also mentioned a company, RightScale, which has a product for automatically managing your EC2 instances, including automatically launching and killing them based on spikes in demand. The company also has a good EC2-related blog, which unfortunately seems not to have an available RSS feed (odd!).

Saturday, March 8, 2008

Groovy versus Scala

After looking at Groovy and Scala for a bit, I've come to a decision about how I plan to learn and work with them in the near future. I'm going to learn and use Groovy first and then move on to Scala. In this post, I'll explain why.

First, I'll cover the areas in which I see the two languages as similar. They are both script-friendly, object-oriented, can integrate easily with Java libraries and run on a JVM, and make heavy use of closures. Once you're familiar with either of the languages, it's obvious that they'd be great for dashing off a quick script. At the same time, their fundamental OO natures helps you produce (but does not guarantee!) maintainable code. Being able to use and interact with Java code means that you can take advantage of investments in existing technologies and that you can gradually transition a code base from Java to Groovy or Scala. Closures are a very succinct, clear way of expressing solutions to a lot of common problems. Whether or not Java gets them as a language feature, they're unlike to work as well in Java as in these two languages, where they haven't been shoehorned in.

Of course, there are also ways that the languages and developing in them are different. Scala has a greater emphasis on functional programming, has implicit static typing, and (having looked at a decompiled bytecode generated by scalac and groovyc using Jad) appears to translate into tighter code. On the other hand, Groovy looks much more like Java (making the transition easier), Sun has endorsed Groovy, the development tools for Groovy are currently in better shape (and that's without trying what they've got in NetBeans), and Grails seems like a very promising application framework.

So, when I put all of those considerations together, blended them a bit, and took a drink, I decided that Groovy should come first. It helped me make the decision to realize that whatever time and energy I put into Groovy should pay off when it comes time to move on to Scala. I think the languages require a similar mindset and follow similar enough philosophies that once I've got one down, the other should be substantially easier.

Friday, February 29, 2008

Barack Obama for President

At first, I thought that I would avoid talking about politics on my blog, but I've changed my mind. I've supported Obama since before Super Tuesday and I want everyone who reads this entry to know that. On my wife's birthday, we attended his rally in Boston on February 4th and that helped change me from feeling generally positive about him to feeling enthusiastic. I think he can win and start pushing for real change. As I learn of his primary victories in state after state, I'm actually excited! Thanks to Ian Clarke for linking to Larry Lessig's "20 minutes or so on why I am 4Barack".

Wednesday, February 27, 2008

LibraryThing and Book Reviews

Jeff Winkler noticed that I like books and like talking about them and pointed me at LibraryThing. It's a website that effectively functions like a giant book club, allowing you to see who else has and likes the same books as you and what they'd recommend. I decided to set up my account and put a few of my books in my catalog. I plan to review books here and link to my reviews from LibraryThing - I've seen others doing the same thing.

Wednesday, February 20, 2008

Book: Free Agent Nation

I just started reading Free Agent Nation: The Future of Working For Yourself. So far, I like it quite a bit. The number of people working independently in the US (30 million or more as measured by several organizations) is staggering. I'll add more about the book as I make progress through it.

Sizer - nice little window sizing tool

I was just looking at the blog of Jeff Winkler, another member of the Boston Java Meetup and saw his entry, "Fix Offscreen Windows Easily with Sizer". Using a screencast, he describes a cool little app called Sizer, which allows you to set the exact size of an application window on a Windows machine (looks like it doesn't support Vista yet), but also helps you make lost/off-screen windows visible again. It comes with three preset window sizes (640x480, 800x600, and 1024x768), but you can easily add your own by right-clicking on Sizer's System Tray icon and choosing "Configure Sizer...". I've added a few which subtract the approximate height of the taskbar (30 pixels on my machine) so that I can see what an app would look like at other standard monitor sizes. I like my widescreen monitor, but I know not everyone has one. I hope you find it useful.

Sunday, February 17, 2008

Battlestar Galactica - the new series

Quite a while ago, maybe as much as a whole year back, friends of ours recommended the new Battlestar Galactica series to me and my wife. They knew from past discussions of Star Trek: Deep Space Nine that we were really into what you might call "serious Sci-Fi", science fiction with interesting and complex stories. We like beautiful visuals and impressive explosions, but what we're really looking for are good, inventive stories. With Deep Space Nine, we really love the way it brought together politics, religion, ethics, and science and how those forces can complement and compete with each other. The Mars Trilogy novels by Kim Stanley Robinson (Red Mars, Green Mars, and Blue Mars) about humanity colonizing Mars painted a similarly complex picture of how future society might function. I was somewhat hesitant to watch the new Battlestar Galactica series because I still remember the original one from the Seventies, which I watched as a little kid. Even then, I think part of me recognized how dumb it was.

So, with all that as a backdrop, we finally decided we should watch it. But, before we started with the new series, Beth and I discovered that the original series was available on the Netflix Watch Instantly streaming video service and we thought we'd sample it for some perspective. As I expected, it was painfully stupid: poorly written, poorly directed, poorly acted, and at the same time very sexist and dated. That was a bit discouraging, but we pressed on and got the first DVD from the new series this week. It was actually the pilot mini-series, which was definitely the right one to start with. We watched the whole three hours on Friday night and were blown away. It was incredible! It's based on the same root story as the original series, but the character of it is so different. It's much darker and the people feel so much more real. I'm so glad they cast Edward James Olmos as the battle-weary Commander Adama (I remember first encountering him when he played Lieutenant Castillo in Miami Vice). What a great choice! I don't want to ruin any surprises for new viewers, so I'll just say that the new series seems very engaging and does a good job of combining the same sort of story elements that I described above for Deep Space Nine and the Mars Trilogy. If you like either of those, I'd highly recommend the new Battlestar Galactica to you. Probably my only complaint is that there's one female character who's rather over-sexified. If you can forgive that, I'm pretty sure you'll like it.

So, next in line for us is the first season! I'll keep you posted.

Wednesday, February 13, 2008

Groovy and Grails

Since I'm interested in increasing my RAD repertoire, I've decided to spend some of my research time on Groovy and the associated Grails web app framework, in addition to Scala. One nice thing about Groovy for an experienced Java developer is that its syntax is closer to Java than Scala's, while still running on the JVM and integrating nicely with Java. While familiar syntax isn't everything, it definitely can make your first steps into a new language a little easier. Grails follows a similar philosophy to that of Ruby on Rails, a well-known "coding by convention" web app framework, but integrates with established Java technologies like Spring and Hibernate. I wish they hadn't chosen a knock-off name like that, but it still looks pretty interesting. In order to learn Groovy, I decided to buy the book Groovy in Action, after seeing a lot of positive reviews for it on Amazon. I'm also checking out various articles I can find online, including the following: Any other suggestions for me?

Friday, February 8, 2008

Firebug and Ajax

Last night, I attended a NEJUG (New England Java Users Group) meeting which featured a talk titled "Designing for Ajax" given by Nathaniel T. "Nate" Schutta who has apparently spoken at several No Fluff Just Stuff conferences and co-authored the book Foundations of Ajax. It was an excellent talk, one of the best ones I've seen at a NEJUG meeting. He discussed a few Ajax JavaScript libraries/packages (Prototype, Scriptaculous, YUI, and Lightbox, for example) and coded several examples in front of the audience. He definitely made Ajaxifying what were previously flat web pages look quite simple. There were always caveats (to paraphrase, "In a production environment, you'd need to add a delay here so that you wouldn't get tool-tips popping up all over the place."), but the libraries seem to handle that mostly with sensible defaults. Although it wasn't directly related to Ajax, he also pointed out while doing the coding demos that he was using Firebug and YSlow for Firebug, very cool add-ons for Firefox that help you tune your web pages. Firebug includes a JavaScript debugger, powerful CSS helpers, and a bunch more. If you haven't used them before, you should check it out.

Sunday, February 3, 2008

Getting rid of junk mail

A while ago, I read a Joel On Software blog entry called "Stop the catalogs" in which he mentioned a non-profit organization named Catalog Choice that helps you opt-out of paper catalogs. I've since signed up for the free service and so far explicitly asked to no longer receive about 5 catalogs. I'm sure I'll be adding more catalogs to that list. While I had some momentum, I thought I'd work on reducing our volume of junk mail generally. It turns out that you can opt-out of both ValPak and SuperCoups mailings (you know, the envelopes filled with hundreds of coupons that are mostly irrelevant) and take yourself off of the Direct Marketing Association's mailing list. Here are some links you might find useful:

Update: If you live in an area where you get weekly fliers in the mail from GlobeDirect (perhaps just the Boston area - since the company is associated with The Boston Globe), I discovered that you can call the number listed on the front of the outer flier (508-871-1900 for me at least) and request to be taken off of their mailing list. Since they normally send out materials once a week, this should make a huge difference!

Wednesday, January 30, 2008

Scala Links

Well, I said I'd have more Scala links, so here they are: If anyone else provides links (that aren't already on the first page linked above), I'd be happy to add them.

Saturday, January 19, 2008

I Have a Logo!

If you've ever been here before, you'll probably notice that the top of the page looks different - I've added a logo! Beth spent some time designing one for my company, Grove Hill Software (yes, I know that is a truly sad website), and produced a modified version for my blog. I hope you like it. I sure do.

Wednesday, January 16, 2008

Experimenting with Scala

Although I'm really comfortable with Java and like it a lot, I came to the conclusion a while ago that I needed to add a language to my repertoire that facilitates rapid development. I know some JavaScript (which is actually a more powerful language than you might think), PHP, and Perl, but none of those quite fit the bill. I've been considering Python and Ruby for a while, but I've recently gotten very interested in Scala. I bought the e-book Programming in Scala available at Artima. I'll let you know what I think of it, along with posting a bunch of useful Scala-related links I've tracked down.