Monday, October 4, 2010

Is Xmarks Dying or Not?

Early this year, I made the switch from Google Bookmarks to Xmarks. I've been really happy with Xmarks and have used it to sync the bookmarks and open tabs in Firefox, Chrome, and IE on Windows and Firefox, Chrome, and Safari on Mac OS. They had plans for an Android client which I would have installed the moment it was released. Unfortunately, the company announced on September 27th that they'd be discontinuing the service around the end of this year. You should have seen how much the news deflated me. I'd finally found a way to keep all of my browsers in sync and now the service would be going away! Well, I found out some promising news today. The outpouring of support and the number of disappointed users expressing their willingness to pay for the service has made the company reconsider. If you're an existing customer or even someone who just found out about the service and would be willing to pay at least $10 per year for it, please go and sign the pledge at PledgeBank! I really hope it reaches their 100,000 signature threshold.

Update: Xmarks was acquired by LastPass, a company that provides a password management service. You can continue to use each service for free, pay $12/year for each of the premium services separately, or do what I did and sign up for the combination for $20/year.  What a nice outcome! :)

Sunday, April 25, 2010

Technical Research Topics

As you can probably guess from reading this blog, I'm the sort of person that's constantly researching new technologies, often to the point where I move on from a given topic before I've given it the time and attention it deserves.  The point of this post is to both mention what I'm doing to make my attention less transient and to discuss some of the technologies I've decided to focus on.

How am I trying to keep my research interests under control?  Composing a list.  I created a Google spreadsheet and started entering my professional interests.  That probably sounds rather unexciting, but for the first time in a while, I had a concrete list I could look over and evaluate.  The first thing I noticed was that it was long, far too long.  There was no practical way to work on all of the items in the short term.  The natural next step was to sort the list into a rough priority order.  It was hard to push items down ("Ooh, I bet that would be fun!"), but there are only so many things a person can do.

Here's a subset of the list, not necessarily in priority order (I'm still trying to figure out how much I care about the technologies being relevant to my day-to-day work):

  • Git is the distributed/decentralized source control system that Linus Torvalds put together in 2005 to manage the source for the Linux kernel.  It took me a while to grok the notion of distributed source control (I'm not alone), but once I did, I became convinced that it could lead to great productivity gains.  Rather than trying to convince you of this directly, I refer you to the site Why Git is Better Than X, the Getting Started with Git DZone RefCard and Git 101 screencast by Matthew McCullough (registration required), and GitHub.  If you need any extra encouragement, you should know that Git is being used by Grails (and SpringSource generally), Eclipse, and many others that I'm forgetting at the moment.  Learning Git is definitely my top research priority.
  • Static Groovy (most call it Groovy++, but I can't stand that name!) is a project based on the not-yet-released 1.8 version of Groovy that provides annotations allowing developers to designate sections of code (methods or classes) as statically typed.  This brings large performance improvements for many operations, allows some errors to be caught at compile-time rather than run-time, and allows type inferencing similar to what's done in Scala.  I dug into this a bit and ended up changing my mind.  Along with making Groovy run faster, it makes significant semantic changes.  It's not just an addition to the language, it's a whole separate dialect.
  • GPars (formerly GParallelizer) is a project that aims to make it easier to write parallel programs in Groovy.  I originally learned about its smooth support for Fork/Join, but it also enables several other concurrent programming models such as actors, agents, and dataflow concurrency.
  • Gradle is a new build system/language written in Groovy that learns from and improves upon Maven.  Like Maven and Grails, it emphasizes convention over configuration, but unlike Maven, it doesn't become painfully awkward to deal with when you diverge from its conventions.  It uses Apache Ivy to implement its dependency management features.  Speaking of which…
  • Ivy is a sub-project of the long-lived Ant build system and separates management of dependencies from the rest of the build process.  It can be used with Ant or other build systems (see previous).
  • CouchDB is a relatively mature open source document-oriented database that is frequently grouped with other "NoSQL" databases.  It's written in Erlang and stores JSON documents.  It allows you to build views based on Map-Reduce functions written in JavaScript.  I recently signed up for a beta account with Cloudant, a company that provides a hosted version of CouchDB.  As a related alternative, Riak is also definitely worth considering.

Wednesday, March 10, 2010

Finally Bit the Bullet – I'm on Twitter

So, after saying a while ago that I didn't understand Twitter, I've now signed up for an account (softwaregrove).  Why the change of heart?  I thought I'd give it a try to see if it helped me understand the phenomenon.  Truthfully, the thing that finally convinced me is a bit embarrassing – the lure of free (as in beer) software.  See my tweets (I can't believe I just typed that!) to learn more.

Sunday, January 24, 2010

Looking For Part-Time Groovy/Grails Work

As you can see from my LinkedIn profile, I'm an experienced Java developer (starting with 1.0 and 1.1 in the Fall of 1997), who's done some work with Groovy and Grails.  Although I love Java the Platform, I've decided (like many others I know) to gradually shift my emphasis away from Java the Language.  I've decided to focus on Groovy for now, but I can easily imagine adding Scala to my portfolio as well.
So, here's my challenge: I have the good fortune to have long-term Java work for a client that takes up most, but not all of my time.  That means that if I were to take on new Grails (or straight Groovy) work, it would have to be part-time.  That really limits my options.  If I can't find paid part-time work, I'll probably try to contribute to an existing Grails plug-in.  I already author an open source Groovy project, but it's so small that it doesn't really push me to improve my skills.
Any other suggestions?

Update: I found just what I was looking for with Wingu, a startup in stealth mode creating next generation science applications on the web.  Last week, I started working for them a day a week.  I'm looking forward to some Groovy/Grails/Gradle goodness. :)  (reference to mrhaki only slightly intentional)
By the way, if you're looking for something similar and you live in the L.A. area, I just saw a post show up on LinkedIn.  If you're not a member of LinkedIn, here are the details (PDF) on the Extremely Heavy Industries website.  I'm not familiar at all with the company, so make sure to perform your standard due diligence.

Update (Mar. 2, 2010): Things with Wingu didn't work out. :(  I'm back to looking.  This time around I'll try to do a better job of figuring out whether I can perform useful work for the client with the limited number of hours I have available.

Update (Sept. 1, 2015): I took a full-time job with CarGurus.com back in June of 2013 and I've been very happy here. If you're in the Boston area, I highly recommend it as a place to work.

Thursday, January 14, 2010

Prediction for 2010: VMware acquires Terracotta

While at SpringOne2GX back in October, the thought occurred to me that Terracotta would make a really interesting acquisition target for VMware.  VMware has had some pretty amazing virtualization technology for a while, including the ability to migrate live virtual machines between physical boxes, but it has (as far as I know) all been focused on low-level infrastructural magic.  That changed with their acquisition of SpringSource last year, which followed shortly after SpringSource's acquisition of Cloud Foundry.  Now, if you just add Terracotta to the mix, you could make it possible to easily deploy an auto-scaling clustered app to the cloud.  Doesn't that sound interesting?  Add to that the fact that Terracotta has been a sponsor for at least the last two SpringOne conferences in the U.S., SpringSource and Terracotta have already collaborated to build a sample app, and Terracotta brings Ehcache (easy clustered caching) to the table.  Seems like a potent combination to me.

I have no concrete grounds for this prediction beyond the points above, but I wanted to get the idea out there now just in case it actually happens. ;)

Update (May 26, 2010): Unfortunately, with the announcement of SpringSource/VMware's acquisition of Gemstone, my prediction is now unlikely to occur.  Oh, well.  Plenty of others before me have been wrong. ;)

Saturday, January 2, 2010

Problems with NVIDIA GT220 and Windows 7 64-bit

Sorry about the extremely narrow focus of this post, but I wanted to make sure that anyone out there suffering from the same problems as mine knows that they're not alone.

I recently built a computer from parts (more on that another time – I'm not sure how many people would be interested in the details) to use as my primary development machine.  The last time I built a machine was in 1999 or 2000.  A lot has changed in the past ten years.  Fortunately, the assembly/setup process went relatively smoothly, except for problems with one part.  I bought the ASUS-branded version of the NVIDIA GT220 (ENGT220) graphics card from NewEgg.  I'd happily link to their product listing, but that would be rather silly, given that I can't currently recommend it as a purchase.  The card slid nicely into the PCI Express 2.0 x16 slot and my DVI cable attached happily to the appropriate port (this version of the card comes with D-SUB/VGA, DVI, and HDMI ports).  However, when it came time to install Windows 7 64-bit, the problems began.

At first, it was recognized as merely a generic video card – no big surprise, still a bit of a disappointment for a mainstream card that is by no means on the bleeding edge.  My next idea was to download drivers from ASUS's website.  I installed the newest version and rebooted.  Up came the the login screen at full resolution and I thought I was done.  Unfortunately, after I logged in, my screen went totally blank/black.  After much experimenting and many installs/uninstalls, I managed to get the card to work with a slightly older version of the drivers provided by ASUS.  The story would end there, but sadly the problem returned shortly after.  This time, I first did a search on Google for gt220 screen blank, which revealed that others were having similar problems, and not just with the ASUS version.  After reading a blog post and some forum questions and trying several other driver versions, I finally found something promising.  A user on the NVIDIA forums complained that his DVI port had stopped working.  Inspired by that, I tried connecting my monitor via the D-SUB/VGA port instead of DVI.  That worked!  Since then, I've been running for two weeks without a problem.  I can't say I find the solution very satisfying, but at least it worked.

By the way, I'd love to get feedback from other GT220 owners as to whether the solution I described (or something different) works for you.  Please let me know in the comments.

Update (Dec. 10, 2010): I'm a bit embarrassed to admit that I finally gave up and bought a new graphics card with an ATI Radeon HD 5570.  I'd link to the actual card, but I got a great deal on it because it was just about to be discontinued.  So far, it's been great.  It's slightly faster than my GT220 card, consumes less power, has a quieter fan, and (best of all) works on both the D-SUB and DVI ports.  Good luck to everyone who sticks with their GT220!