Wednesday, September 30, 2009

Startup Visa : The Sausage Is Half Stuffed

In my first, very personal post about what's now become the Startup Visa movement, I referred to the sausageworks nature of modern USAmerican Immigration policy. Brad Feld has come out with a straw-man policy, and asked for ways the system can be "gamed". Check the comments for my took-me-10-seconds way to game it.

More than that, though, I think the simplistic nature of the argument is ignoring the types of detailed policy issues that come out whenever you attempt to meddle in immigration policy. Let me try to come up with a few that came to my mind right off the bat.

Families
So let's say your founders aren't 23-year-old Ramen-eating YCombinator founders. Let's say they've got a family of any kind. How do you deal with the family members?
  • First of all, how do you even define family member? Child? Adopted child? Step-child without adoption? Spouse? Parent? Brother/Sister? There are clauses in immigration law in the US to handle all those types of situations. [1]
  • Can they move to the US? While you might at first guess "of course," this isn't always guaranteed.
  • Can the spouse work? What about the children [2]? Do they have any restrictions on what types of employment they can take?
  • What about benefits for the family? Can the children go to school? Are they eligible for school lunches and after-school programs?
  • What about someone who wants to get married after they move here? Can they bring their fiance in from their original country?

Families are messy, and you can't just wave your hands and say "well, just do whatever it is you do for Class X," because all visas have a different way of dealing with family members.

Exit and Employment
Okay, so you've managed to get a startup going, and it's been successful, and now it looks like some big, rich company is going to buy it. Great! What happens to the founder?

At that point, the founder will, no doubt, have a big set of golden handcuffs keeping him or her with the purchasing company. That will require that the founder convert from being a founder to an employee. What does that do to the immigration status under a Startup Visa? Does it auto-convert? Under what terms? After the acquisition can the employee then leave to another firm? If not, can they go back to VCs and found another company, or has their Startup Visa status altered irrevocably?

Because if it auto converts, here's a very easy loophole in the system:

  1. Borrow $500k
  2. Give it to a trusted source
  3. Trusted source #1 invests the $500k in your firm, and takes 100% ownership. Firm now has $500k.
  4. You get your visa and move to the states
  5. Trusted source #1 sells the firm for $1 to a shell company run by Trusted source #2 (who now has the $500k)
  6. Trusted source #2 gives the $500k back to the founder as a sign-on bonus, who now has a work permit and the original $500k.
  7. Founder now takes work permit and moves somewhere else (possibly by selling the shell corporation to the ultimate employer).
Sure, there would be transaction costs along the way, but it's another way to game the system. And I'm pretty sure that you can't come up with ways to stop this gaming of the system without stopping the type of constant acquisition flow that happens in the real world.

If you don't give the founders conversion rights to an employee, their startups are effectively defunct before they get started, because they're essentially acquisition-proof. If you do, the system can be gamed. [3]

Long-Term Conversion
So let's say that you've got your two-year renewable visa. What does that eventually translate into? Because at some point you're going to want to actually settle down, and you might not have had a successful exit yet. Do you have to keep being a founder of a company until you hit the jackpot? You can never join an existing startup?

You're going to need some means of long-term visa normalization. Does the visa translate directly to a Green Card? Would be difficult given the number of years it takes to live in the US before you can apply for a Green Card under other statuses. What about converting to an H1-B? Oh, wait, that's full of issues at the best of times, and now, you have to factor in the annual lottery (how would an H1-B conversion affect the numbers in the lottery?).

So you're going to have to come up with some means of normalizing the long-term immigration status of the founder, and his family, and I don't think there's an existing mechanism for that that works for this type of visa.

"My Turn For Reform."
So you've got a bill that's sensible, and covers all the various bits and pieces and makes sense from a legislative perspective. Here's the problem: there are people who have vested interests in immigration reform that have been waiting for longer than you have, and they're not going to be happy if you skip to the head of the immigration reform queue.

For example, let's consider gays and lesbians, who have UAFA to correct the circumstances that led to my leaving the USA, which has been pending in the house since 2000. That's a long time. And as you can tell, I don't like some upstarts coming in and trying to jump to the head of the queue.

Yep, I'm bitter, and biased, and ranty. I'm also the exact type of person likely to go ballistic and get my representative to try to attach UAFA to your bill, which will then tank it [4]. And if you don't think there are at least 5 other aggrieved groups in America who will do the same, you're wrong.

Because immigration policy affects people so intimately, it really REALLY touches people's buttons, and they will fight tooth and nail for their own pet reform, at the expense of anything and everything else, which is one reason why this is such a morass.

Summary
Again, I have vested interests here: I'm bitter, and I want London to succeed as an independent tech hub outside of the US. But I think if you read this far, you should be convinced that a proposal for a visa that fits into a single paragraph isn't sufficiently worked through to be practical.

I repeat myself from several comments on Other People's Blogs: getting a Startup Visa is going to require a lot of long, hard policy debates. Why not spend that time working on more meaningful immigration reform that solves the underlying problem, rather than just a symptom? And why not push for the UAFA while you're at it?

Footnotes
[1]: Note that for the sake of simplicity I'm just going to assume that the US continues to have its "no gays desired" immigration policy and not even go into that minefield.
[2]: If you've got teenage children, they might want to have a summer job so they can fit in. Heck, they might even want to have an after-school job.
[3]: I don't want people to game the system. I merely want to point out that if I see it, others in lawmaking and the immigration lobby will as well.
[4]: Because if there's something that kills bills instantly, it's not being suitably discriminatory to teh gheys. Heck, just add something discriminatory to the Startup Visa bill and it'll probably get through first try!

Tuesday, September 29, 2009

Have finally resolved comments and layout

After several attempts in the past, I've finally managed to move Kirk's Rants to Disqus for comments, and fixed the layout.

While I attempted to use their snazzy-dazzy comment importing system, it reported that there was an error with the import, so I had to fall back to only enabling for new posts. Let's see if it actually works now!

I've also got a template now that actually fills out the screen, which is pretty important when you write as verbosely as I do, and want to include code snippets.

Hopefully this postpones the time before I finally move off Blogger and onto some other platform.

Sunday, September 20, 2009

My qCon London 2009 Presentation

It's hit the interwebs. Here's the video and slide deck all in one.

I haven't actually watched the whole thing yet (it's 2am here in Blighty), but if you missed the talk, have a watch. At least the first 5 minutes isn't terribly embarrassing.

The Founder Visa Ignores Immigration Reality

My fearless readers are, no doubt, already familiar with the fact that I'm an American born and bred, but transplanted here to blighty to face my future amongst the whinging poms. I feel, based on my Silicon Valley-meets-London personal experience, I have something to add to the "Founder Visa" debate.

The notion of a "Founder Visa", originally coined by Paul Graham, has spread far and wide: Brad Feld, Slate, Eric Ries and a whole wave of twitches picked up the meme. The basic idea is that you'd get a visa to go and live in the US if you founded a new venture-backed company in the US. It sounds so simple a policy prescription that it must be a fantastic idea!

Exasperated Sigh

In Which Our Hero Visits Locations Unknown

I didn't move to the UK because I was a huge fan of the weather, or the food [1], or the transportation [2], or the dentistry. I moved here for immigration reasons.

When people ask me why in the world I left San Francisco to move to England, the typical answer I give is "family reasons." Which is true, but not incredibly descriptive. I think it's time to give a fuller story, and in the process out myself. [3]

When I moved here I was in a long term relationship with a British citizen. He had moved to the US with an L-1E-1 Treaty Trader visa [4], and was hoping, nay praying, that this could be upgraded to an H1-B. Unfortunately, although he was an extremely experienced financial software pre-sales consultant, with a BS from a quite reasonable UK university, and paid quite significant taxes for precious little in return, this wasn't going to happen. We lived for several years under the threat that if his firm decided to let him go for whatever reason, he had two weeks to leave the country forever. Given that his firm wasn't doing particularly well at the time, this put a major strain on his life, and thus our relationship.

After New Labour was elected here in the UK, one of their first actions on taking power was to rationalize gay immigration rights. Essentially, they said that if you were in a same-sex domestic partnership akin to marriage, that would be considered as though you were married for immigration purposes. Thus, I was able to move to the United Kingdom based on our relationship [5]; the converse was not true. We didn't have the option to get married in the US or the UK, and even if California had same-sex marriage at the time, it didn't matter for immigration purposes. [6]

So I gave up a career in Silicon Valley, where I had already been a founder of one firm, and worked in senior technical roles in several others. No doubt I would have started at least one firm in the Valley since then. I was a net win for the US in every single respect: I paid a lot of tax, I didn't use very many services, and I created a lot of high-tech jobs. The US lost me because certain Americans view my sexual orientation as, well, wrong.

Recently, I've started a venture-backed technology startup in London. Even though we've only been incorporated one month, I'm already benefiting the local economy and tax base. I'm creating jobs, hiring service providers who employ local staff, and spending money that creates jobs out of work. I pay personal taxes, and pay corporate taxes that help raise the tax base of the country as a whole. From a purely economic perspective, it's absurd to alienate someone like me from the US, but that's precisely what's happened. I don't plan to move back anytime soon. [7]

In Which Immigration Policy Becomes A Morass

Fundamentally, US immigration policy is a complete nightmare. All the vested interests, all the religious/social/conservative arguments, all the animosity, it's all a nightmare. And it's much more the third-rail of US politics than even health care or social security. Even though the Shrub had massive majorities in both houses of congress, he still couldn't push through even the most minor (to me) immigration reforms. What hope do a bunch of VCs have?

The UK, Canada, and Australia have solved this in a very clean way. They take a person, weigh them up on purely objective criteria, and determine whether the country believes that they will be a net-win to the country; if so, they get in. The UK calls this the Highly Skilled Worker program; Australia calls it the General Skills Migrant program. Why can't the US do the same thing?

Because when I hear about things like a Founder Visa program, what I really hear is a general denunciation of US immigration policies and procedures. What I really hear is "We can't hire the people that are necessary for the industries that are important to the country, and we're picking the edge case that we understand the most." That's not good enough. The edge case isn't the problem, the system is the problem.

In Which VCs Run A Chocolate Factory

Let's say that we had a Founders Visa. Let's say that we had this single exception to the insane US immigration policy morass. Here's my worry from a policy perspective: it changes the power dynamic for early stage investment with a non-American founding team so drastically it disturbs me. Top-tier VCs I'm not worried about; it's the less scrupulous sources of money that trouble me. [8]

Right now you have a power dynamic that, in general, involves equity investment by a risk capital firm in a firm founded by one or more entrepreneurs. Now let's say that in the middle of those discussions, you also had the dynamic where an offer of funding would also change the founder(s) immigration rights dramatically. Don't you think that would be detrimental?

Because I could easily see situations where bad sources of capital would essentially give a term sheet, wait until near closing and the founder(s) had started to make plans on living in the US, and then change the parameters of the deal in the docs stage. Because if you've already taken a lease on a home, started moving your stuff, started thinking you're going to live there, what's a few extra percent off the top if it preserves your visa?

Personally, I'm against the Founders Visa because it conflates immigration policy with risk capital investment. I'm in favor of rationalizing US immigration policy because it's the right thing to do.

Epilogue

If you start thinking that you can address US immigration policy without addressing my personal reasons for emigrating, think again. You have to reform the system as a whole, and you have to convince Americans in places that don't have a startup scene that immigration of people Not Like Them can be good for the country. If you don't start from first principles, you're doomed to failure.

I was forced to leave the US because there are people in the US who believe that the country would be better off without me, and those people have legislative power. I accept that, and it's why I'm not planning on moving back. Unless you manage to convince those same people that your plans to allow immigration are better for the country, and for them, you'll never succeed.

I wish you all the best of luck. I won't help you, because I think you're targeting an edge case but disregarding the fundamental iniquities in immigration policy. Furthermore, your policies wouldn't have kept me in the Bay Area, and I'm still bitter.

However, if you manage to fix things, I might just move back to Silicon Valley for the next startup.

Footnotes

[1]: I kid, I kid. Seriously, the food in London is fantastic, if you can afford to dine at the fantastic restaurants.
[2]: My commute in the San Francisco bay area: 45 miles; 45 minutes. My commute in London: 5.5 miles; 45 minutes. Then again, I've never been allowed to drive here, and I've never missed it, so it's a mixed bag.
[3]: I've been careful to never allow my sexuality to enter my public persona. I feel strongly enough about this matter, and it has affected my life so personally, I can't remain silent about it.
[4]: You've likely never met someone with this visa; it's exclusively for sales professionals of a foreign firm selling into the US, and nothing to do with the more common L-1 for consulting purposes.
[5]: The fact that I was obviously a net tax win for the UK made the application a formality, but it wasn't part of the official evaluation at the consulate.
[6]: People seem to forget about immigration in the US state-by-state same-sex marriage debate. It's a pure federal matter, so as long as DOMA is in effect, single-state same-sex marriage doesn't affect immigration rights.
[7]: I don't plan to ever move back as long as the official stance of the US government is that I am a lesser citizen by virtue of my sexual orientation.
[8]: And don't pretend they're not around. We all know that for every Accel, every Benchmark, every Index and KPCB and Red Point and Sequoia, there at least 2 firms that prey on entrepreneurs.
Updates since original posting:
I was corrected in the type of visa my partner had. It was an E-1 Treaty Trader, not an L-1 as I originally said.

Tuesday, August 25, 2009

The Ivy Tutorial Strikes Back

We're continuing on with the Jim Moores Guest Post series, as Ivy proceeds to destroy his source code directory.

After my previous problem with the build.xml file supplied in the Ivy tutorial I hit another issue that I thought I'd share. The default ant build file given in the Ivy tutorial generates an example source file within the ant file and then builds it. I, and I presume many others, based their new ivy-aware projects on that file. It has the default targets for downloading and installing ivy. Yeah. Problem is that one of the targets looks like this:

Can you see where this is going? Note where it says to delete the entire source directory. Yeah. That just happened to me.

I lost about half a week's work. It was my own fault. Because I'm a Perforce refugee and we've decided to try using git, I was more hesitant than usual about checking non-working code into my own code branch just because i wasn't so familiar with the git style of doing things. So while I was trying to get the ivy problems ironed out I ran ant clean which promptly deleted all my source code. All of it. Well, except the unit tests.

Please, let this be a lesson that I've learned so that you don't have to. While I accept that this was my fault, I can't help thinking that as a rule no build file should ever delete the entire contents from the src directory, particularly not one shipped as part of a tutorial that one would attempt on existing code.

Ant, Ivy 2.0.0, and java.net.UnknownHostException

This is a Very Special Guest Post by Jim Moores, another one of the OpenGamma team. We thought this would be useful to the interwebs, and until we have the OpenGamma blog ready to go, we're all ranting as one.

Ivy is a great way of avoiding shipping all the dependent libraries with your code and making upgrading dependencies smoother and easier, but it can still be a bit rough around the edges. For those of you new to Ivy, it's a dependency manager that is built on top of Ant that goes off and downloads and installs all your dependent libraries given a pretty simple list in an xml file. It hit version 2.0 a few months back and started to be really useful with more and more projects switching over to it. Of course Maven has done many of the same things for much longer, but Ivy doesn't require the whole head-warping change of viewpoint that Maven does. To be fair to Maven, I've only used it in passing when building the MyFaces JSF source code and while I did get it working, and was impressed, it took a bit of fiddling. My general understanding of Maven is that it's more declarative than 'normal' build systems - you tell it what you need and you have to rely on it figuring the whole thing out and it requires you let go of the idea of targets and explicit flow control (apologies to Maven fans if any of this is inaccurate). Ivy requires less of a leap of faith because it fits in with the Ant style that is more familiar to many but still brings the advantages of automatic dependency tracking. It can even install itself.

When I first tried Ivy three or four months ago I quickly found that some of the packages I wanted weren't available in the default ibiblio maven repository, in my case it was BerkeleyDB. I soon came across the excellent Ivy RoundUp repository. Ivy RoundUp doesn't actually host the packages themselves, it's a meta-repository that hosts information on how to download extract and repackage artifacts on demand. Unfortunately I couldn't just switch over to RoundUp because I needed some packages that were only on ibibio, so I had to delve deeper into the ivysettings.xml file to set up what is called a chain resolver. Chain resolvers do just what they sound like they do - they try one repository and then fall back to another if the package can't be found in the first. Here is my settings file:

Unfortunately this didn't work at all. It turned out that the example ivy build.xml in the tutorial contains the line:

  <property name="ivy.install.version" value="2.0.0-beta1">
</property>
And that 2.0.0-beta1 has a bug in it that means that chain resolvers don't work. Once I updated the ivy.install.version property to the latest version (2.0.0 at the time) it worked fine. This is still a problem with the tutorials, so be aware.

Since then I've needed to start using Hibernate in my application so I thought adding it would be easy as it's one of the most widely used Java packages. Err, no. After finding Hibernate in RoundUp easily enough (the latest ibibio version is really old), my build hung for some time, apparently unpacking a file, and then went totally exception-tastic on me.

[ivy:cachepath]
[ivy:cachepath] download.1.N65558:
[ivy:cachepath]
[ivy:cachepath]       [get] Getting: file://C:/DOCUME~1/Jim/LOCALS~1/Temp//jta-1_1-classes.zip
[ivy:cachepath]
[ivy:cachepath]       [get] To: C:\Documents and Settings\Jim\.ivy2\packager\cache\jta-1_1-classes.zip
[ivy:cachepath]
[ivy:cachepath]       [get] Error getting file://C:/DOCUME~1/Jim/LOCALS~1/Temp//jta-1_1-classes.zip to C:\Documents and Settings\Jim\.ivy2\packager\cache\jta-1_1-classes.zip
[ivy:cachepath]
[ivy:cachepath] C:\Documents and Settings\Jim\.ivy2\packager\build\javax.transaction\jta\1.1\build.xml:53: The following error occurred while executing this line:
[ivy:cachepath] C:\Documents and Settings\Jim\.ivy2\packager\build\javax.transaction\jta\1.1\packager-output.xml:28: java.net.UnknownHostException: C
[ivy:cachepath]         at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:541)
[ivy:cachepath]         at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:418)
[ivy:cachepath]         at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
[ivy:cachepath]         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ivy:cachepath]         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[ivy:cachepath]         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
and another ten pages of related stuff which I'll spare you. There was clearly some problem in downloading the JTA 1.1 classes, which are a dependency of Hibernate. I tried upgrading to the latest version of ivy - didn't work. I then assumed it was an ivy package file and went digging around. When I looked to see the temporary file it was trying to open it wasn't actually there. Hmm. Just before that it implies that it's downloading the file in question. Could it be deleting it? I eventually decided it must be a problem with the file in the repository, so I went looking for help there. That's when I came across this thread on the roundup mailing list archives, and then onto the Roundup discussion of manually downloaded software.

It seems some of the software DOES NOT get downloaded automatically by ivy. Unfortunately, instead of giving you a nice error message telling you where to put it, you get a java.net.UnknownHostException. It turns out you need to download the artifacts manually from the Sun website and put them in the temporary directory ivy uses to store package downloads.

Once it did this it all works magically. Apparently the reason for this is that the download requires ticking a license agreement box which can't be done automatically. I hope this knowledge helps someone save some time. I think in the long run it'll probably mean me having a private repository for those artifacts, but for now I'll leave that for another day.

Saturday, August 22, 2009

Dress Code Wars Episode IV: The Suits Strike Back

Wow. What a bit of a crazy couple of days since my last rant on the absurdity of forcing developers to work under dress codes. It hit Proggit, Hacker News, was tweeted by some high-follower-count people, and had more page views than anything else I've done. For those of you new to the feed, welcome!

I've been following the conversation on as many sites as I've been aware of, to try to keep the conversation going, and I was quite chuffed when there were more words on the subject written by !Kirk as by me. Particularly given my verbose writing style, that to me is a sign of a good conversation, which was the primary reason for the rant.

I just wanted to take some time to address some of the common arguments that kept coming up.

Kirk, you're a pompous Prima Donna and you're really not that good, either. Just shut up.

Ahhh, Argumentum ad Hominem. Where would the internet be without you? Just for the record though, I don't claim I'm that good a developer, and while I've been accused in the past of being a Prima Donna, I really don't let it get to me. I think it's more telling about the accuser than the accused.

I like dressing nicely

Bully for you! I'm sure you look lovely in your bespoke suit and custom made shirt. I'm positive you're quite the looker, and are attractive to both genders. You're a straight shooter with Management Potential written all over you.

If you like dressing nicely so much, why are you worried about a lack of a dress code? Why not have no dress code and still wear a suit? If you're just saying that you like dressing well, why not stay dressing well without forcing your sartorial choices on others?

I like South-East Asian food a lot. I think you should like it. But I sure as heck wouldn't have a company cafeteria only sell Thai food, and force you to eat in it every day.

It's better for your career to dress well

Thanks for looking out for your fellow software engineers, and incidentally, I actually agree with this one (if you desire a management role, or a role where you're working very closely with the business on a daily basis, you should dress up a little). But it should be your choice.

This one is an arms race as well. The only way this works is if you dress just a little bit better than everybody else, no matter what they're wearing. Norm is jeans and T-shirt? You wear chinos and a shirt. Norm is slacks and a shirt? You wear a suit. Norm is a suit? You wear a bespoke suit and a custom-made shirt and Hermes tie. No matter what, you always have to dress just a little bit better. You should actually be the most in favor of loosening dress codes, because then you don't have to dress that well/expensively/uncomfortably to still stand out.

Without a dress code, chaos will ensue

"Dress Appropriately" is the most powerful dress code you can have, because it completely eliminates all these arguments:

  • People will dress like ragamuffin street tramps. Someone goes too far and you think it affects others? Take them aside and say "that's inappropriate."
  • People won't dress up for meetings where formal attire is required. I dress down when I code, but when I meet with investors or customers, I dress up. That's just common sense, and if you actually hire people with common sense, they'll use it.

Fundamentally, we're not children, we're professional software developers. Removing arbitrary rules won't result in a Lord of the Flies situation breaking out.

I don't like seeing your manky feet

Believe it or not, this came up several times. As long as women can wear open toed shoes or nice sandals or whatever, it's just a rubbish argument. You don't like seeing a bloke's feet because you don't usually see a bloke's feet. Believe it or not, there are whole countries where very few people of either gender wear shoes on a regular basis. Get over your foot phobia.

My family needs to eat

Look, I completely understand that your family needs to eat, and if, on balance, the best job on offer is one which dictates a dress code, and you're aware of the likely attitude of the firm based on the existence of said dress code, you should take it. I didn't want a job with a dress code when I took the contract with Big Bank B, but my family needed to eat as well. Pragmatism is the primary virtue of the successful professional software developer.

Just be aware that if the firm has a dress code, in my opinion, that signals many things about the firm and its relationship with its technical staff. Go into it with your eyes open. And in my opinion, if you have a choice between a job with no dress code, and a slightly higher-paid job with a dress code, you should pick the one without the dress code.