Coding is the best.

For my projects, I like to have a single "boot script" that runs at start-up time. That script then looks at some metadata in order to decide "what to do next".

This has some cool side-effects, but the biggest "feature" for me is that I can publish a single .tar.gz package of the application (using npm pack for example), and the boot script can rely on the instance's metadata to run any of the services needed for my app.

For those of you just looking for "how do I safely get metadata into a shell variable":

boot.sh

This should run as the "startup script" for all machines. In my case, it's also deployed to GCS every time code hits the master branch in a Git repository.

This isn't a problem because this main boot script doesn't do anything specific with the rest of the code. It only figures out the version of the package to download and runs the boot script for the service (which lives inside the package just downloaded).

In other words, the only job of this main boot script is to download the right package. The rest of the work is done by the scripts inside that package (which are version controlled).

If you are writing software or having software written for you (or writing software for your start-up), have your attorney draft an IPIAA (intellectual property and invention assignment agreement) outlining exactly who owns what.

The longer version

Recently, the Court of Appeal ruled on a case involving Paymaster and GraceKennedy Remittance Services which had some pretty interesting implications related to confidentiality and intellectual property ownership. This is even more interesting to me because the IP in question was actually software, so it means that we in the tech industry should see this as a friendly reminder of what we should be doing already.

But before I get into specifics, I think it's worthwhile to quickly recap this 'work-for-hire' thing.

What is a 'work-for-hire'?

Put really simply: in the US, there's a law somewhere that says "if I pay you to produce some work, I own it, not you." There are all sorts of caveats on the type of work it can be, what the working arrangement is (employee versus contractor), and some common law tests that courts use when it's unclear who owns the work produced, but the underlying implication is actually pretty important:

If there's no contract specifying who owns what, ownership is subject to debate.

First, some background.

The net-neutrality debates in the US are focused on whether or not ISPs should be allowed to expose "internet fast lanes" for a surcharge. The debate centers around the issue of smaller companies (ie, startups) not being able to afford those faster speeds, and therefore being at a competitive disadvantage.

For example...

If Big Company had a video sharing website that was terrible but they paid the extra $100m USD per year to keep it fast, even a better video sharing website (think YouTube when it was starting) wouldn't be able to compete because it would be considered too slow compared to Big Company's site.

So where is the debate?

The debate I think we should be having in Jamaica is slightly less extreme than the one happening in the US.

I think we should consider drafting legislation similar to the Netherlands’ Telecommunications Act that says that ISPs cannot deliberately throttle traffic based on the content or purpose of that traffic (barring a few exceptions including throttling for congestion, integrity and security of the network, spam, or legal reasons).

If Digicel, LIME, or Flow decide to add a "faster lane" of traffic, we should debate the legality of charging for that later. For now, I'm saying no one should be slowed down.

Why does this even matter?

If Jamaica is serious about relying on innovation and investment in technology to level the playing field when competing on a global market, we cannot be at the whim of an Irish Telecom's top line revenue or quarterly targets.

It would be terrible to see a Digicel executive decide, in an attempt to meet revenue targets for the quarter, say "Let’s block WhatsApp so that people have to spend a bit more on text messages this month", or "Let’s charge WhatsApp a fee to allow their app to be used on our network".

Investment is already risky enough, and without any protections that Jamaican software companies won't be arbitrarily cut-off (or worse: held hostage) by an ISP, it isn't reasonable to continue investing in technology in the country.

Put simply: I won't be able to reasonably invest in tech companies targeting Jamaica.

As an investor in 10 Pound Pledge, I have to face the very real possibility of losing Caribbean customers based on an ISP not willing to deliver high-quality video content.

As an investor in EduFocal, I have to face the very real possibility that educational videos won't be delivered to customers without a hefty "transfer fee" (to be decided at the whim of the ISP).

As an investor in Blaze, I have to face the very real possibility that Digicel will build their own mobile money solution, and Blaze (being now found competitive to Digicel) will find themselves blocked from Digicel subscribers.

So what now?

I hope that Jamaican regulators and policymakers understand the implications of what they are allowing their telecom providers to do -- and the unintended and potentially disastrous consequences.

As an investor, I can certainly say that this move will make Jamaican-focused tech companies less competitive and less attractive for investment. It seems quite hypocritical for this to happen at a time when the government and the IMF are telling the Jamaican people that their main focus is on growing the economy.

Similarly, I hope that Jamaicans take a stand and tell their representatives that they won't tolerate discrimination of their data; that blocking traffic an ISP feels is "competitive" is unacceptable; that without treating all data the same, true innovation will be stifled just when we're starting to see great progress in Jamaica.

In a previous article I wrote about the need to update your Datastore indexes on App Engine before deploying code that relies on them. To simplify the deployment process, I put together a script that waits for your indexes to be built before deploying new code.

TL;DR: Requiring someone to sign an NDA just to hear your idea is unreasonable.

Every so often, I get an e-mail asking me for feedback on an idea, with a generic NDA attached that I'm asked to sign before I can hear what the idea is... I won't do that. And I'll let others much more experienced than I am explain why:

(The short version of each these is basically: "I can't and won't sign an NDA to hear your pitch or see your business plan.")

I’m happy to give feedback (who knows if it’ll even be useful to you), however the points in Carol Roth's article summarize the theme very well:

Your idea already exists (or being new can be a problem)

The value is not in the idea

Sharing ideas makes them better

If you’re going to share anything generally considered “secret sauce” (like access to your code repository or the special formula for the Red Bull competitor you’re starting), asking for an NDA is a reasonable request -- you have to protect your property (however, a first e-mail typically wouldn’t be the place to discuss sharing that level of detail though).

If you're just sharing the high level idea, see it for what it is: something that hasn’t materialized yet and will likely change a lot as you work more on it.