Platypus Header

Platypus Innovation Blog

1 September 2015

AI Haiku - survey

This Haiku was written by a computer (programmed by my MSc student Aji Alhalm). Topic: sadness

all hearts desire,in the imagination..in my frustration


More AI Haiku (and some rating questions)

Encountering #feminism on Twitter: A Methodology Story

This is from my work (and Alex and Jenni's) with Viv Cree and Steve Kirkwood at Edinburgh University analysing #feminism on Twitter: notes on how we worked together. Here are the Talk Slides

16 July 2015

Care

An idea for a play of pure blackness came to me this morning. Taking a leaf from the great Borges and being short on time, I will write the synopsis rather than the thing. But unlike Borges, I will also dispense with the beauty and poetry of the writing.

The perfectly normal remnant of a family: A father lives with his one of his grown up daughters. The setting is modern America. The family are normal; everyone works, everyone has it hard. Father is diagnosed with a disease -- painful, deadly, but curable. But the cure is expensive, and his health insurance, which is not very good, will not cover it. The father is a gruff quiet fellow, a man of stoical dignity. He asks for nothing. There is a second daughter, and she is called in to help. Of course she comes as quick as she can, and wants to help. But she is reluctant to part with her savings -- the product of years of toil, carefully set-aside so she can buy a house.

The family look for other ways out. The tension grows between the two sisters. But it is the father who cracks. A gut-wrenching scene follows, where the father breaks down and begs for his life from his daughter.

This horror is the heart of the play. What happens next is inevitably bad: The daughter gives in and says yes. But the next morning her sibling finds she has gone. Unwilling to make this sacrifice, but unable to face her family, she packed and fled. The remaining daughter hides this betrayal from her father. She chooses the sacrifice, giving not only her own savings, but now also needing to take on a crippling loan. She buys the expensive medicine, a few bottles of pills, small yet precious.

While she is out on these life-changing errands, father is home reflecting. Appalled by what he has asked of his children, he commits suicide. The daughter returns home to find him dead, an empty bottle of pills by his side.

Curtain.

The ending is overly melodramatic; there is no need for the suicide. This is a kindness to the audience, to spare them the black bile of realism and instead give the full blood and catharsis of Tragedy.

The moral of course is that there is a better way: the community should provide free healthcare, making fair decisions about what can be provided. For a UK audience, this moral would be obvious, as would be the follow-on of: protect the NHS and the Welfare State, it's a good thing.

16 June 2015

Eclipse 4 vs IntelliJ 13 -- Which is the best Java IDE?

Which is better for Java development - Eclipse or IntelliJ?

Having worked with both, I think there is no clear winner.

IntelliJ scores big on:
 - UI speed: I think Eclipse's auto-complete is a bit more powerful, but IntelliJ's is faster.
 - Stability: About once every few months, Eclipse gets into a broken state best fixed by re-installing it.
 - Finding features: IntelliJ has a command-finder, much like the one in Sublime Text. Hit Control+Shift+A then type a keyword, and it lists the related commands. This is great for discovering features.
 - A more natural relationship with the file-system (although still a bit peculiar).

Eclipse wins on:
 - The compiler: IntelliJ demands that all files compile without error. That sounds reasonable, but it's actually a nuisance in team-work projects. Someone else's error in a different part of the code can block your work.
 - Git / source-control integration: The Eclipse integration is easy to use, and the diff compare-with tool is brilliant.
 - The debugger: they're both very good, but Eclipse's debugger wins. It has easier breakpointing, better inspection tools, and brilliant support for editing code whilst it's running.
 - The refactoring support.

In many places it's a matter of personal taste. For example, IntelliJ's layout is more compact. Eclipse has dynamic switching between layouts ("perspectives"), with stable views in a layout; whilst IntelliJ has one layout with dynamic pop-up views. etc. etc.

If you're familiar with one -- I would stick with the devil you know.

14 January 2015

JVM settings when using Jetty via Gradle & Gretty

We're using Gradle, Jetty, and Gretty in a project. We'd like to use asserts and a native library... How do you pass in settings to your JVM?

You can do this in the file build.gradle, within the gretty block, using jvmArgs (which takes a list of strings), like this:

// Gretty
buildscript {  
    dependencies {
        classpath 'org.akhikhl.gretty:gretty:1.1.3'
    }
}

 
apply plugin: 'war'
apply plugin: 'org.akhikhl.gretty'

gretty {
    // supported values:
    // 'jetty7', 'jetty8', 'jetty9', 'tomcat7', 'tomcat8'
    servletContainer = 'jetty8'
    jvmArgs = ['-ea']

}

And that's enableAssertions set to true.


1 January 2015

Not antisemitic only anti-Zionist?



If you're in doubt about whether antisemitism exists in Britain, read the Facebook page Everyday Antisemitism.

The Guardian's had some good articles recently on antisemitism in the UK, especially within the left-wing. The comments section (never read the comments) shows that the problem is real, and also that some people don't recognise offensive and antisemitic comments. So here is the EU's working draft definition of antisemitism.

There's obviously anti-semitic stuff, and then there's a grey area around Israel and Zionism, and this document has a reasonable go at delineating that. Summary: Criticism of Israel similar to that levelled against any other country cannot be regarded as antisemitic, but anti-Israel comments can be antisemitic.

Some people seem to feel that any anti-Israeli statement is fine as long as it doesn't use the word "Jew". That's problematic. Of course Israel can be criticised for e.g. its poor human rights record. But also it is possible to be racist about Israel and Israelis. To debate whether such comments are technically antisemitic or merely racist-towards-a-nation seems besides the point.

On the recent Labour Party problems, some on the left have tried to dismiss the issue, arguing that it is being used to unfairly attack Corbyn -- whilst Zac Goldsmith and the Tory Party can get away with running a really racist anti-Muslim campaign. I think this is true, but dismissing the issue is wrong. The problem of antisemitism is real, and should be addressed.

My own experience is I'm happy to say I rarely encounter antisemitism, but I have encountered it, and in leftwing groups (although there's a sampling bias there, as I rarely hang out with UKIPpers).

Note: This post was backdated from May 2016, because that is the way to set front-page ordering on this blog.

13 October 2014

Broken by default: Java 8 is not quite backwards compatible

Java 8 introduces several nice features, one of which is the default keyword. This is close to having mix-ins (aka traits; inheriting code from multiple parents) which is great. It also lets you add new methods to an old interface without breaking existing implementations. Or that's what it's meant to do.

But Oracle have broken backwards compatibility.

It is an error for a class to inherit a default method from two parents. If that happens, then the class must override the default method to specify what happens.

But if the default method involves a Java 8 class, then implementing it will break your code for Java 7.

I encountered this because we have a class which implements both List and Set. It's now impossible to do that if your code has to work across Java 7 and 8. To work in Java 8, it has to implement spititerator(), but that will break Java 7 which knows nothing of the Splititerator class.

Good-Loop Unit