tag:blogger.com,1999:blog-79522533830234033622024-03-20T09:22:37.064+00:00Kirk's RantsI code.
I used to be super-hardcore in Silicon Valley. I moved to London, sold out and worked for financial services companies. Now back to the startup life.
Here's where I rant at nobody in particular.Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comBlogger181125tag:blogger.com,1999:blog-7952253383023403362.post-21321594333144040192014-04-04T12:09:00.002+01:002014-04-04T12:09:40.445+01:00I'm Sad Brendan Eich Had to Step Down as Mozilla CEO<div dir="ltr" style="text-align: left;" trbidi="on">
Yesterday, <a href="https://blog.mozilla.org/blog/2014/04/03/brendan-eich-steps-down-as-mozilla-ceo/">Brendan Eich stepped down as Mozilla CEO</a>. 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.<div>
<br /></div>
<div>
As an <a href="http://kirkwylie.blogspot.co.uk/2009/09/founder-visa-ignores-immigration.html">out gay man working in technology</a>, whose <a href="http://kirkwylie.blogspot.co.uk/2013/03/some-thoughts-on-doma.html">last significant post was specifically about the DOMA ruling</a> (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.</div>
<div>
<br /></div>
<div>
I'm not.</div>
<div>
<br /></div>
<div>
Yesterday I was conflicted.</div>
<div>
<br /></div>
<div>
Today I think this was wrong and short sighted.</div>
<div>
<br /></div>
<div>
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.</div>
<div>
<br /></div>
<div>
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).</div>
<div>
<br /></div>
<div>
What I do know is this:</div>
<div>
<ul style="text-align: left;">
<li>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.</li>
<li>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.</li>
<li>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).</li>
<li>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 <b>and obligation</b> to do in such a situation: fire the CEO.</li>
</ul>
<div>
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?</div>
</div>
<div>
<br /></div>
<div>
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 <i>these people are strange and different</i> to <i>these people are just like me, but gay.</i></div>
<div>
<i><br /></i></div>
<div>
It's why even extremely Christian identifying young adults are gradually becoming in favor of legalized civil same-sex marriage.</div>
<div>
<br /></div>
<div>
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.</div>
<div>
<br /></div>
<div>
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.</div>
</div>
Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-3632966284093201352013-04-21T15:23:00.001+01:002013-04-21T15:23:10.214+01:00Charity Appeal for Spare Laptops in London<div dir="ltr" style="text-align: left;" trbidi="on">
This isn't my typical type of post, but I couldn't think of a better audience for me to spread the word.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeEcfYB-NoUL7_S08hzbyIQeWn29zyzCmo7n4I4sFwvwrVkR020_MpQ_PpD2pf9HtjbWo1UN6jKMpOk7wHYfuQtB0VfGBgSbDDE99tSJZLv0iIyJQcRZfNZCWOSbhk8e4v9yQu7DIVx6gH/s1600/bear-for-blog-post.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeEcfYB-NoUL7_S08hzbyIQeWn29zyzCmo7n4I4sFwvwrVkR020_MpQ_PpD2pf9HtjbWo1UN6jKMpOk7wHYfuQtB0VfGBgSbDDE99tSJZLv0iIyJQcRZfNZCWOSbhk8e4v9yQu7DIVx6gH/s320/bear-for-blog-post.jpg" width="320" /></a></div>
For the last few years I've been a supporter of a fantastic charity called <a href="http://www.freethebears.org.au/">Free The Bears</a>. 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.<br />
<br />
Bears are subject to a number of different horrific treatments:<br />
<br />
<ul>
<li>They're in restaurants where they're used for Bear Paw Soup;</li>
<li>They're kept in cages for the amusement of visitors to hotels and restaurants;</li>
<li>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.</li>
</ul>
<br />
Pretty horrific, right?<br />
<br />
<h3>
How Free the Bears Helps</h3>
Free the Bears supports animal conservation in Asia in three primary ways:<br />
<br />
<ol>
<li>They work with government agencies to end the illegal wildlife trade;</li>
<li>They have rescue centres in <a href="http://www.freethebears.org.au/web/Projects/Cambodia/">Cambodia</a>, <a href="http://www.freethebears.org.au/web/Projects/Laos/">Laos</a>, and <a href="http://www.freethebears.org.au/web/Projects/Vietnam/">Vietnam</a> for animals confiscated by the authorities who need rehabilitation and medical care;</li>
<li>They support education for the next generation to help break the cycle of violence.</li>
</ol>
<br />
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).<br />
<br />
So I know first-hand just what fantastic work they do.<br />
<br />
<h3>
Why I'm Reaching Out</h3>
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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
I can't imagine that my readership lacks a few old laptops here in London that can be re-used for a fantastic charity!<br />
<br />
They are also registered as a UK charity and can do Gift Aid top-ups on the donations as well!<br />
<br />
Just leave a comment below, or email me (<code>kirk at kirk wylie dot com</code>) and hopefully we can get some more hardware going off to help the bears!<br />
<br />
<br /></div>
Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-41869436902115950512013-03-27T21:55:00.000+00:002013-03-27T21:55:10.646+00:00Some Thoughts on DOMA<div dir="ltr" style="text-align: left;" trbidi="on"><br />
<p><i>Parenthetical: This is an extended version of a Facebook exchange</i><br />
</p><p>Today the US Supreme Court heard arguments in <a href="http://www.supremecourt.gov/oral_arguments/argument_transcripts/12-307_jnt1.pdf">US v. Windsor</a>.<br />
</p><br />
<h3>1996: The Passage of DOMA</h3><p>In 1996, I was attending <a href="http://www.berkeley.edu/">Berkeley</a>, doing an <a href="http://www.eecs.berkeley.edu/">EECS</a> 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.<br />
</p><p>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.<br />
</p><p>And then <a href="http://en.wikipedia.org/wiki/Defense_of_Marriage_Act">DOMA</a> 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.<br />
</p><p>Imagine, if you will, a 20-year-old man, who discovers the following:<br />
<ul> <li>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 <a href="http://www.gpo.gov/fdsys/pkg/CRPT-104hrpt664/pdf/CRPT-104hrpt664.pdf">moral disapproval of homosexuality</a> (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)</li>
<li>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.</li>
<li>President Clinton signed the bill as fast as he could.</li>
</ul></p><p>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."<br />
</p><h3>Fast Forward: 2004</h3><p>In 2009, <a href="http://kirkwylie.blogspot.co.uk/2009/09/founder-visa-ignores-immigration.html">I came out on the internet.</a> 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.<br />
</p><p>When I made that decision, I made one very simple promise to myself: I would <b>never</b> move back to the nation of my birth; the nation where I am a natural born citizen; until there were, at the very <i>least</i>, same sex immigration rights.<br />
</p><p>I'm still waiting. Paid a lot of taxes to HMRC in the meantime. <a href="http://www.opengamma.com/about/jobs">Employ a lot of people</a>. No sign 'Murica wants me back.<br />
</p><h3>Today's DOMA Transcript</h3><p>We're in March of 2013. The decision as it's handed down in June may be radically different.<br />
</p><p><a href="http://www.supremecourt.gov/oral_arguments/argument_transcripts/12-307_jnt1.pdf">The transcript from today's oral arguments</a> seem to revolve around three major areas:<br />
<ol> <li>Does the group of House of Representatives people have standing to appear at all?</li>
<li>Is there a problem with DOMA on federalism issues?</li>
<li>Is there a problem with Section 3 of DOMA on Equal Protection issues?</li>
</ol></p><p>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.<br />
</p><p>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?<br />
</p><p>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"). <i>It's an emotional one. <b>The US government in 1996 told me I was a second class citizen and they hated me.</b></i><br />
</p><p>So as an American who's chosen to move elsewhere, move somewhere that the federal government <a href="http://en.wikipedia.org/wiki/Same-sex_marriage_in_the_United_Kingdom">has a non-partisan, free vote, and says "Why the hell wouldn't we just accept gay marriage?"</a>, 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"?<br />
</p><p>I accept the US judicial process. I accept it takes time.<br />
</p><p>What I will <b>never</b> accept is that the nation of my birth takes great pains to tell me, repeatedly, that I am not welcome to return.<br />
</p><p>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.<br />
</p><p>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" <i>sic</i>. Because if the Supreme Court is calling out miscegenation laws as its finest hour of jurisprudence, there're some problems.<br />
</p><h3>Footnote</h3><p>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.<br />
</p><br />
</div>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-2936311224290096842012-08-09T09:10:00.000+01:002012-08-09T09:10:25.045+01:00June Public Appearances Follow-Up<p>As astute readers are no doubt aware, I made two <a href="http://kirkwylie.blogspot.co.uk/2012/06/public-appearances-2627-june-2012.html">public appearances in London in June</a>. I said at the time that slides and video would appear after, and they're finally up!<br />
</p><h4>London New Finance Panel</h4><p>This one was videoed, but there were no slides. Here it is!<br />
</p><iframe width="560" height="315" src="http://www.youtube.com/embed/Q6R-DtQgKLg" frameborder="0" allowfullscreen></iframe><br />
<h4>HNLondon Presentation</h4><p>Here's the video:<br />
</p><iframe src="http://player.vimeo.com/video/46894307" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe> <p><a href="http://vimeo.com/46894307">Kirk Wylie - My First Startup Was A Failure</a> from <a href="http://vimeo.com/hnlondon">HN London</a> on <a href="http://vimeo.com">Vimeo</a>.</p><p>You may find it useful to have the slides to follow along with, so here they are as well!<br />
</p><iframe src="http://www.slideshare.net/slideshow/embed_code/13920843?hostedIn=slideshare&page=upload" width="476" height="400" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-91825817220165236612012-06-26T10:03:00.000+01:002012-06-26T10:03:11.405+01:00Public Appearances: 26/27 June, 2012<p>While I realise that I haven't been posting often (most often on the <a href="http://www.opengamma.com/blog">OpenGamma Blog</a> 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.<br />
</p><h4>London New Finance Panel</h4><p>Tonight in the City will be the <a href="http://www.meetup.com/newfinance/events/66926232/">London New Finance FinTech Pitch Night</a>. 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 <a href="http://www.opengamma.com/">OpenGamma</a> experience might be pretty relevant to the audience, and I'm now on the panel tonight.<br />
</p><h4>Hacker News London Meetup</h4><p>Tomorrow (27 June 2012) in the Silicon Roundabout area is the monthly <a href="http://www.meetup.com/HNLondon/events/69942082/">Hacker News London meetup</a>. 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.<br />
</p><p>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.<br />
</p><p>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!<br />
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-59959427735435128342011-10-17T21:07:00.001+01:002011-10-17T21:11:45.262+01:00Location Sensitive Posts: Do It Right, Or Don't Do It At All<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwfLKseGT8vSoRkzQpPo0wRCi-YmwHMJ9HTFG7NoYlGhqxwwCzw6brcaMNsCsaizFCMyHCbNuWlRnyEiQAE7srDvF1PVQ4zQogj8YxB_V72BOSWKHLq2fREe0oPtLjggYHld-kTTzLjrWD/s1600/Screen+shot+2011-10-17+at+20.42.30.png" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="64" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwfLKseGT8vSoRkzQpPo0wRCi-YmwHMJ9HTFG7NoYlGhqxwwCzw6brcaMNsCsaizFCMyHCbNuWlRnyEiQAE7srDvF1PVQ4zQogj8YxB_V72BOSWKHLq2fREe0oPtLjggYHld-kTTzLjrWD/s400/Screen+shot+2011-10-17+at+20.42.30.png" /></a></div><p>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, <b>I was <i>nowhere</i> near Camden at the time I posted that.</b> (at least not as a Londoner would know it).<br />
</p><p>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 <a href="http://www.opengamma.com/contact">OpenGamma HQ</a> to Wandsworth and staying the entire time south of the river.<br />
</p><p>This is a problem.<br />
</p><h4>No, You Can't Turn It Off</h4><p>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.<br />
</p><p>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.<br />
</p><p>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.<br />
</p><h4>Why This Matters</h4><p>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 <b>not</b> be an acceptable fudge the way that a distinction like Southwark/Lambeth, or Westminster/Kensington might be. I might as well be in Paris.<br />
</p><p>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 <i>CSI</i>-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 <b>do</b> lie more than computers.<br />
</p><p>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 <a href="http://knowyourmeme.com/memes/true-story">at home watching Glee</a>, and they see a Facebook update that says that I'm in Camden, one of the following will happen:<br />
</p><ul><li>They will think I'm lying and am actually at an Amy Winehouse memorial concert;</li>
<li>They will think I'm probably telling the truth, but in the back of their mind think I <i>might</i> be lying and am shopping for Doc Martins;</li>
<li>They will 100% know that I'm telling the truth, and immediately blame Facebook's bad software engineering.</li>
</ul><p>Which do you think is the most likely?<br />
</p><p>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 <i>doubt</i> 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?"<br />
</p><h4>We Owe It To The Humans</h4><p>As a software engineer, please let me ask for the following code of conduct to prevail:<br />
</p><ul><li>If you enable location-aware <i>anything</i>, make it obvious to turn it off, both as a default, and as a one-off action, before <b>and</b> after the location is determined;</li>
<li>Never imply more sensitivity than your entire system (hardware, software, <i>and</i> databases) are capable of;</li>
<li>Until and unless you have run your location system past a local in a particular region, don't enable it.</li>
</ul><p>If we all follow these three maxims, we'll not repeat Facebook iOS's current failures putting me in Camden against my will.<br />
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-27785588541925155912011-10-14T13:01:00.000+01:002011-10-14T13:01:15.046+01:00Multi-Device Sync in iMessage<p>So faithful readers will know that I was a big <a href="http://kirkwylie.blogspot.com/2011/01/kik-messenger-one-feature-pack-away.html">Kik Messenger fan,</a>, and used it to handle keeping in touch with world + dog given my nearly insane transatlantic flight schedule.<br />
</p><p>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.<br />
</p><p>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.<br />
</p><ol><li>Go to Settings > iMessage</li>
<li>Select "Receive At":<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUe29Y5eASY4KPF8EaWHGrSg3voxHBxttiHQWMoURn9cVrvHqOou2TZ9IqSG36e-E9bSEDO8MU2FyqdPK4RJEnGi3A7VtSLJK7BdROpkPOHK8fuN6TnTerL6wr4RUEJrWVjTUrHMlcCiN2/s1600/IMG_0567.PNG" imageanchor="1" style=""><img border="0" height="400" width="267" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUe29Y5eASY4KPF8EaWHGrSg3voxHBxttiHQWMoURn9cVrvHqOou2TZ9IqSG36e-E9bSEDO8MU2FyqdPK4RJEnGi3A7VtSLJK7BdROpkPOHK8fuN6TnTerL6wr4RUEJrWVjTUrHMlcCiN2/s400/IMG_0567.PNG" /></a></div></li>
<li>Make sure at least one Email is set (and is set on any other iOS device you have), and then choose "Caller ID":<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAI2onfjb98HXhu0aLe82i8_hWpYeMfcEHUQJhKQThr-CRjDybBnDSdZ32D2Nogto02CMkdqYlZF9Hg7IiGukgIbIeCaLUimNo2oZQu2YskV_oZXciimajMfxgiR2pTbCFzSt9We8L0aSm/s1600/IMG_0568.PNG" imageanchor="1" style=""><img border="0" height="400" width="267" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAI2onfjb98HXhu0aLe82i8_hWpYeMfcEHUQJhKQThr-CRjDybBnDSdZ32D2Nogto02CMkdqYlZF9Hg7IiGukgIbIeCaLUimNo2oZQu2YskV_oZXciimajMfxgiR2pTbCFzSt9We8L0aSm/s400/IMG_0568.PNG" /></a></div></li>
<li>Pick the email address you want to use (and make sure it's the same on all iOS devices):<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI49LWILL38o4-bmKaOAcdjd35tIHj4btdfFKB46n03AbqkmvyFHPTUQl_wT07LNhuM9jKs4vkWHUvFZ-Yuq2xdhaxfTirP1-SMURCPwEA8nWtox9DWNRN8LQniUOPFowCU_Hmk57GVtam/s1600/IMG_0569.PNG" imageanchor="1" style=""><img border="0" height="400" width="267" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI49LWILL38o4-bmKaOAcdjd35tIHj4btdfFKB46n03AbqkmvyFHPTUQl_wT07LNhuM9jKs4vkWHUvFZ-Yuq2xdhaxfTirP1-SMURCPwEA8nWtox9DWNRN8LQniUOPFowCU_Hmk57GVtam/s400/IMG_0569.PNG" /></a></div></li>
</ol><p>And then you're in business! Shame they didn't make it default to this...<br />
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-42239648570410979732011-09-15T13:44:00.000+01:002011-09-15T13:44:33.717+01:00A Quick Guide to Banking Titles<p>With the news that the <a href="http://www.bbc.co.uk/news/business-14927432">police have arrested Kweku Adoboli</a> 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.<br />
</p><p>The core issue is that <b>Director</b> and <b>Managing Director</b> 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.<br />
</p><p>In general, banking titles go as follows:<br />
</p><dl><dt>No Title</dt>
<dd>Most junior people won't have any honorific title whatsoever, they'll just have a job function ("Trader", "Software Engineer", "Operations").</dd>
<dt>Associate Director (UK), Associate Vice President (US)</dt>
<dd>The first honorific title. Usually a strong individual contributor without management duties, or a few years into the job as a Trader.</dd>
<dt>Director (UK), Vice President (US)</dt>
<dd>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.</dd>
<dt>Senior Director (UK), Senior Vice President (US)</dt>
<dd>Not every bank has this step, it's just an interim step between Director and Executive Director.</dd>
<dt>Executive Director (UK), Executive Vice President (US)</dt>
<dd>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.</dd>
<dt>Managing Director (both UK and US)</dt>
<dd>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. <i>There are many of them.</i></dd>
<dt>C*O</dt>
<dd>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).</dd>
</dl><p>Also, one last tidbit. CIO can mean one of two things: either Chief <b>Information</b> Officer, which means what it would in any other firm; or Chief <b>Investment</b> Officer, which is completely different. Make sure you know which one you're meeting with.<br />
</p><p>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 <b>lot</b> 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.<br />
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-52585542805681242162011-09-05T11:12:00.000+01:002011-09-05T11:12:17.660+01:00Good VCs Don't Charge Their Companies For Flying First<p>Recently I was alerted to a post by <a href="http://www.danshapiro.com/blog/">Dan Shapiro</a> titled "<a href="http://www.danshapiro.com/blog/2011/09/how-to-handle-a-vc-who-flies-first/">How to handle a VC who flies First</a>" through <a href="http://news.ycombinator.com/item?id=2960494">a post on Hacker News</a>. Good article, and you should go read it.<br />
</p><p>We faced a similar situation when <a href="http://www.opengamma.com/">OpenGamma</a> <a href="http://www.opengamma.com/about/news/2011/01/18/opengamma-second-round">expanded in its Series B to have a multi-national presence, and multi-national board of directors</a>. Prior to the Series B, we had <a href="http://www.opengamma.com/about/directors">three board members</a>, all based primarily in the London area. Adding an investment from <a href="http://www.firstmarkcap.com/">FirstMark Capital</a>, and taking <a href="http://www.firstmarkcap.com/team#/lawrence_d_lenihan_jr">Lawrence Lenihan</a> onto the board meant that we now had three board members in London, and one in New York City.<br />
</p><p>That meant two things:<br />
</p><ol><li>We were going to start having board meetings in both London and New York City; and as a result</li>
<li>Board members were going to start to travel for these board meetings.</li>
</ol><p>To make matters worse, we had two different travel policies for our two venture capital investors:<br />
</p><ul><li><a href="http://www.accel.com/">Accel Partners</a>, as a policy, doesn't charge travel expenses back to their portfolio companies.</li>
<li>FirstMark Capital does.</li>
</ul><h3>The Interesting FirstMark Approach</h3><p>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.<br />
</p><p>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 <i>is</i> essential to the firm.<br />
</p><p>The FirstMark approach is simple:<br />
</p><ul><li>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);</li>
<li>Their partners have preferred hotels that tend to be on the pricey side;</li>
<li><b>This is <i>not</i> the concern of the portfolio company.</b></li>
<li>The partner will make his or her own travel arrangements at times and in standards of travel that are suitable for the partner;</li>
<li>The firm will reimburse them an amount based on the partner travelling <i>just</i> for the board meeting, and in the <i>standard</i> flight fares (in our case, full-discount economy) and accomodation (in our case, nice, but not luxurious) for the portfolio company.</li>
</ul><p>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.<br />
</p><p>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.<br />
</p><p>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.<br />
</p><p>To me, if a VC wants to charge you <b>more</b> than what you'd pay to fly an employee, their incentives aren't aligned with yours.<br />
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-68488815432370917942011-04-28T16:00:00.000+01:002011-04-28T16:00:23.555+01:00First public OpenGamma Platform release<p>
Remember that whole thing about the OpenGamma Platform being available Open Source?
</p>
<p>
Yeah. <a href="http://developers.opengamma.com/news/2011/04/28/first-platform-release">It is.</a>.
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-24970276862483495352011-01-27T14:11:00.001+00:002011-03-02T09:52:06.715+00:00Kik Messenger: One Feature Pack Away From Perfection<p>
I've found that I'm now splitting my time quite a bit between London (where I live) and New York City (where <a href="http://www.opengamma.com/">OpenGamma</a>'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.
</p>
<h4>In Which Americans Fear International Dialing</h4>
<p>
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 <i>properly</i> 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 <b>does</b> matter is that for a massively large cross-section of USAmerica, international phone numbers may as well simply not exist.
</p>
<p>
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.
</p>
<p>
So if you spend much time in the US, you need a US phone number. Which I now have.
</p>
<h4>In Which Mobile Carriers Shaft You</h4>
<p>
So let's consider all the ways in which mobile carriers will shaft you, the well meaning international traveller:
<ul>
<li>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.</li>
<li>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.</li>
<li>You'd like to receive a call on your phone while physically located abroad? That'd be an extortionate charge, thank you very much.</li>
<li>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.</li>
<li>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.</li>
</ul>
</p>
<p>
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).
</p>
<p>
There was just one problem: trying to corral all my SMS conversations.
</p>
<h4>Enter Kik</h4>
<p>
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.
</p>
<p>
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 <a href="http://www.kik.com/">Kik</a> a try.
</p>
<p>
Kik's a great service, in that it's Just Like SMS, with a few key advantages:
<ul>
<li>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.</li>
<li>You can see when they've been handed off to the recipient device, and when they've been read.</li>
<li>It uses your data allocation rather than SMS allocation, which in this world of millions of free messages a month isn't <b>that</b> useful, but when you're abroad and SMS-ing people all over the world, it matters.</li>
</ul>
</p>
<p>
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.
</p>
<p>
So I got excited, and convinced the majority of the people that I text the most to get Kik.
</p>
<h4>Aside: The Dataficiation of Primary Phone Functionality</h4>
<p>
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 <b>only</b> works with data, and doesn't have dedicated logic for phone calls and the like.
</p>
<h4>Kik Shows Its Limitations</h4>
<p>
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.
</p>
<p>
And then I actually try to use it in the manner I was intending. It doesn't work as I thought it would. <i>D'oh!</i>
</p>
<p>
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 <i>only</i> gets <b>new</b> messages. History? Nope.
</p>
<p>
Log back in on your iPhone? Your Android phone gets logged off, and you lose all the old messages you <i>already had</i> on your iPhone.
</p>
<p>
This is <b>not</b> 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).
</p>
<h4>The Ultimate Feature Enhancement</h4>
<p>
So let's get to the meat of this long-winded tale. What would make Kik <b>really</b> solve my instant-IM-on-a-phone conundrum? Better support for multiple devices.
</p>
<p>
What does that mean in practice?
<ul>
<li>I can log in from multiple devices simultaneously</li>
<li>When I log in from a new device, full history of conversations is downloaded</li>
<li>When a new message comes in, it's delivered to all logged-in devices (and the <i>message has been read</i> notification follows the first one on which I read it)</li>
<li>When I send a message on one device, the sent message gets delivered to all other devices.</li>
</ul>
</p>
<p>
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.
</p>
<p>
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.
</p>
<h4>Postscript</h4>
<p>
Turns out this problem has left many people I introduced to Kik leaving the platform. I <a href="http://getsatisfaction.com/kik/topics/synchronize_message_history_across_multiple_devices">raised it on the official Kik GetSatisfaction page</a>. Let's see if they respond.
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-67361179555514553902011-01-18T13:07:00.000+00:002011-01-18T13:07:45.880+00:00OpenGamma Series B Link Roundup<p>
In case you've not been glued to Twitter, you might have missed out on the news that <a href="http://www.opengamma.com/">OpenGamma</a> completed its second round (e.g. Series B) of funding late last month.
</p>
<p>
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.
</p>
<ul>
<li><a href="http://eu.techcrunch.com/2011/01/17/opengamma-secures-6-million-series-b-to-power-open-source-for-financial-markets/">TechCrunch Coverage.</a></li>
<li><a href="http://venturebeat.com/2011/01/17/opengamma-funding-series-b-6m/">VentureBeat Coverage.</a>
<ul>
<li><a href="http://www.opengamma.com/blog/2011/correcting-few-things-venturebeat-got-wrong"> my response to the misunderstandings in that piece</a> on the <a href="http://www.opengamma.com/blog/">OpenGamma Blog</a>.</li>
</ul>
</li>
<li><a href="http://www.opengamma.com/news/2011/opengamma-second-round">The joint press release between OpenGamma and FirstMark Capital</a></li>
<li><a href="http://www.lawrencelenihan.com/2011/01/18/why-firstmark-invested-in-opengamma/">Lawrence Lenihan's perspective</a> on why FirstMark Capital invested in <a href="http://www.opengamma.com/">OpenGamma</a>.</li>
<li><a href="http://www.opengamma.com/blog/2011/opengamma-completes-second-round-financing">My personal thoughts on the financing</a></li>
</ul>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-17239121159647541232011-01-17T14:08:00.000+00:002011-01-17T14:08:18.886+00:00Scala Considered Harmful For Large Projects?<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI-hNzJ4smrsnQ0PET8nniIZ2r4IDqw9wapKMRwMs7foaqKFuGy70KG4H6Jdo-eAExw1ExHZN91-hkGaEk_HyO9aISL57EBOey-z6YSWbqa8QQWpFhUn48C9ebNKmx32-4lhbO5n9yJssI/s1600/Screen+shot+2011-01-16+at+13.48.51.png" imageanchor="1" style="clear:right; float:right; margin-left:1em; margin-bottom:1em"><img border="0" height="164" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI-hNzJ4smrsnQ0PET8nniIZ2r4IDqw9wapKMRwMs7foaqKFuGy70KG4H6Jdo-eAExw1ExHZN91-hkGaEk_HyO9aISL57EBOey-z6YSWbqa8QQWpFhUn48C9ebNKmx32-4lhbO5n9yJssI/s400/Screen+shot+2011-01-16+at+13.48.51.png" /></a></div>
<p>
<a href="http://twitter.com/#!/kirkwy/statuses/24816632807297024">Original Tweet</a>
</p>
<p>
Last week, I was having an extended email conversation with Geir Magnusson Jr. (yep, <b>that</b> 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.
</p>
<p>
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.
</p>
<p>
What do I mean by a large-scale programming project? I mean one with the following characteristics:
<ul>
<li>It has a sufficient size that not every developer is potentially even familiar with every module.</li>
<li>It has distribution such that in a production use case, it is not a single monolithic process/binary.</li>
<li>It has enough people working on it that there is some type of specialization in terms of the teams and/or programmers.</li>
<li>It has flux in the developers (new people joining, people being replaced).</li>
<li>The same code base has been in constant development for a period of years, or is anticipated to be.</li>
</ul>
</p>
<p>
I've written about this in the past, where I referred to <a href="http://kirkwylie.blogspot.com/2010/08/i-want-new-programming-language.html">my desire for a Journeyman Programming Language</a>. For what it's worth, I'm 100% behind the <a href="http://www.jroller.com/scolebourne/entry/the_next_big_jvm_language1">Backwards Incompatible Java movement</a> spearheaded by one of <a href="http://www.opengamma.com/">OpenGamma</a>'s developers, <a href="http://jroller.com/scolebourne/">Stephen Colebourne</a>. 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.
</p>
<p>
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?
</p>
<p>
Two main reasons:
<ul>
<li>The inherent problems in a split-language project;</li>
<li>The sheer flexbility (by design) of the language;</li>
</ul>
</p>
<h4>Do You Really Want Two Programming Languages?</h4>
<p>
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.
</p>
<p>
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?
</p>
<p>
Once you've done that, you've started to add unnecessary complexity to the project:
<ul>
<li>Do you have to start hiring dual-language programmers, or spend time training them in the language they don't already know?</li>
<li>How well does the tool chain integrate? Are there key gaps or differences in operation?</li>
<li>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?</li>
<li>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?</li>
</ul>
</p>
<p>
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 <b>that</b> much benefit from Scala to include it at this stage? I doubt it.
</p>
<p>
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 <i>that much</i> out of Scala to warrant its introduction into an existing large programming project.
</p>
<h4>Language Flexibility Bad For Large-Scale Projects</h4>
<p>
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 <a href="http://www.scala-lang.org/node/1403">ability to write BASIC code inline in the language</a>, the ability to introduce <a href="http://en.wikipedia.org/wiki/APL_(programming_language)">APL</a>-like <a href="http://scalaz.googlecode.com/svn/continuous/latest/browse.sxr/scalaz/example/ExampleArrow.scala.html#13924">operator character insanity</a>, or the gratuitous abuse of the compiler that is <a href="http://matt.might.net/articles/c++-template-meta-programming-with-lambda-calculus/">turing-complete lambda calculus in the templating system</a>). These are, I 100% concur, <b>cool</b> features. It's very <i>very</i> cool to see someone doing something like the BASIC DSL.
</p>
<p>
The problem is that if you have a language designed to make it <i>easy</i> to do this, you encourage people to do it. And that's when problems start.
</p>
<p>
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:
<ul>
<li>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).</li>
<li>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).</li>
</ul>
</p>
<p>
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).
</p>
<p>
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 <i>instantly</i> 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.
</p>
<h4>Can Scala Work?</h4>
<p>
Although you may think I'm all about hatin' on Scala, the answer is actually <b>Yes</b>.
</p>
<p>
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.
</p>
<p>
But you have to have even <b>more</b> 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 <i><b>and</b> library ecosystem</i> you're going to use, use them in a consistent way, and never <i>ever</i> deviate.
</p>
<p>
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.
</p>
<p>
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.
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-59760813069051066422010-12-20T13:58:00.000+00:002010-12-20T13:58:47.099+00:00Can too good development infrastructure spoil you?<p>
At qCon San Francisco, Asish Kumar, head of development infrastructure at Google, gave a talk titled <a href="http://www.infoq.com/presentations/Development-at-Google">"Development at the Speed and Scale of Google"</a>. 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.
</p>
<p>
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 <a href="http://www.opengamma.com/">OpenGamma</a>'s systems administrator spends most of his time working on our development infrastructure.
</p>
<p>
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:
</p>
<ul>
<li>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.</li>
<li>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 <b>have</b> 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.</li>
</ul>
<p>
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.
</p>
<p>
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.
</p>
<p>
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?
</p>
<ul>
<li>Could you even setup a makefile/ant script/maven setup yourself anymore? How long would it take you to relearn it?</li>
<li>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.</li>
<li>Are you going to be perpetually frustrated in a role where you don't have a team working on your infrastructure for you?</li>
<li>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?</li>
</ul>
<p>
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.
</p>
<p>
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.
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-29537561976121217452010-11-02T15:38:00.000+00:002010-11-02T15:38:14.394+00:00Another OpenGamma OpenHouse on 17 November 2010<p>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 <a href="http://www.opengamma.com/blog/2010/opengamma-openhouse-17-november-2010">OpenGamma to throw open its doors.</a></p>
<p>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?</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-88619812930377314122010-10-18T13:55:00.000+01:002010-10-18T13:55:52.380+01:00I'm Hosting The Financial Track at qCon London 2011<p>
As astute and long-term readers would no doubt be aware, I presented on <a href="http://kirkwylie.blogspot.com/2009/09/my-qcon-london-2009-presentation.html">RESTful Approaches to Financial Systems Integration</a> at <a href="http://kirkwylie.blogspot.com/2009/03/qcon-restores-my-faith-in-tech.html">qCon London 2009</a> 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, <a href="http://kirkwylie.blogspot.com/2010/03/qcon-london-2010.html">there was no Financial Technology track</a>.
</p>
<p>
Well, the masses have spoken. <a href="http://qconlondon.com/">qCon London 2011</a> will have a Financial Technology track.
</p>
<p>
Even more humbling for me, I've been recommended as the host of the track, and I've accepted. <b>I will be the <i>Finance War Stories</i> track host for qCon 2011.</b>
</p>
<p>
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.
</p>
<p>
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.
</p>
<p>
If you're interested in giving a talk, please feel free to contact me: <code>kirk at opengamma dot com</code> 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.
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-82485106494682333412010-09-21T17:26:00.000+01:002010-09-21T17:26:59.760+01:00Back in New York City Next Week<p>
Yes, it's only been <a href="http://kirkwylie.blogspot.com/2010/07/want-to-meet-me-in-new-york.html">a month</a> since I was last in the city so nice they named it twice, but I'm coming back again.
</p>
<p>
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.
</p>
<p>
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:
</p>
<ul>
<li><a href="http://www.opengamma.com/">OpenGamma</a>, in particular if you're thinking of using it</li>
<li><a href="http://www.fudgemsg.org/">Fudge Messaging</a>, in particular all the bits that we've done that aren't well documented yet</li>
<li>Startups, funding, or what a giant jerk I am on the internet (and in real life)</li>
</ul>
<p>
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!
</p>
<p>
<code>kirk at kirkwylie dot com</code> or <code>kirk at opengamma dot com</code>. You know what to do.
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-38158044164669029862010-09-13T12:08:00.000+01:002010-09-13T12:08:07.398+01:00Cartoon Characters Discuss Web-Scale Asynchronous Communications<p>
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!
</p>
<object width="480" height="390"><param name="movie" value="http://www.xtranormal.com/site_media/players/jwplayer.swf"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="flashvars"value="height=390&width=480&file=http://newvideos.xtranormal.com/web_final_lo/7a7f7d3e-bf18-11df-bff4-003048d6740d_7_web_final_lo_web_finallo-flv.flv&image=http://newvideos.xtranormal.com/web_final_lo/7a7f7d3e-bf18-11df-bff4-003048d6740d_7_web_final_lo_poster.jpg&link=http://www.xtranormal.com/watch/7129683&searchbar=false&autostart=false"/><embed src="http://www.xtranormal.com/site_media/players/jwplayer.swf" width="480" height="390" allowscriptaccess="always" allowfullscreen="true" flashvars="height=390&width=480&file=http://newvideos.xtranormal.com/web_final_lo/7a7f7d3e-bf18-11df-bff4-003048d6740d_7_web_final_lo_web_finallo-flv.flv&image=http://newvideos.xtranormal.com/web_final_lo/7a7f7d3e-bf18-11df-bff4-003048d6740d_7_web_final_lo_poster.jpg&link=http://www.xtranormal.com/watch/7129683&searchbar=false&autostart=false"></embed></object><object width="480" height="390"><param name="movie" value="http://www.xtranormal.com/site_media/players/embedded-xnl-stats.swf"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.xtranormal.com/site_media/players/embedded-xnl-stats.swf" width="1" height="1" allowscriptaccess="always"></embed></object>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-57563245539505416932010-09-09T13:00:00.000+01:002010-09-09T13:00:40.726+01:00Slow Clap for Item Moves in Basecamp<p>
I follow <a href="http://37signals.com/svn/">SvN</a>. 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.
</p>
<p>
Yesterday the Basecamp team decided to <a href="http://37signals.com/svn/posts/2560-well-that-was-easy">pat themselves on the back</a> for allowing movement of items in between projects.
</p>
<p>
I look at the list of <i>super-duper extra hard stuff</i> that's going on, and I see one of two cases that could possibly be true:
<ul>
<li>They've sharded their databases to the point that even trivial operations require superhuman effort. Well-done in that case.</li>
<li>They've designed their database schema in the most completely insane way ever.</li>
</ul>
</p>
<p>
My suspicions? A little of column A, a little of column B.
</p>
<p>
Love this gem:
<blockquote>
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.
</blockquote>
</p>
<p>
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?
</p>
<p>
Here's the lessons I think everybody should learn from this:
<ul>
<li>Sharding MySQL or another low-end relational database isn't a panacea, no matter how much it contributes to the web-scale secret sauce.</li>
<li>If you <i>are</i> sharding/partitioning data, you should probably think long and hard <b>in advance</b> about how that's going to impact movements <i>across</i> shards. <b>Because they <i>ALWAYS</i> end up happening.</b></li>
</ul>
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-39808485249150961332010-08-25T14:51:00.001+01:002010-08-25T15:27:23.398+01:00Java Initialization Barrier Pattern With AtomicBoolean<p>
I've found myself starting to use this little mini-pattern. You might find it useful.
</p>
<pre>
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.
}
</pre>
<p>
Much simpler than any of the other mutual exclusion patterns that I've found myself using.
</p>
<p>
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 <b>before</b> the initialization is done (if another thread is currently doing the initialization). Therefore, this pattern <i>isn't</i> suitable where the caller has to <i>guarantee</i> that the initialization is done before continuing in a multi-threaded environment.
</p>
<p>
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 <code>initializeIfYouHaventBeenButDoNothingOtherwise</code> problem.
</p>
<p>
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.
</p>
<p>
<b>UPDATE 2010-08-25</b> : <i>I changed the name of the control AtomicBoolean to make it clearer that this is a multiple-execution-over-time pattern, and <b>not</b> a general purpose synchronization barrier.</i>
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-46446532012497700532010-08-18T02:47:00.000+01:002010-08-18T02:47:48.599+01:00Code in an expert programming language<p>
Provided for your pleasure, anonymously, from an Expert Programming Language. Scala fans, you're about 2 steps removed from this.
</p>
<pre>
redacted: {[str]
map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
pad: #str _ss "="
var1: 2 _vs/: map?/:str@&64>map?/:str
var1[-1+#var1]: 6#(*|var1),6#0
var1: ,/(-6#/:(6#0),/:var1),(pad*6)#0
: _ci 2 _sv/: -1 8#((#var1) - pad * 8)#var1
}
</pre>
<p>
Bonus prizes if:
<ul>
<li>You can recognize the hideous abomination of a language</li>
<li>You can figure out the common algorithm it's doing. <i>Hint: What should <code>redacted</code> be named?</i></li>
</ul>
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-40922258718188837092010-08-17T15:56:00.000+01:002010-08-17T15:56:35.767+01:00I Want A New Programming Language<p>
<b>Preface:</b> <i>This has nothing to do with the Oracle/Google Java lawsuit.</i> Read <a href="http://kirkwylie.blogspot.com/2010/08/oraclegoogle-javaandroid-suit-and.html">this</a> first.
</p>
<p>Dear Lazyweb and Programming Language Inventors:
</p>
<p>
I want a new programming language. Although I seldom code these days for <a href="http://www.opengamma.com/">OpenGamma</a>, I've wanted a new programming language for quite some time. I don't want an extreme language (in syntax or constraints); I don't want a purely experimental language; I don't want a faddish language. What I want is what <a href="http://www.jroller.com/scolebourne/">Stephen Colebourne</a> coins a "journeyman language."
</p>
<h4>What Is A Journeyman Language</h4>
<p>
Quite simply, a journeyman language is a programming language designed for journeyman programmers. And those guys are the hundreds of thousands of men and women working on business applications and systems programming every day.
</p>
<p>
Although there is wide variation in the quality of journeyman programmers, in general, very few of them are in the infamous Top 10% Of All Programmers level. But that's actually okay, and self selecting: the rockstar programmers simply wouldn't do the jobs that the journeyman programmer has to do every day; the job is too boring and lacks enough challenge and intellectual satisfaction/achievement. I have familiarity with firms in the financial services space who explicitly don't even interview high achievers because the employer knows the employee would hate the job and leave.
</p>
<p>
So what does a Journeyman Programming Language need? It needs to have a few general characteristics:
</p>
<ul>
<li>It has to be simple enough in syntax and conceptual framework that people not in the top 10% of the profession can feel comfortable working with it.</li>
<li>It has to be flexible enough to cover the amount of back-end, rich GUI, web app, and systems programming that goes on in the industry.</li>
<li>It has to make simple, common programming errors (memory allocation, array bounds, etc.) difficult or impossible.</li>
<li>It has to make it easy for Journeyman Programmers to change projects or jobs on a regular basis.</li>
</ul>
<p>
But it's a mistake to think that a completely dumbed down language can appeal and make a lasting impact in this space. Journeyman Programmers aren't idiots or morons: they often are just as <i>good</i> as rockstars, just not as <i>passionate</i>. That means that they're not investigating programming language features and Open Source libraries in their spare time, they're not going to meetups and blogging and tweeting and everything else. Raw talent often, passion seldom.
</p>
<p>
The other reason it's a mistake to dumb down the Journeyman Programming Language is that in any sufficiently large firm or project, there is often at least one rockstar programmer. And he needs to be comfortable with the tools that he uses to set the architecture and framework for other developers. Give him BASIC and he'll recoil in horror.
</p>
<p>
So here's my test: if you could write a reasonably high performance RDBMS system in the language, it has enough features. If you couldn't, it's not good enough. I like this particular test because I've done it several times, and also because there are a bunch of fiddly things having to do with getting primitives in and out of large byte blocks in space that languages like Java are particularly terrible at for no good reason that I can see (which is why <a href="http://www.luciddb.org/">LucidDB</a> does query compilation in Java and execution in C++). RDBMS' involve everything you need: functions in the scalar expression system; objects in the query validator, compiler, and optimizer; efficient memory work in the executor. You do all of those in a simple language and system, and you've got my vote.
</p>
<h4>Positive Features</h4>
<p>
These are all characteristics that New Programming Language should have.
</p>
<dl>
<dt>C-Style Syntax</dt>
<dd>Like many developers, I was born and raised on C lineage programming languages: C, C++, Java, C#. I've dabbled in many other programming languages (Pascal, Perl, Python, Scheme, Assembler), but nothing to me has the simplicity of syntactical expression that the C lineage of languages has. Let's keep that.</dd>
<dt>Garbage Collection</dt>
<dd>Getting rid of forcing memory allocation duties on the developer has been probably the single greatest boon to getting more people writing better quality code than anything else that has come out of programming language and environment development in the last 40 years.</dd>
<dt>Unambiguous Syntax</dt>
<dd>This is both a feature and an anti-feature. I want the language to be unambiguous, so that I can look at a chunk of code and, with experience with the language, know what it does. That means that any type of DSL services need to be confined to creating DSLs for <i>other files</i>, not intermingling DSL syntax with New Programming Language syntax.</dd>
<dt>Objects and Functions</dt>
<dd>I want an object oriented language, but one which recognizes that I will often have things that are better expressed with functional blocks. The Java approach of hanging static methods on a <code>final</code> class with a <code>private</code> constructor and <code>import static</code> is ridiculous and everybody knows it.</dd>
<dt>Closures</dt>
<dd>I want closures with my functions. With a nice syntax. That doesn't look like line noise. I won't want to use them for everything, but I want them to be present.</dd>
<dt>Useful Concurrency System</dt>
<dd>I want a number of low-level concurrency systems, as well as convenience operations for actor-style concurrency.</dd>
<dt>Object Immutability Services</dt>
<dd>I want some facility to mark that an object instance, or a particular call on it, will not and can not mutate the state. In other words, I want a <code>const</code> style system that actually works. Doesn't have to replicate the exact nature of the <code>const</code> keyword in C++, but just give me something that will lock down an object instance and thus allow it to be shared in a thread-safe environment without limiting me to constructor-only value injection.</dd>
<dt>Properties</dt>
<dd>I want C#-style properties. And I want a serialization system that allows me to cleanly map transport-representation objects to hierarchical data representations like Avro and <a href="http://www.fudgemsg.org/">FudgeMsg</a> and JSON and XML (and will bork if I create a DAG or cyclical graph rather than a tree). Not all objects of course, but just ones that I'm going to use for transport. And I want the ability to do fast metadata-style operations on properties (think: <code>for (Property prop : anyObject) { doStuff(prop.getName(), prop.getValue()); }</code>). The way JSON flows for free out of JavaScript is an excellent example. Encapsulation? Pshaw. Journeyman apps are about <i>data</i> as much as <i>objects</i>, and everybody bloody well knows it at this point.</dd>
<dt>Real Generics</dt>
<dd>I want Real Generics. With runtime type information. That allow partial specialization.</dd>
<dt>VM Operation</dt>
<dd>It better run cleanly on any major OS and hardware combination. And having a VM gives me a lot of runtime management facilities for back-end processes built in (think jconsole or jvisualvm for the JVM). In particular, I'd probably like the JVM if you can shoehorn much of this into the JVM. If not, <b>please</b> look into making the bytecodes register-based like LLVM (even if the binary bytecode format ends up having both stack and register implementations potentially).</dd>
<dt>Stack Allocation/Memory Packing</dt>
<dd>If I really know the lifecycle of an object, and I want to bunch several similar objects together to exploit cache line efficiency, don't get in my way. Don't make it the default, but support it.</dd>
<dt>Fast Compilation and Runtime Linking</dt>
<dd>In my mind, these are one and the same thing, because each requires and mutually enables the other. The programming language needs to be able to support compile-on-save functionality (a la Eclipse) and complete runtime linkage (i.e. classloading/modules/whatever). These are massive productivity wins for a journeyman programming language.</dd>
<dt>Convenient Native Code Integration</dt>
<dd>While the core of the language should be based on bytecodes, sometimes for performance I really want/need to be able to go down to low-level coding in C. Please make that easy (JNI, for example, is horrific). Even better, if I could mark something as "this is in New Programming Language, but if there are native versions of this method/function about, use those instead" that would solve much of the JNI-style problems.</dd>
<dt>Modules</dt>
<dd>I like OSGi. I would actually <b>use</b> something like OSGi if it wasn't, well, OSGi. It would have to be baked into the language and compiler stack to be useful.</dd>
<dt>Partial Classes</dt>
<dd>I personally love this for combining code generation with hand-written code; C# nailed it again. And Journeyman projects tend to have a lot of places that code generation can/does assist with, particularly given the amount of XML and RDBMS and rich GUI work that goes on in large organizations.</dd>
<dt>Traits/Shared Code Blocks</dt>
<dd>A great feature to have a block of code that I can mix in without all the standard multiple inheritance issues coming in. At compile time, of course.</dd>
<dt>Random Stuff</dt>
<dd>While I'm at it, a bunch of random stuff I'd like.
<ul>
<li>Duck Typing</li>
<li><code>switch</code> on anything. Strings, integers, enums, whatever.</li>
<li>Fixed precision decimals as a first-class type.</li>
<li>Static typing, with <code>var</code> lvalue determination.</li>
<li>Matching between module/type/class/whatever name and file name, to aid in automatic refactorings.</li>
<li>A good standard library, like the Python one, that gives me both an least common denominator and greatest specific feature ability to access the OS' services.</li>
</ul>
</dd>
</dl>
<h4>Negative/Indifferent Features</h4>
<p>
These are all features that I don't care about, or actively want not in the language.
</p>
<dl>
<dt>Reuse of existing libraries</dt>
<dd>If you're targeting an existing VM like the JVM, I really don't care if I can use all the same libraries. Would be nice, but not really necessary. The only ones I'd care about are all integration systems and libraries like JDBC drivers to be honest.</dd>
<dt>Operator Overloading/Invention</dt>
<dd>Remember what I said about understandable code? Don't make it easy/possible to create a horrific mess of a language that looks like APL. The only time you ever want operator overloading for the right reasons is for the <code>[]</code> characters. Gosling was right on this one.</dd>
<dt>Monads</dt>
<dd>Gack. Yes, I'm very impressed that you found a way to have side effects in your pure functional programming language. No, it's not actually that useful in practice. Imperative programming languages can easily incorporate functional language features, and should do, without incorporating all the baggage that made your Functional Languages Professor at school giggle with delight.</dd>
<dt>Obsessive Terseness</dt>
<dd>Verbosity, when applied correctly, makes unfamiliar code easy to understand by someone who wasn't the author. An obsession with achieving the tersest possible language, or smallest possible number of syntactic features, makes code harder to understand. Remember, I'm talking about journeymen programmers here.</dd>
<dt>Pointers</dt>
<dd>No, the language can't expose a bloody pointer. There are only a few valid uses for them these days, and I'd hope that they're handled through other facilities. If you <b>really really <i>REALLY</i></b> need one, just drop down to C and thrash with the system to your heart's content.</dd>
<dt>Abuse of your compiler</dt>
<dd>No lambda calculus in the generics system, please. No template metaprogramming, no hiding everything behind private typedefs, let's keep it simple.</dd>
<dt>Faddish Language Features</dt>
<dd>XML in my programming language? Yeah, in 20 years that'll totally seem relevant. Keep it in the libraries, thank you very much. Same thing with HTML, CSS, whatever.</dd>
<dt>Checked Exceptions</dt>
<dd>File this one under Seemed Like A Good Idea At The Time.</dd>
<dt>Throw Your Mom</dt>
<dd>Very clever that C++ allows you to throw anything. Null? A string? Your mom? No, thank you. I'll limit it to proper exceptions, thank you very much.</dd>
</dl>
<h4>Why I Don't Have It</h4>
<p>
So why don't I have this language yet? Well, partially because programming language craftsmanship is hard. I'm pretty sure I'm not good enough to do it, which is usually my default criteria for saying something is Really Hard.
</p>
<p>
But I think as well the k3wl languages coming out are coming out of language requirements of the Top 10% crowd. They're the ones good enough to actually write the languages, and they're going to write a language that makes them happy. But then you end up with Scala, and then you end up with <a href="http://scalaz.googlecode.com/svn/continuous/latest/browse.sxr/scalaz/example/ExampleArrow.scala.html#13924">this monstrosity</a>, and then you make me cry. A language in which that thing is even possible will <b>never</b> be a candidate as a Journeyman Programming Language.
</p>
<p>
You know who's going to do it? Someone like Gosling, who set about with the needs of the journeyman programmer in Java. But the state of the art has moved on, and Java just isn't suitable anymore.
</p>
<p>
Who I would <b>really</b> like to do it is <a href="http://en.wikipedia.org/wiki/Anders_Hejlsberg">Anders Hejlsberg</a>. I am a <b>very</b> big fan of C#-the-Language. It's just that .Net-the-Ecosystem is so Microsoft-specific and horrific it'll never catch on in the wider world, no matter what <a href="http://tirania.org/blog/">Miguel de Icaza</a> thinks.
</p>
<p>
So how's about this:
</p>
<ol>
<li>IBM, please hire Anders Hejlsberg away from Microsoft. You know the Oracle/Google suit is scaring the crap out of you right now given how much you've invested in Java. It's not the suit itself, but the sign that Oracle, a major competitor to you, is going to leverage whatever muscle it can around Java against you eventually.</li>
<li>IBM, please let Anders build this, which I'll call C-Prime, with smart people from the Java and LLVM communities, who all have a lot to add here.</li>
<li>Open Source friendly licensing abounds, and the runtime works on a whole lot of interesting platforms. And if you want to pull a Larry and not support the Solaris port yourself, we'd all <i>totally</i> understand. You support Linux, Windows, and Mac, and 99% of developers are happy.</li>
<li>Developers rejoice as they have the New Programming Language.</li>
<li>Kirk is happy.</li>
</ol>
<p>
Oh, yeah, and Microsoft? If you could have broken the near pathological obsession with platform lock-in that surrounds all your interesting technology you had a really good shot with the CLR. C# could have been a contender. But at this point, your organization is so broken internally, and your reputation with the types of journeymen who work at large organizations is so tainted, that nothing you produce will get traction. Which is why I want Anders to leave you.
</p>
<p>
A little revolution every now and then isn't a bad thing. And at this point, I think it's time. Java-the-language will never advance in a standard way going forward; the collapse of the JSR has seen to that. We as a community who has worked on Java needs to move forward and onto the next language designed for the types of people who currently code in Java.
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-13563812580426201492010-08-17T03:22:00.000+01:002010-08-17T03:22:51.392+01:00The Oracle/Google Java/Android suit and a forthcoming blog post<p>
For those of you who aren't aware, I don't just spit out blog posts stream-of-consciousness. I mean, it might seem that way based on my terrible writing style, but <i>I actually work at this stuff</i>.
</p>
<p>
Many of you will know that I'm a long-time Java developer. I've professionally done a lot of other stuff, but the vast majority of my experience has been in Java. I like the ecosystem, the toolchains, the JVM; I find it a productive environment, and <a href="http://www.opengamma.com/">OpenGamma</a>'s software is predominantly written in Java.
</p>
<p>
There's a blog post that I've been working on mentally for months, and in text form for about 2 weeks. I'm planning on publishing it tomorrow. It has <b><i>nothing</i> to do with the ORCL/GOOG suit.</b> Nothing at all. I've felt the things in the post for ages, well before Sun imploded, well before Oracle bought them.
</p>
<p>
For various reasons, I'm not going to say what I think about the suit itself. If you want to know, read <a href="http://blog.headius.com/2010/08/my-thoughts-on-oracle-v-google.html">Charles Nutter's analysis of the suit.</a> Also read <a href="http://www.jroller.com/scolebourne/entry/power_corrupts_absolute_power_corrupts">Stephen Colebourne's analysis.</a> Both of these <i>will make you smarter</i>. Me? I have nothing to add.
</p>
<p>
When my post comes out, though, I wanted a vehicle to point all this out and a simple link in case people thought I was talking about the ORCL/GOOG situation. It's messy and complicated and wrapped in ego and profit and law and policy, and Charles and Stephen put the points across better than I could.
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-37010917143807070622010-07-30T12:11:00.001+01:002010-07-30T12:32:49.444+01:00Perpetual Motion Machine Due Diligence Documentation<p>
I'm not a VC, and nor do I play one on TV. Nor do I even pretend on the internet.
</p>
<p>
However, I've been backed by enough of them (or just had meaningful conversations which didn't lead to funding decisions) to be part of the network of people brought in to do initial due diligence on technology-heavy startups. And I'm getting increasingly annoyed by what I call the <i>Perpetual Motion Machine Due Diligence Document</i>.
</p>
<h4>How Unseasoned Entrepreneurs View Funders</h4>
<p>
Let's start with a simple premise: <i>you're seeking funding for a technology-heavy startup</i>. This doesn't apply to a company which has already launched (and thus should have technical credibility already established), and it doesn't apply to consumer-focused startups (where the technology better not be part of the pitch anyway).
</p>
<p>
You're doing something <i>Really Hard</i>. Often, you're doing something that's against conventional wisdom, to the point where many people in the market might not even attempt it. That's great! That's the type of technology-heavy startup that a lot of VCs might like to back.
</p>
<p>
But first you have to get past investors. These investors may have come from a technology background, but these days they work in senior management (if they're angels), or are retired, or are VCs and don't play with much outside of Outlook and the iPads. You've given them your slide pitch, and now they've asked for additional documentation on your Really Hard Technology. You know they won't understand it (it's Really Hard! It's against conventional wisdom! Paradigm Shift!), so what do you do?
</p>
<p>
Easy! You just dumb it down to the most outrageous claims that you possibly can. "Faster-than-light travel impossible? Those guys don't know what <b>we</b> know!" "Infinite compression impossible? We found a way to eliminate data entropy!" "Free energy! Fucking magnets, <i>we know how they work</i>!" The Perpetual Motion Machine Due Diligence Document thus emerges.
</p>
<h4>What Actually Happens</h4>
<p>
The naive entrepreneur assumes that his document is going to be read by the investors, and has to be strong enough in its claims to justify an investment, but simple enough to be understood by a general audience. So every one of these documents seems to follow a general pattern:
</p>
<ul>
<li>This commonly accepted wisdom/theorem is actually wrong.</li>
<li>We're the only ones who have figured that out.</li>
<li>Our technology thus solves all problems to all people.</li>
</ul>
<p>
Here's the problem: <b>The Technical Due Diligence Document Is Never Read By The Investor</b>.
</p>
<p>
Savvy investors <i>know</i> they're out of the state of the art (if they ever were; most skilled VCs were operators more than just raw techies). They <i>know</i> they don't have the background to determine whether your Really Hard Technology is actually good or doable.
</p>
<p>
So what they do is get a technical due diligence document from the founder, find someone in their network who <i>is</i> skilled with the state-of-the-art in that area, and send them the document for review.
</p>
<p>
And that's how the document that was only ever going to be read by an investor ends up in <i>my</i> email inbox.
</p>
<h4>Over-Inflated Claims Destroy Credibility</h4>
<p>
So now I'm reviewing a document which appears to be written to target a child, and is so laughable in its claims that it amounts to promising perpetual motion. What do I do?
</p>
<p>
If you think "Even if that's the case, surely the technical reviewer is going to be so blowed away that he'll seek out clarification directly from me, the entrepreneur" you fail at a technical startup. Why would I expose myself to the entrepreneur? What do <i>I</i> get out of that? Nothing good can possibly come of that.
</p>
<ul>
<li>VC/Angel passes on investing. Entrepreneur blames it on me and smears me in the industry. Whether the entrepreneur ultimately succeeds or fails makes no difference: no upside to me.</li>
<li>Entrepreneur turns into a complete time waster. I have a limited amount of time that I can devote to doing due diligence, and VCs are aware of that. If they want me to do direct face-to-face due diligence, <i>they'll ask me specifically to do that.</i></li>
<li>Link between investor and me gets exposed. Many times both sides don't necessarily want that exposed to the world, particularly if it's a speculative investment possibility.</li>
</ul>
<p>
So what I do is send an email or have a 15-minute phone call explaining that the claims are completely overblown, the document has no technical detail, and there's a very low chance that their claims are actually going to stand up in production.
</p>
<p>
My word isn't the kiss of death, far from it. A good investor will collect initial opinions from several people he trusts, and determine whether to go farther. If they do, they'll ask for a smaller set of people to do in-person deep-dive due diligence, and use that to further the decision-making process.
</p>
<p>
But here's the thing: if I'm asked to be one of those people, if I had to say "the initial document is completely overblown in its claims and I doubt it's possible" in the initial review, I almost always decline to be part of the deep-dive due diligence process. <i>Because I no longer trust anything the entrepreneur is going to say.</i>
</p>
<p>
It's even worse if you're doing the rounds, and I get asked my opinion (by a potential customer, partner, or another investor) having seen that Perpetual Motion Machine Due Diligence Document. I <i>instantly</i> respond that I think it's probably snake-oil and the potential customer/partner/investor should stay away. When <i>they</i> ask me to do another review, again, I decline. I don't have time to do a gratis technology review for someone where I've already lost all trust in the entrepreneur and his claims.
</p>
<h4>Don't Be That Guy</h4>
<p>
It's very simple to avoid this.
</p>
<ul>
<li>Write your technical due diligence documents assuming several experts in your field are going to review it, and the investor is never even going to open the PDF file.</li>
<li>The more outrageous your claims, the less believable you're going to appear.</li>
<li>Don't assume a clever engineering workaround, providing a practical solution to a theoretic problem that's good-enough for most use cases, is a bad thing. It's not. <b>It's been the foundation of numerous successful technology ventures.</b></li>
<li>Make me, as a reviewer, <i>want</i> to find out more, either out of personal interest, or as a potential customer or partner of yours.</li>
</ul>
<p>
But don't <i>ever</i> make me feel like I've just been handed Yet Another Perpetual Motion Due Diligence Document.
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.comtag:blogger.com,1999:blog-7952253383023403362.post-48851089069617208932010-07-29T15:15:00.000+01:002010-07-29T15:15:54.516+01:00Want to meet me in New York?<p>
While I used to travel to New York City on a regular basis when I was working directly in the financial services industry, since <a href="http://www.opengamma.com/">OpenGamma</a> got going I've been doing as little travel as I could get away with. What that's meant in practice is no work trips in a year and a half, and only a few holiday trips as well. Furthermore, when I used to go on business trips, almost all of my time was spent in our local offices, and I didn't really get a chance to meet and greet.
</p>
<p>
However, that's changing now. I'm going to be in New York City from the 12th through the 18th of August. Yes, I know how hot it is there. Yes, I know it's going to be miserable. Yes, like the locals, I too am hoping that the heat wave will pass. But I've got a few meetings I have to take, so going I am.
</p>
<p>
If you'd like to meet up for any of the following:
</p>
<ul>
<li>To learn more about OpenGamma (note: I'll even be packing some demo-ware and the source code if you're that keen to see what we're doing)</li>
<li>To geek out about databases (of the relational and non-relational type), MOM, Java, data encodings, Atlassian products, or anything else I blog about when I'm not shamelessly promoting myself or my company</li>
<li>To chat about startups, London, the tech scene here, or general expat stuff</li>
<li>To publicly berate me about one of the many controversial and offensive statements I've made on my blog or Twitter feed</li>
<li>To drink (coffee or alcohol) with someone you wouldn't usually drink with</li>
<li>To offer me a desk to work at when I'm not otherwise engaged (hint hint)</li>
</ul>
<p>
Just hit me up. Comments down below here, <code>kirk at kirkwylie dot com</code> if it's not about OpenGamma, <code>kirk at opengamma dot com</code> if it is!
</p>Kirk Wyliehttp://www.blogger.com/profile/18076794607743558380noreply@blogger.com