Archive for the ‘Uncategorized’ Category

How to react to conference criticism

March 6, 2014

During RubyKaigi 2013, Peter Evjan criticised the audience of a talk for applauding a sexist talk slide. You can read what he wrote at RubyKaigi 2013 – great conference, but I probably wouldn’t go next year if I was a woman.

I didn’t enjoy the criticism one bit. It hurt. I really love RubyKaigi, and the majority of English-language tweets were now about this incident. I also worried what non-Japanese people would think about the Japanese Ruby community.

While I may have disagreed with what he said, there was one thing I did not do:

I did not criticise him for saying what he did.

To the best of my recollection, no other RubyKaigi attendees did, either. Random internet trolls who hadn’t attended RubyKaigi did, though, in a very abusive manner.

Why didn’t I criticise his decision to speak out? Because he was genuine in his opinions, and it’s a topic that many people don’t want to talk about.

To the credit of the Japanese Ruby community, they discussed what he said, with one person even translating an outline of the blog post into Japanese. In addition, Kakutani Shintaro gave on the RubyKaigi blog a genuine apology, with no ifs, ands, or buts: We apologize.

How the anti-harassment policy helped at Rubyconf AU

February 27, 2014

At Rubyconf Australia 2014, I attended one of the workshops. For the workshop, the presenter was planning on using Lena.jpg, a picture derived from Playboy. For more information on the image, see the Geek Feminism Wiki article Lena Söderberg’s photograph. Because of the anti-harassment policy, I was able to stop that from happening.

How did the policy help? It meant that the image was clearly not allowed in the workshop. To quote the policy:

Sexual language and imagery is not appropriate for any conference venue, including talks.

As the Geek Feminism Wiki notes, even though the image is not explicit, it is sexualised. Since the image was clearly not allowed, I knew that telling the presenter not to use it would be a quick and easy process. No long drawn-out arguments. If he decided not to change the content, then I’d notify the organisers, and he’d be shown the door if need be. This gave me the confidence to tell him not to use it.

Thankfully, dealing with the image was quick and easy. There was a very short discussion, and we agreed not to use the image.

One troubling aspect was that he said during the discussion that he hadn’t read the anti-harassment policy. If true, this is a failing not only on the presenter’s part, but on the conference as well.

I didn’t discuss the incident on the day with the conference organisers, as it had been resolved promptly, and I wasn’t worried about further behaviour later in the conference. However, I mentioned the incident to a conference organiser during the party after the last day, and to all organisers in an email giving feedback on a variety of topics about the conference two days after the conference.

The organisers have announced that they will be more active about the code of conduct in future conferences. I hope this will improve things.

MRI: boring, but reliable

July 8, 2013

A year ago, I filed a bug report for JRuby. Unfortunately, the bug is still alive and well today. Its name is JRuby 6763.

I am interested in the idea of Ruby having alternative implementations. Such alternatives have their own advantages, and create their own opportunities, such as bringing Ruby into a Java only shop.

I also like the JRuby team. I’ve met Charles Nutter and Hiro Asari in Australia and Japan, and I like them. Not to mention Yoko Harada, and other people I’ve met who I either forgot their names, or forgot they were JRuby people. JRuby people have also contributed to MRI, which is wonderful news for a world where too many unnecessary divides exist. In addition, the JRuby team fixed a performance issue that I encountered (JRuby 6766).

But my experience with MRI, compared to that of JRuby and other implementations, is that MRI has never produced false information, whereas the alternatives have.

What I mean by this is that I’ve found bugs in MRI that causes it to crash. But I’ve never written a program that successfully executed, but gave me incorrect output. By contrast, both of the major alternatives have done so.

In fairness to the other implementations, some of the Ruby code that I’ve had issues with has been fairly obscure and esoteric. I was the one who complained that Rubinius didn’t implement the flip flop operator. And JRuby 6763 is about trouble when I use a method named … “method”. 

I don’t know why MRI has been more reliable for me. It could be a different culture in the MRI team compared to JRuby or Rubinius. It could be that MRI has more staff and volunteers. Or merely that MRI has more users, which mean bugs are detected earlier.

No doubt, some people have code that works fine on alternative implementations, but has trouble on MRI. I can only talk about what I know.

As to why I haven’t fixed 6763 myself? With regards to fixing it in work hours, the problem is that I’m a bioinformatician, not a programmer. I wouldn’t be able to justify learning Java during work hours to be able to fix this problem. And with regards to spare time, I spend too much of my time staring at a computer screen as it is, and becoming a JRuby patch submitter would make it worse.

Do I feel “entitled” to a bug fix? No I don’t. The only thing I’m entitled to do is write a blog post expressing what I think.

Would I use JRuby if this bug were fixed? Not in production. The first thing I’d do if this bug were fixed would be to run the unit tests failing because of 6763, and try to find another bug or three to complain about! I might also use JRuby to profile my application for CPU usage or object creation.

Do I think the JRuby team doesn’t pay enough attention to bugs? I wouldn’t assume that. This is just speculation, but I assume the core team decided their time is best spent on major tasks that improve JRuby, and that bug fixes that don’t affect many people and are trivial to fix are best handled by casual committers.

Unfortunately, I don’t have the answers for what can be done. Is it more users trying out alternative implementations? More paid staff? Or something else? I don’t know.

include(:english)

December 28, 2012

Brian Ford wants discussion about Ruby to be in English.

I also want Japanese programmers to use English more often.

Some Japanese programmers said to me that they can’t attend overseas conferences, because their English is not good enough. That made me very sad.

Many programmers still make bug reports in Japanese.

Some Japanese programmers are trying to improve their English. At Sapporo RubyKaigi, many programmers attended try(:english). At Minami.rb, there are sessions to study English.

I think some Japanese people want to use English, but are unable to. Do you need help?

Can non-Japanese Ruby programmers help Japanese Ruby programmers use English?

Japan.binders.full?(&:women) => true

November 26, 2012

(For Japanese readers: Not familiar with “Binders full of women?” Click here)

Once upon a time, I wondered if it was inevitable that programmers were predominantly male. Visiting another country disabused me of that notion. Surprisingly enough to me, that country was Japan.

Before visiting Japan for RubyKaigi 2011, I had the perception that while Japan was a technologically advanced country, it still remained socially very conservative, and that sexism existed to a much larger extent than in western countries such as Australia, the UK and the US.

In defiance of my expectations, I found that there were many women speaking at RubyKaigi, and also involved in the organization of the event. When I dropped in on ordinary meetup groups during subsequent visits to Japan, such as Ruby Sapporo and Minami.rb, I also noticed a high proportion of female attendees.

How could I explain this?

One possibility is that my perceptions of Japan were wrong. That would be interesting in and of itself.

But there’s an even more interesting possibility. What if sexism existed in the general Japanese community, but the Japanese Ruby community decided to behave differently? That we can decide what our community is like?

I have found the Japanese Rubyist community to be diverse in other ways as well.

I’ve found the Japanese Ruby community to be diverse in what programming languages they know. For example, when I showed off the [“1”, “2”, “3”].map(&method(:Integer)) trick to a Ruby meetup group, one of the attendees remarked that there’s something like that in Haskell.

In one way, this diversity is forced upon them – many of them don’t use Ruby in their day jobs. Instead, they use Ruby in their spare time. But I doubt that they’re using Haskell in their day jobs, either.

The Japanese Ruby community is making a strong effort to interact with western countries conference-wise. Virtually every piece of information about international RubyKaigis is posted in English as well as in Japanese. Talks at RubyKaigis are translated live from Japanese into English, and vice versa.

In RubyKaigi 2011, attendees were given conversation sheets, with a list of phrases they could say in English and Japanese. There were also anti-bocchi boards, which organized lunch between strangers. I took advantage of this to have lunch with Japanese Rubyists, and was often the last to finish lunch because I was talking so much with them.

At Sapporo RubyKaigi, the organizers accepted my proposal, which was about the Japanese language. The aim of that talk was to encourage other people to learn Japanese. In the same session as my talk was Yoko Harada’s talk “Why Don’t You Go To Conferences In US?” Harada also organized try(:english), an event where Japanese Rubyists practiced English with native speakers.

To be honest, there have been challenges. Some Rubyists I’ve talked to say that they’d like to come to Australia, but that it’s too expensive. Others have laughed when I suggested that they come to RubyConf Australia – not at me, but at themselves, because they feel that their English is too bad (a lot better than my Japanese, let me tell you!).

One regret I have is that not many Japanese Rubyists go to nearby asian countries, and not many people from Japan’s neighbours come to RubyKaigi.

I’m thinking TJRCINSWAN: The Japanese Ruby Community Is Nice, So We Are Nice!

Zombie chaser – it’s alive!

April 12, 2010

Zombie-chaser is a graphic(al) user interface to mutation testing. Mutation testing involves making modifications to code, and seeing if the unit tests detect these changes and indicate a failure. In the zombie-chaser gooey metaphor, mutated code is represented by zombies. Each successful test is represented as the zombies getting one step closer to you, and a failed unit test kills off the zombie. If you fail to kill the zombie, it gets to eat your brains.

There are two alternatives for the interface. One is a GUI, while the other is a nethack-style interface within the console itself. Like the chaser project, zombie-chaser aims to be compatible with any flavor of ruby on any platform. If it isn’t – if it’s lukewarm on JRuby, if it’s rusty on IronRuby, or if it’s having kittens on LOLRuby, and it’s possible for me to fix it, let me know!

This program incorporates code from chaser and heckle, written by Ryan Davis and Kevin Clark, and code from brains, a game written by Chris Lloyd, Dave Newman, Carl Woodward & Daniel Bogan. The idea of ripping out brains code and producing something different was inspired in part by Zombino, written by Ryan Bigg, and psDooM helped inspire the idea of melding work with a game interface.


Declare War on Everything with Chaser

November 8, 2009

Chaser is a new lightweight mutation tester. Mutation testing involves messing up code that’s being tested, and seeing if the unit tests notice anything’s wrong.

Fake APEC passes by the Chaser

You need to detect when something's wrong

The name is based on The Chaser, an Australian comedy team. They’re best known internationally for a penetration test gone horribly, horribly right.

The main ruby gem that does mutation testing right now is Heckle. The folks from Seattle.rb have done a lot of work on it, but sometimes you’re simply out of luck. It doesn’t work on certain platforms – Windows (correction below), Ruby 1.9 and the like – because it currently relies on ParseTree. One day, I decided that I wanted to be able to do mutation testing on Windows. Like, yesterday. And thus Chaser was born.

Chaser uses plain old metaprogramming. If you’ve got ruby, and you’ve got test/unit, then you satisfy the requirements for chaser. So far, I’ve played with it on Windows, 1.9 and JRuby.

Bug reports, feedback, new features, and fake beards are welcome.

Correction 2009-12-17: Apparently, it is possible to make Heckle work on Windows, if you have a suitable compiler and make a minor change to Heckle’s code.

Extra links: Slideshare notes, and a video presentation thanks to the awesome folk at Ruby On Rails Oceania.

The royalty-free road to knowledge

February 7, 2009

If you start on a random Wikipedia article, and click on the first link within the article, and continue the process until you reach a loop, you end up at Philosophy or a similar article.

The composition of Wikipedia ... or is it? (CC-SA)

The composition of Wikipedia ... or is it? (CC-SA)

Considering that Wikipedia has been criticized as having too many articles on trivial topics, it’s surprising. It’s also freaky – how does Wikipedia know that Philosophy is the “ultimate” thing?

Nonplus describes one possibility, saying “It’s nice to think that the articles tend to proceed up to higher and higher levels of generality and abstraction”, and I’m creating a program to analyse how it “funnels”.

The results so far, although not 100% accurate, are plausible enough to be interesting. It’s claiming that the ultimate page is not Philosophy, but Organism, another abstract concept. Other ultimate pages include Communication, Education and Alphabet.

Analyzing what pages get the most direct links, the top ones include “Where”s, such as the United States and Australia, and “What”s, such as Gene, Plant and Fictional character.

Pages passed through on the way to Organism and other pages are also calculated. 4.3 million out of 4.8 million pages ending up at Organism go through Philosophy, of which 3.8 million went through Indo-European languages. Philosophy links to the British A. C. Grayling via a citation of his work, and United Kingdom links to Terminology of the British Isles via an explanatory footnote. (Nothing in the rules against that … yet) We can see that the British Isles refer to islands, and that some islands are atolls, which are made up of coral, which are marine organisms, studied in marine biology, which study organisms.

The pages that merge together mighty tributaries are also listed. A. C. Grayling, passed by over 4 million pages, only adds half a dozen pages to the total. By contrast, Mathematics and Science, although passed by only a few hundred thousand pages, are noted for merging groups of pages together together.

It’ll be an interesting investigation into collective intelligence. And if it isn’t … well anything that’s free and wiki is fun, right?

When your wireless mouse lacks zap

January 4, 2009

When the batteries of my wireless mouse gave up, I tried seeing if rechargable batteries would work. I put them in, and the red light produced by the laser was visible. But it wasn’t talking with my computer. I tried re-connecting many times, under both Windows and Linux, but it didn’t work.

The next day, I noticed that the light from the laser wasn’t working any more, and therefore the rechargeable batteries had been drained. If the batteries could only last a day, they mustn’t be suitable for mice. So I put some standard batteries into the mice, and both the laser and the communication with the computer worked.

It isn’t always a software problem – sometimes it’s a lot simpler!

About me

September 21, 2008

I’m a bioinformatics ruby programmer by day, and a rails hacker by night, working on The Weather in London.

Update: The Weather in London is now an inactive project.