Friday, April 04, 2014

I'm Sad Brendan Eich Had to Step Down as Mozilla CEO

Yesterday, Brendan Eich stepped down as Mozilla CEO. If you've been living under a rock, it was because in 2008 he made a donation to the Proposition 8 campaign, which successfully (albiet temporarily) stopped the legality of same-sex marriage in California. There was a large backlash by employees and general internet community members about this.

As an out gay man working in technology, whose last significant post was specifically about the DOMA ruling (before it came out and I got all happy that for once something positive happened to gay rights in America nation-wide), you might think I'm happy about this. After all, Prop 8 was a truly shameful example of exactly how the California state referendum system can be used easily as a way for the majority to trample on the minority, and how easy it is for out-of-state interests to bankroll what should be a purely internal issue based on ideological/religious interests. You might think I'm cheering that mob rule for once worked in my favor.

I'm not.

Yesterday I was conflicted.

Today I think this was wrong and short sighted.

There is no doubt that Brendan is on the wrong side of history. The law has changed, public opinion has changed dramatically since Prop 8 passed, history will prove that Brendan's position was a historical anachronism. I don't even have to know or care why he donated to the Prop 8 campaign to know this.

I know there've been calls to say "Yes, but he hasn't changed his mind!" Quite frankly, I don't know if this is the case and again, I don't care. It will just make him seem even more on the wrong side of history before long. I'm fine with that. (And if you think he's ever going to change his mind after this, you don't know how the human mind works).

What I do know is this:
  • The State of California gives gay employees of Mozilla (a for-profit corporation) the legal rights and remedies that we've fought for if Brendan was to have attempted to discriminate, overtly or surreptitiously, against employees who are in a same-sex marriage.
  • Brendan has not whilst he was CEO done anything to indicate that he would attempt to act in such a way as to do that in the first place. In fact, he's attempted to be as reassuring as he can be.
  • Brendan has not attempted to use his position as CEO to promote personal causes in the political arena that would be contrary to the diversity of the work force (e.g. he's not pulled a Hobby Lobby or Chik-fil-a).
  • Were he to do so either of those things, given how public this has been, the board of directors would be within their rights to do the single thing a board of directors has the legal right and obligation to do in such a situation: fire the CEO.
I imagination a situation where the shoe is on the other foot. I imagine a situation where I was put in charge of a large and diverse technical organization, one where I had already established myself in the technical realm, and employees demanding that I be fired because I was gay. Isn't that what we've been fighting against?

But even more than that, history has shown that the way that people's minds change about these issues is day to day exposure to close associates (friends, family members, co-workers, employees) that are open about their sexuality. Over time, it transforms their views from these people are strange and different to these people are just like me, but gay.

It's why even extremely Christian identifying young adults are gradually becoming in favor of legalized civil same-sex marriage.

What the people rushing for the pitchforks have ignored is that this virtually guarantees that Brendan, and people like him, will choose to self-segregate themselves in the future from highly diverse organizations. And that is exactly what leads to societal mores not changing.

So no, I'm not pleased about this. I think it's just a victory for mob rule as Prop 8 was in the first place. And I had hoped we as gay people, had all moved beyond that.

Sunday, April 21, 2013

Charity Appeal for Spare Laptops in London

This isn't my typical type of post, but I couldn't think of a better audience for me to spread the word.

For the last few years I've been a supporter of a fantastic charity called Free The Bears. Started by a visionary named Mary Hutton, Free the Bears fights against abuse of bears throughout Asia. Starting with a successful fight against the horrors that were the Dancing Bears in India, Free the Bears has expanded its work throughout Asia.

Bears are subject to a number of different horrific treatments:

  • They're in restaurants where they're used for Bear Paw Soup;
  • They're kept in cages for the amusement of visitors to hotels and restaurants;
  • They're kept in illegal bear bile farms, where the bears are kept barely alive just long enough to tap their gall bladders for traditional medicine.

Pretty horrific, right?

How Free the Bears Helps

Free the Bears supports animal conservation in Asia in three primary ways:

  1. They work with government agencies to end the illegal wildlife trade;
  2. They have rescue centres in Cambodia, Laos, and Vietnam for animals confiscated by the authorities who need rehabilitation and medical care;
  3. They support education for the next generation to help break the cycle of violence.

I've been to the rescue facilities in Cambodia and Laos, which are providing fantastic support for bears that had been subject to the most horrific abuse. I've also joined the Luang Prabang-based team on a reconnaissance mission to an illegal bear bile farm in the countryside in Laos (truly one of the most horrific experiences in my life).

So I know first-hand just what fantastic work they do.

Why I'm Reaching Out

Quite simply, they need laptops. Old laptops that you wouldn't use anymore are fantastic for them. Apples are even better (these laptops are seldom if ever connected to the internet, and virus-laden USB keys are the primary file sharing system in rural Cambodia and Laos; they get infected faster than they can get updated virus definitions).

They need them for two reasons. First, they have field workers joining conservation teams that need some type of computing power with them. Second, they set up classroom education programs and equip the kids with laptops.

So if you have any older (particularly Apple) laptops lying around your company or house (including iPads) anywhere in SE England, please reach out. They have a team leaving the UK for Cambodia and Laos in May and the more hardware we can put in their suitcases the better. I'll coordinate everything at OpenGamma HQ and send as much as we can on the next trip.

I can't imagine that my readership lacks a few old laptops here in London that can be re-used for a fantastic charity!

They are also registered as a UK charity and can do Gift Aid top-ups on the donations as well!

Just leave a comment below, or email me (kirk at kirk wylie dot com) and hopefully we can get some more hardware going off to help the bears!


Wednesday, March 27, 2013

Some Thoughts on DOMA


Parenthetical: This is an extended version of a Facebook exchange

Today the US Supreme Court heard arguments in US v. Windsor.


1996: The Passage of DOMA

In 1996, I was attending Berkeley, doing an EECS degree. I lived in perhaps the most liberal place in America: Berkeley is a notorious stereotype for ultra-liberal American town; the Bay Area is famously liberal (key city: San Francisco); California has always been at the frontiers of acceptance and tolerance.

Day to day, as an out gay University student, I didn't really see any impact on my life. Sure, there were places where I wouldn't have gone with a boyfriend. Obviously, I wouldn't have planned a holiday to Arkansas or Mississippi (although would I anyway? Doubtful). But day to day, none of the red state idiocy impacted me.

And then DOMA passed. And all of a sudden I realized that I wasn't living in the bubble I thought I was. I was living in a nation that hated me.

Imagine, if you will, a 20-year-old man, who discovers the following:

  • The most representative institution in his country's government, the House of Representatives, not only votes to ban federal recognition of any marriage he might have, but to express a moral disapproval of homosexuality (seriously; until today's DOMA argument transcripts I hadn't read the House Report; it shocks me in its blatant homophobia even 15 years later)
  • The body of legislature designed to be a check-and-balance on the more populist instincts of the House (the Senate), voted 84% to pass the same legislation.
  • President Clinton signed the bill as fast as he could.

What does this say to a young gay man (already struggling with growing up in a post-AIDS world)? "Your entire federal government hates you and wishes you weren't American."

Fast Forward: 2004

In 2009, I came out on the internet. I expressed then that I moved to the UK because I was in a relationship where I was able to move to the UK based on my relationship with a British citizen, but not vice versa.

When I made that decision, I made one very simple promise to myself: I would never move back to the nation of my birth; the nation where I am a natural born citizen; until there were, at the very least, same sex immigration rights.

I'm still waiting. Paid a lot of taxes to HMRC in the meantime. Employ a lot of people. No sign 'Murica wants me back.

Today's DOMA Transcript

We're in March of 2013. The decision as it's handed down in June may be radically different.

The transcript from today's oral arguments seem to revolve around three major areas:

  1. Does the group of House of Representatives people have standing to appear at all?
  2. Is there a problem with DOMA on federalism issues?
  3. Is there a problem with Section 3 of DOMA on Equal Protection issues?

As a gay man I only care about point #3. To be honest, I really don't care at all about the mental gymnastics required to determine who may be a party, as opposed to an amicus, in a Supreme Court case. I'm sure the court does, I don't.

The federalism angle is great, if it's the best way to get DOMA overturned, which I reckon it is. Any port in a storm, eh?

But this isn't, to me, a rational discussion or debate. It isn't even a pragmatic one ("As long as DOMA gets overturned and there's gay marriage immigration rights I'm happy"). It's an emotional one. The US government in 1996 told me I was a second class citizen and they hated me.

So as an American who's chosen to move elsewhere, move somewhere that the federal government has a non-partisan, free vote, and says "Why the hell wouldn't we just accept gay marriage?", and an American who believes in his nationality of choice so much that he's taken citizenship, I ask you: why should I accept some second-tier decision? Why should I accept a situation where I am constantly thinking "Well, the legislative and executive branches would send me to a desert island if they could"?

I accept the US judicial process. I accept it takes time.

What I will never accept is that the nation of my birth takes great pains to tell me, repeatedly, that I am not welcome to return.

I will never be happy until the Supreme Court takes on the Equal Protection arguments in both the Prop 8 and DOMA cases and actually issues a ruling.

And I really hope that it doesn't, to paraphrase Justice Sotomayor, take 60 years of the Supreme Court choosing inaction (as it did in inter-racial marriage) to allow the issue to "perk" sic. Because if the Supreme Court is calling out miscegenation laws as its finest hour of jurisprudence, there're some problems.

Footnote

Justices Scalia and Thomas will, no matter what, write a scathingly homophobic opinion on both the Prop 8 and DOMA decisions. Because nobody has yet impeached them.


Thursday, August 09, 2012

June Public Appearances Follow-Up

As astute readers are no doubt aware, I made two public appearances in London in June. I said at the time that slides and video would appear after, and they're finally up!

London New Finance Panel

This one was videoed, but there were no slides. Here it is!


HNLondon Presentation

Here's the video:

Kirk Wylie - My First Startup Was A Failure from HN London on Vimeo.

You may find it useful to have the slides to follow along with, so here they are as well!

Tuesday, June 26, 2012

Public Appearances: 26/27 June, 2012

While I realise that I haven't been posting often (most often on the OpenGamma Blog when I am), and while this is very late notice, there are a couple of public appearances for me coming up in the next couple of days.

London New Finance Panel

Tonight in the City will be the London New Finance FinTech Pitch Night. After the pitch sessions (and I'm looking forward to those quite a bit) there will be a panel: "How do you get a FinTech startup off the ground?" Both Eddie George and I thought the OpenGamma experience might be pretty relevant to the audience, and I'm now on the panel tonight.

Hacker News London Meetup

Tomorrow (27 June 2012) in the Silicon Roundabout area is the monthly Hacker News London meetup. I'm giving one of the presentations, titled "My First Startup Was A Failure." If you're interested in my life before moving to London, this is going to be a pretty good session.

Many of my Faithful Readers will know that I co-founded my first startup at the ripe old age of 23, called Radik Software. There's virtually no evidence online (except for LinkedIn) that this company ever existed, and I've not really spoken about it publicly at all. That's going to change, as I'm going to go through the myriad of mistakes and errors that we made, and how I'm avoiding them this time around.

Slides and video for this talk will be available afterwards and I'll post them to the blog, but if you want to see it in person, there's still availability at the meetup!

Monday, October 17, 2011

Location Sensitive Posts: Do It Right, Or Don't Do It At All

When I posted that, I was at home. I live in Wandsworth (post code: SW18) in London; Camden (post code: N1) is 8 miles away according to Google Maps. To be very clear, I was nowhere near Camden at the time I posted that. (at least not as a Londoner would know it).

On my way home from work, Facebook somehow decided in a different post that I was in South Kensington (post code: SW7), even though I never crossed the river, going straight from OpenGamma HQ to Wandsworth and staying the entire time south of the river.

This is a problem.

No, You Can't Turn It Off

I'm running an iPhone 4S with iOS 5 running the most recent Facebook iOS update. Everything is as far up to date as you can possibly get.

I've tried to turn off location-sensitive Facebook updates. I've tried under Settings/Facebook. I've tried in the Facebook application. There appears to be no way that I (an otherwise relatively computer savvy individual) can figure out to turn it off.

Twitter lets you geo-encode a tweet. You can turn it on, you can turn it off. You can change your defaults and change a particular tweet (usually I tweet geo-encoded off, sometimes I turn it on for a location-sensitive post). You can take a look at where Twitter thinks you are, and if it's off, you can turn it off again. There's no such option for Facebook.

Why This Matters

In London, a distance of 8 miles is the other end of town. It's so far given our geography that it beggars the mind that if I claimed that I was at home, but some computer verified me as being in Camden, that this would not be an acceptable fudge the way that a distinction like Southwark/Lambeth, or Westminster/Kensington might be. I might as well be in Paris.

What I've noticed is that as geo-location gets better and better, people start assuming that the technology must be correct. Part of this is surely the CSI-culture that Hollywood has given us, telling us that computers are never infallible, and that all answers are on the other end of an infallible evidentiary chain. But part of this is that these days people probably do lie more than computers.

Which is why I'm so annoyed at Facebook's failures in this respect. If I tell someone (a friend; a family member; my significant other) that I'm at home watching Glee, and they see a Facebook update that says that I'm in Camden, one of the following will happen:

  • They will think I'm lying and am actually at an Amy Winehouse memorial concert;
  • They will think I'm probably telling the truth, but in the back of their mind think I might be lying and am shopping for Doc Martins;
  • They will 100% know that I'm telling the truth, and immediately blame Facebook's bad software engineering.

Which do you think is the most likely?

Worse off, imagine that we're talking about something where there are Serious Stakes on the line: a divorce ("you claim you were home watching Glee but your phone claims you were in Camden visiting your mistress"); a criminal trial ("you claim you were home watching Glee but your phone claims you were stabbing someone to death in Camden"); a terrorist investigation ("you claim you were home watching Glee but your phone claims you were making a bomb in Camden"). As technology advances, can you even doubt one of those will happen on a regular basis? Do you think the people evaluating the technology are going to ask things like "how accurate was the GPS receiver?" or "how was the coordinate-to-placename database compiled?"

We Owe It To The Humans

As a software engineer, please let me ask for the following code of conduct to prevail:

  • If you enable location-aware anything, make it obvious to turn it off, both as a default, and as a one-off action, before and after the location is determined;
  • Never imply more sensitivity than your entire system (hardware, software, and databases) are capable of;
  • Until and unless you have run your location system past a local in a particular region, don't enable it.

If we all follow these three maxims, we'll not repeat Facebook iOS's current failures putting me in Camden against my will.

Friday, October 14, 2011

Multi-Device Sync in iMessage

So faithful readers will know that I was a big Kik Messenger fan,, and used it to handle keeping in touch with world + dog given my nearly insane transatlantic flight schedule.

I decided, however, to give up the Android experience (keep meaning to blog about that) and use my old iPhone 3GS as my US phone, and my new (on its way) iPhone 4S as my UK phone. This, plus my iPad 2 (whose SIM I change in the plane in between London and New York), means that I can hopefully get my multi-device sync on and communicate with the vast majority of people that I SMS/IM to, who all have iOS devices.

However, I upgraded both my iPad and my iPhone to iOS 5, and iMessage wasn't synchronizing properly. Apparently this, the killer feature in iMessage (and the only one that's superior to Kik thus far in my experimentation), doesn't work out of the box. You have to change your phone settings to enable it.

  1. Go to Settings > iMessage
  2. Select "Receive At":
  3. Make sure at least one Email is set (and is set on any other iOS device you have), and then choose "Caller ID":
  4. Pick the email address you want to use (and make sure it's the same on all iOS devices):

And then you're in business! Shame they didn't make it default to this...

Thursday, September 15, 2011

A Quick Guide to Banking Titles

With the news that the police have arrested Kweku Adoboli on suspicion of engaging in rogue trading, I've seen some confusion on Twitter as to what it means that he was a Director at UBS. Some people have implied that this is a very senior role and he was head of Delta 1 trading. Nothing could be farther from the truth.

The core issue is that Director and Managing Director have meanings here in the UK outside of financial services (someone on the board, and the managing board member), and financial services companies have redefined them here to mean different things.

In general, banking titles go as follows:

No Title
Most junior people won't have any honorific title whatsoever, they'll just have a job function ("Trader", "Software Engineer", "Operations").
Associate Director (UK), Associate Vice President (US)
The first honorific title. Usually a strong individual contributor without management duties, or a few years into the job as a Trader.
Director (UK), Vice President (US)
Someone with supervisory duties or a more senior member of a trading team. In IT, a line-level manager will usually have the title Director.
Senior Director (UK), Senior Vice President (US)
Not every bank has this step, it's just an interim step between Director and Executive Director.
Executive Director (UK), Executive Vice President (US)
Typically a manager-of-managers. This would be common for someone who's one of the most senior traders on a desk, or a divisional head in IT.
Managing Director (both UK and US)
The highest honorific you can go. Typically MDs run a desk or a division, and usually have some form of signatory authority. They almost always have budgetary authority over some aspect of their business. There are many of them.
C*O
Exactly what you'd expect. There's one of these per area (though the Group CEO may not be the same as the Divisional CEO for example).

Also, one last tidbit. CIO can mean one of two things: either Chief Information Officer, which means what it would in any other firm; or Chief Investment Officer, which is completely different. Make sure you know which one you're meeting with.

Caveats: Yes, there are firms that do things differently. No, this may not apply at your firm. This might be very heavily biased to Investment Banks. But I meet a lot of people who work in the financial services industry, and have worked there myself, and these appear to be the most generic bands and equivalency.

Monday, September 05, 2011

Good VCs Don't Charge Their Companies For Flying First

Recently I was alerted to a post by Dan Shapiro titled "How to handle a VC who flies First" through a post on Hacker News. Good article, and you should go read it.

We faced a similar situation when OpenGamma expanded in its Series B to have a multi-national presence, and multi-national board of directors. Prior to the Series B, we had three board members, all based primarily in the London area. Adding an investment from FirstMark Capital, and taking Lawrence Lenihan onto the board meant that we now had three board members in London, and one in New York City.

That meant two things:

  1. We were going to start having board meetings in both London and New York City; and as a result
  2. Board members were going to start to travel for these board meetings.

To make matters worse, we had two different travel policies for our two venture capital investors:

  • Accel Partners, as a policy, doesn't charge travel expenses back to their portfolio companies.
  • FirstMark Capital does.

The Interesting FirstMark Approach

Accel has actually been thinking about starting to charge, as many of their peer firms already do. And that's a reasonable position to take. But if and when they do, I expect that they'll follow the lead that FirstMark does in the way that they do it.

Essentially, it's in the interest of a venture capital firm to ensure that any travel that they do is necessary and in the best interests of the company. You don't want to have your partners flying all over the world all the time, or else they'll never get anything done. But at the same time, you don't want to penalize the firm for the travel that is essential to the firm.

The FirstMark approach is simple:

  • Their partners don't like to fly economy (and as someone who's done 10 transatlantic round-trips this year thus far in coach, I can't blame them);
  • Their partners have preferred hotels that tend to be on the pricey side;
  • This is not the concern of the portfolio company.
  • The partner will make his or her own travel arrangements at times and in standards of travel that are suitable for the partner;
  • The firm will reimburse them an amount based on the partner travelling just for the board meeting, and in the standard flight fares (in our case, full-discount economy) and accomodation (in our case, nice, but not luxurious) for the portfolio company.

The VC wants to fly first class London to New York and stay at the Mandarin Oriental? Great, and I'm happy that he's doing well enough to afford it. But that's not what employees fly, and not where employees stay, so anything beyond what we'd consider a reasonable expense report is on him.

If the firm is doing well enough to expand their standard of travel for employees? Then they should expect to compensate their board member VC partners more as well and consider that when they decide what the standard travel policy should be.

I think this policy is fair to all concerned: business travel can be a significant cost in a business and a drain on those travelling, so it's worthy of minimization in general; but the needs of the firm have to come first over and above the luxury of the traveller.

To me, if a VC wants to charge you more than what you'd pay to fly an employee, their incentives aren't aligned with yours.

Thursday, April 28, 2011

First public OpenGamma Platform release

Remember that whole thing about the OpenGamma Platform being available Open Source?

Yeah. It is..

Thursday, January 27, 2011

Kik Messenger: One Feature Pack Away From Perfection

I've found that I'm now splitting my time quite a bit between London (where I live) and New York City (where OpenGamma's second investor lives, and where we're opening an office). As such, I've started facing some of the major issues faced by modern, fully-connected individuals dealing with multiple countries on a regular basis.

In Which Americans Fear International Dialing

So let's start with one very simple fact: Americans, as a whole, have a dramatic aversion to ever, under any circumstances, dialing a foreign phone number. Partially this is because they can call the entire United States, as well as Canada, without having to ever learn how to dial properly internationally. Partially this is a reflection that every US carrier (landline or mobile) will shaft you if you dare to dial a foreign phone number without planning very far in advance. Partially this is because except for a few key, international industries and roles within those industries, Americans just don't have to do this on a regular basis. It doesn't matter. What does matter is that for a massively large cross-section of USAmerica, international phone numbers may as well simply not exist.

Europeans are far more used to dialing internationally: we have to. If you had to dial internationally to dial someone living in the next state, you'd get more used to it. If I try to give out a British phone number to a French restaurant to reserve a table, I just say "country code 44" or if typing, "+44" and they know what to do. In America, you start with "country code" and before you know it, someone's asking you if you have a US phone number. If you don't, they just don't bother.

So if you spend much time in the US, you need a US phone number. Which I now have.

In Which Mobile Carriers Shaft You

So let's consider all the ways in which mobile carriers will shaft you, the well meaning international traveller:

  • You'd like to place a call from your phone, physically located abroad, to your home country? That'd be an extortionate charge, thank you very much.
  • You'd like to place a call from your phone, physically located abroad, to somewhere next door to where you're physically located? That'd be an extortionate charge, thank you very much.
  • You'd like to receive a call on your phone while physically located abroad? That'd be an extortionate charge, thank you very much.
  • You'd like to do something as daft as call a third-party country while abroad? That'd be at least double the extortionate charges as the ones before.
  • You'd like to turn on data roaming and actually consume mobile data? Hold on to your wallet; you'd be shocked and horrified at just how much that's going to cost you. In fact, don't bother. For the price of a one-week trip, you can buy a throwaway smartphone and SIM if you're willing to use a second device.

For all those reasons, when I set out to get a US phone number, I made sure that it was on a smartphone (Android; separate blog post to come on a long-standing iPhone partisan learning his way around Android). This way I should, in theory, cover all my bases: iPhone + UK home number when in the UK (and phone/SMS roaming in case someone should call me from home); Android + US phone number when in the US (and phone/SMS roaming in case someone should call me from the US).

There was just one problem: trying to corral all my SMS conversations.

Enter Kik

Those of you on O2's shockingly horrifically bad (think: you have to get over the thought that your SMS messages will reach their destination in less than a few days, if at all) SMS service will feel me when I say that SMS rocks, but O2's provision of it is virtually unusable.

Given the amount of time that I spend abroad, and given how bad SMS is for O2 iPhone users here in London, I thought I'd give Kik a try.

Kik's a great service, in that it's Just Like SMS, with a few key advantages:

  • It's instant. I've sent Kik messages between two devices next to each other, and they're very often delivered within the 100ms that defines human reaction time.
  • You can see when they've been handed off to the recipient device, and when they've been read.
  • It uses your data allocation rather than SMS allocation, which in this world of millions of free messages a month isn't that useful, but when you're abroad and SMS-ing people all over the world, it matters.

Basically, the best way to explain it is that Kik is Blackberry Messenger for any smartphone device, which is why RIM kicked it off the Blackberry.

So I got excited, and convinced the majority of the people that I text the most to get Kik.

Aside: The Dataficiation of Primary Phone Functionality

One of the most interesting things that I find about Kik and Skype and all manner of other services coming to smartphones is the conversion of functionality that used to be specific and dedicated to the phone networks to pure data-only plays. Phone calls? Skype/VOIP over your data connection. SMS? Kik. MMS? Facebook photo upload. Video calling? Facetime/Skype. All these things that mobile carriers built very specific functionality for in their networks are being very quickly replaced by equivalent (but superior) functionality delivered over the data pipe. I reckon it won't be very long before the first iPhone/Android phone (or carrier plan) that only works with data, and doesn't have dedicated logic for phone calls and the like.

Kik Shows Its Limitations

So I'm prepared. I've got my iPhone for the UK, I've got my Galaxy S for the US, I've got a bunch of people on Kik, I'm ready to go.

And then I actually try to use it in the manner I was intending. It doesn't work as I thought it would. D'oh!

Kik only supports a one-device-per-account model. Log in using your Android phone? It now gets all messages, and your iPhone gets none. And it only gets new messages. History? Nope.

Log back in on your iPhone? Your Android phone gets logged off, and you lose all the old messages you already had on your iPhone.

This is not what I had in mind, and as a result (it took me a while to actually figure this out) I just went back to SMS on my most recent trip to the states. At least then I've got history (though of course it's not across devices).

The Ultimate Feature Enhancement

So let's get to the meat of this long-winded tale. What would make Kik really solve my instant-IM-on-a-phone conundrum? Better support for multiple devices.

What does that mean in practice?

  • I can log in from multiple devices simultaneously
  • When I log in from a new device, full history of conversations is downloaded
  • When a new message comes in, it's delivered to all logged-in devices (and the message has been read notification follows the first one on which I read it)
  • When I send a message on one device, the sent message gets delivered to all other devices.

Here's the thing: I'm actually willing to pay (and pretty handsomely) for an enhanced version of the application/service that does this. You want to make it a paid-for enhancement? 100% fine by me. Just say the word.

So Kik team, ball's in your court. Great service, 90% of what I want, highly recommended in general if you live on one device, just that last bit needed to satisfy the multi-device, multi-national crowd.

Postscript

Turns out this problem has left many people I introduced to Kik leaving the platform. I raised it on the official Kik GetSatisfaction page. Let's see if they respond.

Tuesday, January 18, 2011

OpenGamma Series B Link Roundup

In case you've not been glued to Twitter, you might have missed out on the news that OpenGamma completed its second round (e.g. Series B) of funding late last month.

Just wanted to provide a quick link roundup of some of the more interesting news on t'interwebs relating to the financing. As meaningful stuff comes up, I'll keep this updated over the next few days.

Monday, January 17, 2011

Scala Considered Harmful For Large Projects?

Original Tweet

Last week, I was having an extended email conversation with Geir Magnusson Jr. (yep, that Geir, of Gilt Groupe/MongoDB/Apache Software Foundation fame), where we were talking about whether it was a good, bad, or indifferent idea to allow people to start to include Scala into large-scale programming projects that were otherwise based in Java. Geir and I ended up both agreeing that this was actually a bad thing, and should be avoided for the time being.

I tweeted the above missive, and all of a sudden I had more than 10 people contact me saying "please tell me more!" Let no one think I ignore my faithful readers.

What do I mean by a large-scale programming project? I mean one with the following characteristics:

  • It has a sufficient size that not every developer is potentially even familiar with every module.
  • It has distribution such that in a production use case, it is not a single monolithic process/binary.
  • It has enough people working on it that there is some type of specialization in terms of the teams and/or programmers.
  • It has flux in the developers (new people joining, people being replaced).
  • The same code base has been in constant development for a period of years, or is anticipated to be.

I've written about this in the past, where I referred to my desire for a Journeyman Programming Language. For what it's worth, I'm 100% behind the Backwards Incompatible Java movement spearheaded by one of OpenGamma's developers, Stephen Colebourne. And in that frame, what we're talking about in a large-scale programming project is precisely the context in which a journeyman programming language becomes useful.

So why did Geir and I concur that someone who has a large-scale Java programming project shouldn't start adding Scala into the mix?

Two main reasons:

  • The inherent problems in a split-language project;
  • The sheer flexbility (by design) of the language;

Do You Really Want Two Programming Languages?

Let's say you've got a single programming language in your large-scale project. In that case, you hire people who know that language; all your tooling is specific to that language; you try to make the best use possible of that language.

Any sufficiently complex large-scale programming project will likely have multiple programming languages inherently (usually because you need to use a particular programming language for a particular function or to integrate with someone else's code). But should you try to intermingle them by design?

Once you've done that, you've started to add unnecessary complexity to the project:

  • Do you have to start hiring dual-language programmers, or spend time training them in the language they don't already know?
  • How well does the tool chain integrate? Are there key gaps or differences in operation?
  • Are you going to inadvertently split the team into people who are comfortable with New Language versus people who aren't? Is that going to reduce your staffing flexibility to assign tasks to developers?
  • Is there going to be an impedance mismatch in terms of people or technology in crossing the language boundary? Is that going to cost you?

These are questions that have been faced by programming teams for years, and usually people come down on the side of not allowing programming language proliferation, unless it's part of an effort to upgrade/migrate the whole code base over time from an obsolete language/model to a more modern one. Would you really get that much benefit from Scala to include it at this stage? I doubt it.

Modern Java has a lot of the stuff that's in Scala. It's not as well integrated, much of it is bolted on as an afterthought, and quite a bit of it is based on convention, but you can get a lot of good stuff out of Java written in a very modern style. On balance, I don't think you get that much out of Scala to warrant its introduction into an existing large programming project.

Language Flexibility Bad For Large-Scale Projects

Let's assume that you're working in a programming language like Scala or C++ that lends itself by design to what I would consider to be abuse of the programming facilities (whether it's the ability to write BASIC code inline in the language, the ability to introduce APL-like operator character insanity, or the gratuitous abuse of the compiler that is turing-complete lambda calculus in the templating system). These are, I 100% concur, cool features. It's very very cool to see someone doing something like the BASIC DSL.

The problem is that if you have a language designed to make it easy to do this, you encourage people to do it. And that's when problems start.

Large-scale programming projects need to avoid this type of thing at all costs. In my opinion, there are several key requirements for the codebase for a large-scale programming project:

  • The code must be intuitive and fast to comprehend for a developer familiar with the rest of the project, but not the code in any particular module. In other words, anyone on the team can edit/fix/enhance any other part of code (where they understand the business concepts and/or underlying math).
  • The code must be intuitive and fast to comprehend at any point in the future. In other words, you can't have serious issues looking at old code (that's still in the code base) or old edits (where you're trying to figure out why a change was made by looking at history).

Does an inherently flexible language with kewl DSLs and custom characters and template abuse satisfy these? No. It doesn't satisfy the temporal understanding clause (because a DSL that doesn't get consistently used over time loses understanding), nor does it satisfy the pan-developer clause (because not everybody on the team, even if they know Scala as well as Java, may know the DSL or be able to effectively type in high-order Unicode glyphs).

Ultimately, a programming language that's useful for large-scale programming projects needs to have clear, unambiguous grammar and syntax so that any developer familiar with the project and the language can instantly figure out what's going on. Any features (operator overloading, terse/different method invocation syntax, DSLs) that add time in trying to figure out what a block of code does slow down the project. Sadly, Scala is chock-full of them, and it appears to be considered good Scala style to use as many of them as possible.

Can Scala Work?

Although you may think I'm all about hatin' on Scala, the answer is actually Yes.

Neither Geir nor I consider Scala inherently harmful to a large-scale programming project. It can be a very good addition, if your tool chain supports it and you're willing to train staff so that everybody can handle it.

But you have to have even more rigorous coding standards and review process to make sure that the features of the language that excite the "insanely cool programming techniques" crowd don't get used. You have to do what every C++ programming group has done for years: pick the features of the language and library ecosystem you're going to use, use them in a consistent way, and never ever deviate.

Note that I actually think that if you're kicking off a new project, you owe it to yourself to take a serious look at Scala as a programming language base for that project. But if you already have a large-scale Java-based programming project, I personally think that I would avoid it as much as possible.

By the way, lest you think that a new component or module comprise a new project in my thoughts, you're sadly wrong. A "new project" is one where, in my opinion, the entire technology team is separate from the previous one. In other words, a new codebase altogether. Think: new startup; new Line-of-Business funded application; heads of technology reporting into different parts of an organization.

Monday, December 20, 2010

Can too good development infrastructure spoil you?

At qCon San Francisco, Asish Kumar, head of development infrastructure at Google, gave a talk titled "Development at the Speed and Scale of Google". While I wasn't at qCon San Francisco, InfoQ has posted the video and slides, which I've just watched. First of all, stop what you're doing and watch the presentation if you're interested in development/build-and-test/SCM infrastructure. Stop now. This post will wait for you.

I originally wanted to write an article about how the talk shows just how much great developer infrastructure technologies can improve performance, and why every firm and team should be devoting significant resources to improving the infrastructure provided to developers. Heck, that's why OpenGamma's systems administrator spends most of his time working on our development infrastructure.

However, then as I kept watching the video, the more I saw a potential downside to this, particularly at Google scale: virtually everything you're using is bespoke. That has a number of potential issues:

  • Developers who may be quite familiar with "industry standard" development technologies will take time to come up to speed. While if you're focusing primarily on relatively long duration hires (on the order of years) this doesn't really matter that much, but many industries (for example, Finance, with its strong reliance on short-term contractors) have to factor staff churn in.
  • Unlike with most other development tools (which are dominated by Open Source technologies in the particular types of development Google does), once you start aggressively building a bespoke infrastructure you have to keep going down the bespoke route: you've effectively locked yourself into a path where you have to throw more and more resources at building your bespoke infrastructure to keep up with the state of the art.

In general, for Google, I think they broadly made the right choice to go bespoke in their tool chain. They want to leverage their own (highly proprietary) production infrastructure where possible, in probably most cases they're operating at a scale that no other tool chain would be capable of handling, and (Facebook poaching notwithstanding) they focus primarily on longer-term hiring.

But what about the developers themselves? My only worry about this type of thing from a longer term career development perspective is that, quite frankly, you get lazy in managing your own development infrastructure.

Let's say that you join Google, and spend a few years working very productively using their fantastic development infrastructure. And then you want to join a much smaller firm (which may or may not be your own startup). What then?

  • Could you even setup a makefile/ant script/maven setup yourself anymore? How long would it take you to relearn it?
  • Are you really going to have a good knowledge of what the current state of the art is in generic development infrastructure and build tools? After all, at New Gig you won't have the Google team backing you up.
  • Are you going to be perpetually frustrated in a role where you don't have a team working on your infrastructure for you?
  • Are you going to start designing systems where the build and test burden would be more than manageable with the infrastructure at Google, but where the lack of that infrastructure means that you might have been better off designing the system in a radically different way?

Note that I'm not actually saying that this is a bad thing, but I think if you find yourself as a developer in an environment where you have a large, well-skilled team taking care of stuff for you (whether that team is systems administration, operations, development infrastructure, whatever), you owe it to yourself to keep up to date with the state of the art in all the things in between writing your code, and your production environment, that other people currently do for you.

Otherwise, when you finally do get to a role where you no longer have those teams to work for you (or you have to figure out if they actually know what they're doing), you're not hamstrung by your background.

Tuesday, November 02, 2010

Another OpenGamma OpenHouse on 17 November 2010

Yep, it's that time again. The days are shorter, the nights are longer, there's a chill in the air, and it's time for OpenGamma to throw open its doors.

Beer; Food; Demos; Whiteboard sessions; Tech talk; Victorian warehouse conversion; Startup vibe. Honestly, if you're going to be in London on 17 November, why haven't you clicked the link and signed up?

Monday, October 18, 2010

I'm Hosting The Financial Track at qCon London 2011

As astute and long-term readers would no doubt be aware, I presented on RESTful Approaches to Financial Systems Integration at qCon London 2009 in the Financial Technology track. Then qCon London 2010 came, and I attended, and I was a little bit frustrated that in the city of the world most known for innovation in Financial Technology, there was no Financial Technology track.

Well, the masses have spoken. qCon London 2011 will have a Financial Technology track.

Even more humbling for me, I've been recommended as the host of the track, and I've accepted. I will be the Finance War Stories track host for qCon 2011.

I plan on making sure that this track follows on from the 2009 track, which was one of the highest rated and most oversubscribed tracks in the whole conference. Moreover, I plan on making sure that the track presentations are approachable and interesting for developers from finance as well as from people trying to learn from the financial technology industry.

I've long been of the opinion that the rest of the world, particularly web-scale industries, have a lot to teach the relatively insular community of financial technologists. I am also of the opinion that many problems people outside finance face are being reinvented by people who aren't familiar with the technologies, techniques, and architectures that have been second nature to financial industry professionals for years. I hope that we can continue breaking down the boundaries between financial technology professionals and the industry at large.

If you're interested in giving a talk, please feel free to contact me: kirk at opengamma dot com or a comment on this blog post is the best way to to the head of the list. In addition, if there's someone you really want to see presenting in this track, or something you want to see a talk about, please don't hesitate to contact me as well.

Tuesday, September 21, 2010

Back in New York City Next Week

Yes, it's only been a month since I was last in the city so nice they named it twice, but I'm coming back again.

I'm sure at some point this will be a frequent enough occurrence that I won't need to blog about it, but after the last post, I ended up having some very interesting meetups and conversations with people, so I'm trying the experiment again.

So that being said, on Monday the 27th of September I arrive in the sordid little burg on the other side of the pond. Hit me up if you want to talk about:

  • OpenGamma, in particular if you're thinking of using it
  • Fudge Messaging, in particular all the bits that we've done that aren't well documented yet
  • Startups, funding, or what a giant jerk I am on the internet (and in real life)

As usual, bonus points if you can give me a desk and get me out of the Ace Hotel when I'm not at customer/client/partner meetings!

kirk at kirkwylie dot com or kirk at opengamma dot com. You know what to do.

Monday, September 13, 2010

Cartoon Characters Discuss Web-Scale Asynchronous Communications

I couldn't resist joining in on the MongoDB/MySQL/DevNull Xtranormal meme. Many of these things I've blogged about before. But now with cartoon characters!

Thursday, September 09, 2010

Slow Clap for Item Moves in Basecamp

I follow SvN. I'm not entirely sure why at this point, as I very rarely actually see anything of merit on it anymore, but I've not gotten disappointed enough to drop it from my Google Reader.

Yesterday the Basecamp team decided to pat themselves on the back for allowing movement of items in between projects.

I look at the list of super-duper extra hard stuff that's going on, and I see one of two cases that could possibly be true:

  • They've sharded their databases to the point that even trivial operations require superhuman effort. Well-done in that case.
  • They've designed their database schema in the most completely insane way ever.

My suspicions? A little of column A, a little of column B.

Love this gem:

Is it a to-do list? It might contain to-do items that have associated time tracking entries. Move those time entries to the destination project too.

That seriously doesn't flow for free due to the relational semantics? You don't just have a FK relationship that means you're only updating the list?

Here's the lessons I think everybody should learn from this:

  • Sharding MySQL or another low-end relational database isn't a panacea, no matter how much it contributes to the web-scale secret sauce.
  • If you are sharding/partitioning data, you should probably think long and hard in advance about how that's going to impact movements across shards. Because they ALWAYS end up happening.

Wednesday, August 25, 2010

Java Initialization Barrier Pattern With AtomicBoolean

I've found myself starting to use this little mini-pattern. You might find it useful.

private final AtomicBoolean _hasBeenInitialized = new AtomicBoolean(false);
public void expensiveInitialization() {
  if (_hasBeenInitialized.getAndSet(true)) {
    // Someone else has already done the initialization,
    // or is currently doing it.
    return;
  }
  // Do the initialization that I want to be done only once.
}

Much simpler than any of the other mutual exclusion patterns that I've found myself using.

The caveat here is that in the case of multiple threads, it's possible that one thread (that got to the party late) may return to the caller before the initialization is done (if another thread is currently doing the initialization). Therefore, this pattern isn't suitable where the caller has to guarantee that the initialization is done before continuing in a multi-threaded environment.

I primarily use it where there's an initialization method that many parts of the code are going to call as a defensive measure before continuing. Think of it as a simple solution to the initializeIfYouHaventBeenButDoNothingOtherwise problem.

Of course, it well could be that everybody else in the world is already doing single-initialization this way, and I'm too addled from being outside the day-to-day coding world to have caught up.

UPDATE 2010-08-25 : I changed the name of the control AtomicBoolean to make it clearer that this is a multiple-execution-over-time pattern, and not a general purpose synchronization barrier.