A very useful list

From this MetaFilter comment, a bunch o’links. This was an eye-opener for me about some of the great tools out there.

Github Git hosting and social network around open source projects,

Phabricator: Suite of tools for dealing with source code: code reviews, diff and audit tools, wiki, issue tracker, task tracker. If you did not already know about this, you must check it out. Trying to see if I can run my own instance on Dreamhost, or get it running on OSX.

arcanist (CLI for phabricator),

TextMate: really nice text / source code editor

the Facebook API,

the Twitter API, which I would now replace with the App.Net API  (my app.net account)

Sprintly, Project management

Trello, Collaboration tool

Amazon Web Services, There’s a lot of products beyond cloud servers (EC2) and storage (S3)

Heroku,

Get Satisfaction, customer community builder

ZenDesk, customer support software

Stack Overflow, You’ve already used this, admit it!

Hacker News a reddit-style community supported by the tech startup incubator. High quality tech news and discussion. Can be too obsessed with the new hotness / startup dramas, but generally excellent at tracking technology and business issues.

reddit

 

Gender, story and motivation in games

First up, a trigger warning. If you are sensitive to discussion of (fictional) sex offences, please leave now.

The context for this is the Free Play games conference in Melbourne, and a throwaway tweet that touched on something important.

Female characters in games. They don’t get much of a range of roles. They are the MacGuffins usually, the ostensible reason for the adventure but irrelevant and interchangeable. Leena tweets that she’s tired of female character motivations based on sexual victimisation. Shortly, this tweet appears

WRONG. “@grassisleena How can indies help? Rape Batman and kill Lara Croft’s parents. Mix it the fuck up. #Freeplay12”

original conversation starter

Delicate topic, and Franzicus makes the point that making women into complete humans is not really aided by suggesting that horrible things are done to men. And Leena wound up apologising and backing away from the topic altogether.

I don’t pretend to be anything more than a human male who would like better and bigger stories, and I think Leena was attempting to articulate something that is deeply felt but not understood. It is perhaps part of the wish-fulfilment and narcissism of male-driven gaming culture.

Why is it so unthinkable that Batman could be raped? Why is it so thinkable that Lara Croft would be?

This is starting to play with the high voltage wires, of sexual politics and sexual desire and sexual power. An interesting article on the new Lara backstory

A sidestep

Years ago a friend wrote an article in the student newspaper about the logical inconsistency of laws against bestiality in a country that does not enforce vegetarianism.

Why is it acceptable, he asked, that an animal might be killed in a painful and distressing way, but not used for sexual gratification? Why is the gourmand who enjoys veal perfectly respectable company, but a zoophile with a non-deadly appetite for a baby cow would be shunned? Do you suppose the animal itself would choose a messy death and dismemberment over a non-consensual sexual encounter?

Bestiality laws are not actually about protecting animals. They are about defining normative boundaries on human sexuality. They draw a line that divides deviants from “normal” people and the desirable from the repugnant.

Gaming tropes, where the protagonist seeks bloody vengeance for the treatment of his daughter / wife / sister / mother – this isn’t about protecting women at all. It is about voyeuristic titillation, watching rape fantasies that can’t be expressed in order to disavow them.

The character motivation for the violence is that he is angry with the offenders and seeks revenge. The player motivation is to expunge the guilt around the voyeurism.

Another sidestep

A personal admission: I disliked Kill Bill. A lot. The violence against women upset me. Others seemed to think it was fine, because it was women beating up other women, but it did not sit well with me. Yet I have happily eaten popcorn while watching fictional men torture and kill each other. I can watch Pulp Fiction and not have the same visceral reaction to men being shot and killed. So I’m not logically consistent on this – there’s some inclination in me to see violence as only acceptable when it is male-on-male.

It is this inconsistency that is interesting, the crucial difference between what one feels and what one should think.

Imagine if Leena’s suggestion was taken up and we have a Batman who has been the victim of sexual violence, learning to cope, dealing with the emotions, struggling with suicide and identity crisis. Imagine Lara Croft, strong because she chooses to be instead of the product of victimisation, more Indiana Jones than Lorena Bobbit.

Then, we would have some stories that were genuine attempts to explain how to be a complete person, coping with the slings and arrows of outrageous fortune.

Maybe later…

I’m going to leave this here for now. When I can verbalise it better I want to come back to why I think they are linked – why an aesthetic that refuses to imagine sexual violence towards Batman will also refuse to imagine anything but sexual victimhood for Lara Croft.

Using Git in your code demos and presentations

Saw Dan Draper at the Adelaide Rubyist meetup last night, for a presentation on Grape.

During the presentation, he was editing the code to make changes or comment out chunks that he was going to demo later.

It occurred to me (and I’m putting it up here to remind myself later) that this could be done much better with Git.

If you are working on a presentation, when you have got the demos you want working you can make a tagged commit:

git commit -m “First demo, barebones / compilable / doesn’t do anything”

git tag example1

<edit / test cycles>

git commit -m “Second demo, widget API call works”

git tag example2

You can now move back and forth during the demo, no editing required to make sure it all behaves (or at least less chance of things going badly…)

Testing gestures on the iOS Simulator

Learned this tonight while I thought I was beating my head against a wall with an iPad app.

I’m working on an app that uses a two-finger tap to open the admin screen. How do you open that screen on the Simulator?

Turns out, there’s a pinch control that will do the trick.

If you hold down ‘option’, you get two finger markers. Move them to the centre so they overlap. Then hold shift and you can move them to any place on the screen. Now you can click and get a two finger tap.

Some useful programming resources…

I’m waiting on a phone interview with someone from Amazon Web Services, and I’ve been reading and preparing. I have found a few resources that I want to keep around, and spread the word for others.

Firstly, the excellent Steve Yegge and Joel Spolsky on the interview process. Use what they say to reverse-engineer what you should do!

Secondly, some online resources so I don’t make (too much) of an ass of myself in the interview — some quick references on core topics in case I get a brain freeze:

Java quick reference/cheatsheet, Java console/file IO

Wikipedia’s list of data structures

Dictionary of Data Structures/Algorithms

Useful bit operations, but CatOnMat has heaps of other useful articles too.

Finally, sorting and searching algorithms.

I’m astonished how rusty I feel with respect to a few of these big topics: my courses have moved on to stuff like programming paradigms like Scheme and concurrency/threading. I need more time to follow up on my own coding project ideas!

UPDATE: So, it was someone with a background in computer security and operating systems. All I know about OS is stuff I’ve picked up from Slashdot articles and interesting articles on IBM DeveloperWorks 🙁 He scaled down some of the questions to more DSA type things when it became clear how little I knew about network programming, but it was still pretty embarassing for me. I do have a piece of homework to do, so hopefully that means I’m still in the running…

What am I up to now?

A bit of a brain dump about what I’m juggling at the moment:

First up, uni exams and the Duke site coordinator role.

Second, I want to write a Scheme interpreter on the iPhone. Bring together what I’ve read in The Little Schemer, Structure and Interpretation of Computer Programs and the iPhone Developer documentation. It can’t be sold in the App Store (No programming environments, nothing that can process user input) so it’s more of a code kata exercise in sharpening my skills.

To that end, I’m reading a book I picked up from the bargain bin in the USA, C Data Structures. I’ve covered a lot of the topics in Java for uni assignments, but I want to learn the C equivalents so that I can flexibly move between imperative and OO styles in writing the interpreter. The book is well structured, but with annoying typos and bad typesetting all over the place. the decrement operator (–) appears to have been replaced with an em-dash in quite a few places, so the code and explanations get rather cryptic sometimes! Also, Practical C Programming would be next, keeping up the O’Reilly gold standard for technical books so far.

Third, I have some creative projects on my mind. I want to follow up from the Audium experience with a spatial sound experiment, possibly during the Adelaide Fringe next year. Dave Bartholomeusz has said I can use all the equipment that isn’t on hire, so we have maybe two dozen mackies and subs to play with. Routing all the sound is going to be an interesting exercise in concurrency, I’m thinking that I may have to pre-render the audio tracks and then sync in real-time, or have multiple computers and mixing desks if we are doing a real crazy job of it. If anyone knows any elegant solutions, let me know!

Also, I have a few ideas for Quartz Composer patches using the new Snow Leopard version of QC. I was also thinking it would be cool to set up a github repo so that I  can share them around and other VJs can experiment with them or branch off in their own interesting manners. There’s certainly a lot more room for implementing Quartonian in an elegant way using Xcode and QC now than ever before.

What else? A gigantic stack of books. A talk at the AUC /dev/world conference in September. Friends to catch up with. Snowboarding in Mt Hotham. More books to read.

That’s it for now. I’m going to get a coffee and study my notes for the Advanced Programming Paradigms exam at Cibo.

Audium

Went and saw the Audium in San Francisco (1616 Bush St, look up details at http://audium.org ) and had my mind thoroughly blown.

I probably take the title of my blog too seriously: I don’t post random stuff, I wait for deeper ideas to come along. Trouble being, I don’t have time to write them up as well as I’d like. The Audium was one of the most amazing experiences I’ve had recently, so I’m just going to get this up and figure out what I think while I’m writing.

Stereo traps us in a lot of our audio experience. It’s good enough and cheap enough to do the job most of the time. I have been to amazing gigs — Alex Carpenter’s Music of Transparent Means, Merzbow in the Big Star basement — where the surround sound was unbelievable. I have been in noise bands, overwhelming the room and the performers with dense walls of sound. I have done listening meditations in interesting places, trying to immerse my self in the experience of the moment.

The Audium very rapidly reminded me of all these experiences and more.

176 speakers, multi-track location control, someone in charge who has experimented with this for 30 or 40 years. Even the architecture of the place communicates something important about the experience you are about to have.

The closest you have ever been to a sound system with this fidelity of location and presence is in a movie theater. There is no way you’ll see a film with a soundtrack that is this intense: multiple moving sound sources quickly pulls your full attention out of the visual realm. The performance rapidly overwhelms, becomes a raw and pure experience of attention. I was shocked when the lights came up at the end, having completely lost track of time.

I write about an experience that is, by definition, only capable of being summarized in text. I can tell you what happens around the experience, but the experience itself — the point of the experience — is beyond explanation. Once you have experienced the overwhelming presence of the sound, we can talk about it. Until we have these shared referents, I can only vaguely indicate what it is like.

In short, you should see this if you are in San Francisco. I am determined to experiment with multi-source / locational sound myself now. I have a whole bunch of ideas for a show in next year’s Adelaide Fringe Festival and a long list of people to contact about making it happen.

Twitter and your cyberspace lifestream.

I recently read David Gelernter’s article on edge.org, “The Second Coming”. Later the same day, I read some reactionary screed against twitter in a newspaper. The contrast between the two was pretty extreme, and got me bubbling away with a few ideas on the interesting transitions our culture is going through.

I present these ideas in a semi-edited form, for your appreciation and re-use. Nothing here is necessarily true or final, in a cunning demonstration of my eventual conclusion…

Firstly, Gelernter describes something that underlies what is compelling about Twitter, in a very tangential way:

Your car, your school, your company and yourself are all one-track vehicles moving forward through time, and they will each leave a stream-shaped cyberbody (like an aircraft’s contrail) behind them as they go. These vapor-trails of crystallized experience will represent our first concrete answer to a hard question: what is a company, a university, any sort of ongoing organization or institution, if its staff and customers and owners can all change, its buildings be bulldozed, its site relocated — what’s left? What is it? The answer: a lifestream in cyberspace.

I’ve talked about twitter being like telepathy before, but this really catches another compelling aspect: twitter crystallizes conversations in a more accessible way than I have experienced before. Discover someone because a friend replied to something they said? You can uncover the entire conversation chain of replies, look at the branches in the discussion, find other new people of interest. When you find someone who is really interesting to you, you can look through their history and the conversation streams they have been a part of.

There’s a layer of people who have heard of twitter but who don’t have any experience deeper than following celebrities and their friends. This is the shallow part of the experience, and complaining about it is like listening in on two people who are getting together for lunch and gossiping about famous people. It isn’t interesting to an outsider, but is the lubricant for a lot of social interaction.

The fascinating thing about twitter is the easy emergence of groups and communities that dig deeper. Allow me to demonstrate.

Let’s say we have a group of people who find each other by some opt-in resource, say twittgroups.com . There are varying levels of quality of poster in there. The people who spam or waste time get unfollowed or ignored. The best posters turn up more often in useful conversations when people search or look at the history of interesting discussions. More followers within the community of interest means a greater ability to call on the resources of the community for their projects.

Twitter simplifies contributing to communities of shared interests. It makes it easier to find valuable people without the complications of facebook and myspace ‘friend’ relationships. It freezes the contrails of discussions without adding friction to the conversation itself. The way these build on the core mechanic of Gelernter’s lifestream — the ‘crystallised experience’ — is one of the elements that makes Twitter indispensable to me and many others.