Skip to content

Source Code Escrow

Have you ever considered asking a software vendor to put their source code in escrow? I recently broached the topic with a vendor I was evaluating. They didn’t seem too happy about the topic (at first, they were a bit sarcastic [“does Oracle do software escrow?”] and then they deleted tech support forum post). I did a bit of research, and there doesn’t seem to be a clear consensus on software escrow. Here are two interesting articles: Are you just following the herd? and Source Code Escrow.

Just having started thinking about the topic, my thoughts are still up in the air, but here’s my first reaction. Source code escrow makes sense when the following conditions are met:

  • The software is not open source (duh)
  • The software is or will be crucial to your business
  • The company is small or the future of the company is up in the air
  • You (the purchaser) have the technical capabilities to support the software should you receive it, or you’re willing to invest in those who can
  • You are willing to pay more for source that will be escrowed

I think of source code escrow like a warrenty on a car, or a professional license of open source software (like RedHat or Alfresco). It’s not for everyone (a car mechanic isn’t going to buy the warrenty) but it’s a nice option to have. And, to stretch a metaphor, if you’re going to soup up your car and build a livelihood on it, it’s nice to have a warrenty.

Gray Tiles with Google Maps

Just thought I’d put this out there, since it caused me much gnashing of teeth.  If you have google maps on your site, you want to make sure that the max-width is set to none: div.google-maps img{ max-width: none; } or you’ll have a nice gray screen where your maps are supposed to be, but no error messages at all.  See below:

Google Map with Just Gray Tiles

DualPhone 3088 Skype Phone, a few months on

A few months ago, I reviewed a skype phone that we purchased from Amazon, the DualPhone 3088.   I wanted to follow up after actually using it for a few months.  As a refresher, we bought this phone to reduce the number of minutes we spent on our cell phones.  It has both landline and skype phone capabilities, but we are not using it as a landline.

The pluses:

  • costs are as low as expected.  We’re paying $13.52/month for phone service that can call normal phones anywhere in the world, and receive calls from any phone, on top of our internet service that we were already going to pay for.

The mehs:

  • Overall phone costs haven’t gone down.  First we wanted to wait because of I had acquired a new phone and wanted to see how the data plan affected costs, then we looked at the next tier lower of cell phone plans and worried about minute overages.  We’re making an effort to use the home phone more now, and hopefully in the next month or two will cut our cellphone plan back.  (If we had a financial emergency, such a cell phone plan transition would happen much more quickly.)
  • There is intermittant outages, but not worse than a cell phone (yes, I have at&t).

The minuses:

  • the phone feels cheap–my SO refers to it as a ‘toy phone’
  • You can definitely tell when someone else is using the internet–downloading a movie or large file affects phone conversations
  • Every two to three weeks you have to re-register the phone with the base station.  This procedure varies in complexity–sometime it can be as simple as following a few steps (the user manual explains them [PDF]) but sometimes you have to sign into skype again.  The firmware hasn’t been updated since 2009, so I don’t expect this problem to ever be fixed.

In conclusion, I would not recommend this phone to anyone except an early adopter or someone trying to cut costs radically.

Using Cargo to deploy to multiple containers

I am new to maven, but recently used it on a project that needed to deploy to two tomcat containers.  Cargo seems to be the plugin of choice, but I had a devil of a time trying to get it to deploy to two existing containers with one command.

I ended up using the ant-run plugin to just manually copy the war files where they needed to be.  This plugin usage also archives old war files and expands the new one, as well as deploying to the failover container.

Attached, you can see the relevant section of the pom.xml: cargo-deploy-two-containers

Hope this helps.

CakePHP Rating System

I was thinking about adding a rating system (1-5 stars) to a cakephp site I run, and was looking forward to it.  But then I remembered the cardinal rule of software development, especially in the internet age: check and see if someone has done it first.

And someone had. Updated 6/2/2105: The previous link no longer works.  If I had to, I’d try this plugin instead (but I haven’t).

The biggest issue I ran into is making sure that I added the javascript helper to every controller that uses the default layout.  If I didn’t do that, I got a blank white screen.  Other than that, smooth sailing.

google_debug parameter: Google Ad Manager Help

I’m using Google Ad Manager because OpenX didn’t get back to me quickly enough when I requested a free hosted account.  Sorry, it’s not Google Ad Manager, it’s Double Click for Publishers.  Whoops.

It’s relatively complicated software, probably because serving ads is relatively complicated business.  I have hacked my way through it, but the single most helpful tip I found was to append <code>?google_debug</code> to the page you’re trying to get the ad displaying on.  This pops up a window with what is basically a stack trace of the javascript execution on your page.  You might not understand all of it, but you can definitely cut and paste the message you find into the Google Ad Manager help search, and find more useful answers.

Quick Donation Website Setup

This is based off a question I got from a friend–how can non techies easily set up a website to take donations and publicize a cause?

It’s not hard.

Of course, Google Sites isn’t the most flexible publishing platform (see, for instance, this discussion on how to link to an uploaded PDF), but it will get the job done for most simple sites.

Long live the non expert publisher!

Why the reverse brain drain?

Via a retweet from Brad Feld, I saw this article.

This is confusing to me.  There is no hard data, but I’d like to explore why are people leaving the US to start companies back in the homeland.

Is it because of:

  1. visa issues
  2. the cost to build a company
  3. the economic opportunity in their home country

If it is the first one, I’m in favor of reform, though I think there are a number of ways to encourage founders to stay, and tying their visa to VC funding, like the startup visa does, doesn’t seem like an optimal strategy.

If it is the second, then we need a cost benefits analysis.  Making it easier to start companies is not an unalloyed good.  For example, I wouldn’t want it to be easier to start a company that made cancer causing products.  It’s harder to start a company in the US because we as a society have made choices that impose costs on companies.  Ask the Chinese how it is to have ineffective regulation.  On the other hand, as outlined in comments here, lowering risk for entrepeneurs (lack of health insurance!) could really lower costs for starting a company.

If it is the last, then, good luck to them.  Who can argue with the fact that Indian engineers are cheaper or that “there are no mature companies, like Google and Microsoft” in these countries?

On My Brief Experience with Wireframe Tools

I was looking for a tool to quickly and easily build wireframes.  Oh, it had to be free too.  Luckily, I found this useful list of wireframing tools.

The first one I picked was Simple Diagrams.  I like Adobe AIR apps, already have the runtime and it looked nice.  Even had some tutorials, even if they were third party generated.

But then, I’m actually using it, and I go to save the image and there’s no save!  You can export as PNG, but you can’t, using the free version, save a project, shut down your computer, turn it on again, and then open up your project to where you were.  Now, I’m no opponent of freemium business models, but if you can’t save a diagram and come back to it, the program is really crippled.  Call it a demo, but it’s not anywhere near a free functioning version.

I then tried Web Site Wireframe, but wanted something that would work offline.

Finally, I tried Pencil Prject.  It’s not the most polished (one of the tabs in the main screen is “My Stuffs”) but it worked–I could edit files offline, and save projects and re-open them later. It’s also kinda cool because it is built on top of the XUL and Firefox application frameworks (they have a plugin and a standalone app available).

Any wireframe tools you would recommend?

Parsing street addresses in a java application

I recently had to find a way to parse a street address into its component parts, and thought I’d share my adventure.

The idea is to take a string like “123 S Main Street” and break it apart into the street number (123), the street direction (S), the street name (Main) and the street type (Street).

At first, I thought that regular expressions would work, but the sheer variety of legal postal street addresses quickly dissuaded me, as did my boss’s misgivings.

Stackoverflow has a nice discussion of the problem, which gave me some additional pointers.  There’s a commercial solution, which is available as a COM component or a web service–I didn’t try this.  There is a free, but application/attribution required, web service provided by a university that did a great job (thanks, California tax payers).  This solution is also available in a for-pay variant.

Neither of these were desirable because we needed to parse a lot of addresses quickly, and calling out over the web can be slow.  Some more digging turned up this stack question and  JGeocoder, which has a fairly robust address parser.  It’s not perfect, but it was free and open source.  I am not sure if it is still in development (the author didn’t respond to my email) but it does what we need it to do.

As an added bonus, we’re using pentaho for the data processing, and you can call java classes directly from your data processing steps, so I didn’t even have to wrap the java call in a shell script or anything.