Author: Cate

  • Duck Typing Applied to People

    The other day, my boyfriend and I have a conversation along the lines of the following:

    Boyf: Why does X keep talking about how she’s a cricketer*?

    Me: I know, she’s never even thrown a cricket ball.

    Boyf: Seriously? Then she’s not a cricketer.

    Me: She self-identifies as a cricketer, I guess she is.

    Boyf: I self-identify as a lolcat, does that mean I am one?

    * Changed to protect anonymity.

    Credit: flikr / Kevin Steele
    Credit: flikr / Kevin Steele

    How does this lead to Duck Typing, though?

    Duck typing means that if it walks like a duck, and talks like a duck, it’s a duck. It’s used in both Ruby and Python – see the Wikipedia article.

    If we’re a little bit like compilers, my boyfriend is smart in that he uses duck typing to decide what they’re like. I know I’m more inclined to take people as they say they are, which causes ClassCastExceptions further down the line.

    A while ago, I read an article by Penelope Trunk in which she says, “People who workout regularly think of themselves as people who workout even when they are ditching the gym and eating ice cream.” I’ve been thinking of this lately as I try and get back into the habit of training post injury. I think of myself as someone who works out, so even though I’m busy, and tired, I drag myself out and go. I’m actually finally starting to enjoy it again, too. However if I didn’t go, no matter how hard I thought about being someone who worked out, I wouldn’t be. I have to walk the duck walk, not just talk the duck talk.

    Credit: flikr / anomalous4
    Credit: flikr / anomalous4

    Here’s my suggestion for the day – let’s duck type ourselves more. This means:

    • If you want to be someone who works out, go work out today.
    • If you want to be someone who’s reliable, do your best not to let people down.
    • If you want to be someone who’s pro-active, stop complaining about your boss (yes this definitely applies to me lately)
    • If you want to be effective, stop procrastinating.
    • If you want to be valued, create value.
    • If you want to change the world, go out and be the change you want to see.
    • If you want to be a cricketer, start by going out and throwing the damn cricket ball.
  • Thinking Like a Programmer

    I see this problem continually in the first years I TA – they’re so overwhelmed by syntax they don’t know how to start to write the program. VB (in Excel) is especially mean about this, as if a line of code won’t compile it won’t let you go to the next one.

    So, having given the same explanation 10+ times I’ve made it into a presentation – I hope if you’re a beginner programmer you’ll find it useful. Let me know what you think!

  • An Introduction to Processing

    Find the slides for this below. If you’re interested, there will be a session tonight in Wave at 7pm, but there will be another one later this week as well.

    As ever – feedback welcome!

  • Productivity for Minions

    Google this, there’s nothing useful. Someone needs to write a book on this! I’d buy it, would you?

    If not, hopefully it’s because you’re not a minion.

    by drewdomkus / flikr
    by drewdomkus / flikr

    Grad students are basically minions. I am the minion of my supervisor (luckily he’s nice), the minion of any prof whose course I take (to a lesser extent) and the minion of the prof I TA for.

    My supervisor is the reason I have a place at the university. He gives me a scholarship, too. So if he asks me to do something, I do it. It becomes my priority.

    If I’m taking a course, we get assignments and deadlines which obviously we have to complete on time. The course I’m taking at the moment has set us in the region of 100 hours of homework, which finally ended last week. Now we have a project to complete, but the deadline is fairly early in December – reflective of her schedule, not ours. When she decided that it was not OK for me to code in Haskell (despite saying any programming language) I had to rewrite it in Java the following day – this was not what I’d originally planned to do then, my priorities had to change.

    This is the least of it. I dropped a course, because the prof said openly that he wanted the “source code” to anything we did (including, say, word documents) so that he could use it if he wanted to. Lately, I’ve heard another prof doing a similar thing. Grad students are minions.

    Then, there’s TA-ing. Being a bit tender-hearted (also, and probably correctly described as a “people pleaser” I end up as the minion of my students. I see them on their schedule, help them longer than I get paid for, and respond to their emails as fast as I can. Then there’s the stuff the Prof asks me to do – at the end of the semester, I have four consecutive weeks of marking (an assignment a week), plus students being sent to me for tutoring, plus… these things have to become my priority.

    Lastly, there’s WISE. As President, you’d think I wouldn’t be a minion here but I am – I’m the minion of anyone involved who doesn’t do their job, because then I have to do it for them. My priorities have to change.

    This wasn’t meant to be a long moan, just example of how, whilst I set my priorities, being a minion means that they get changed because other people’s priorities are more important than mine.

    Lurching from crisis to crisis, panic to panic is not productive. It’s not effective. 7 Habits talks about this – your deadlines, your priorities need to reflect your values, not just be jerk reactions to events.

    But what if you’re a minion? Because I try to do that, I make my list every week. I try and incorporate the minion activities (like marking) that I know I will have to do. But then I can get a request and have to rejig everything. Recently I came home to an email (at 11:30pm, sent at 6:30pm) asking for something to be done by the next day at 10am. Of course, it didn’t happen. But I did have to abandon everything else the next day to get it done.

    Productivity for Minions – someone should write this. How to balance living a productive, effective life, whilst continually having to respond to others knee-jerk reactions.

    Advice welcome!

    By drewdomkus / flikr
    By drewdomkus / flikr
  • The Refactoring

    A TDD inspired sculpture at RubyConf
    Credit: flickr / alancfrancis

    Lately I’ve been working on something that I’m calling The Refactoring.

    Not that long ago, I wrote about my Twitter Conversation Networks (read the rationale behind them) and I was blown away by the popularity and the amazing feedback that I got. So I tried to incorporate it all in.

    Here’s the thing, though, it was an experiment and frankly kind of a hack. I didn’t have a clear idea of where I’d go with it, I was just playing with things and seeing what would happen. So I rapidly realized that it wouldn’t scale as it was, and I needed to go back to the beginning and start again from scratch, building more complex data structures and making it as modular as possible.

    In tutorials and the lab, I’m often telling students not to get too attached to their code. In fact, when one of them was reluctant to delete a load I told him about this and he looked at me in horror. But it was easy for me to throw it out and start over, because the first thing was just a prototype and after seeing how people used it I have so many more ideas, that will be so much easier when I design it from the ground up with scalability and potential in mind. In fact, I’ve effectively created a Twitter data-mining library that will make it easy to extract information from your network, which is also used to generate the data for my List Visualizations. This will (eventually!) be open-sourced.

    The thing no-one tells you about being a grad student, though, is how little time you get to spend coding. Between TA-ing (especially marking), this course I’m taking with the copious amount of homework, reading papers, and making presentations… I’m not where I want to be. However, I made significant progress on it yesterday and here are some of the things that are going to be possible, as a result of The Refactoring.

    • Weak-tie and strong-tie graphs, so you’ll be able to say I just want to see connections where there are a minimum of two mentions, or three. I’m interested to see how this will change the graph for a user, as we progressively increase the threshold.
    • Your full graph (including weak ties) but only stronger ties for those people you’re connected to – this should help filter out noise as the graphs get very busy. You’ll be able to have an increment, that will increase the threshold as you get further from your central node. This means that it will be possible to go to a greater depth.
    • Related to this, this should make it easy to show connections amongst your first degree nodes, but not connections to people you are not connected to.
    • Reciprocal connection only graphs.

    What else would you like to see about your network?

    I really hope to finish this tomorrow and will need test subjects. You can indicate below if you want to be one, comment including your Twitter handle and what kind of graph you want (i.e. specify tie-strength for central node, tie-strength for first-degree and increment – if any).

    The first five people to comment will definitely get graphs. Thereafter, I’ll do my best but it is the end of the semester so I cannot promise anything on the time frame, sorry.

  • Tweet Cloud

    Lots of people seemed to be making these the other day, they’re kinda cute.

    Tweet Cloud: Day
    Tweet Cloud: Day
    Tweet Cloud: Month
    Tweet Cloud: Month

    You can get one here if you want: warning it uses OAuth and automatically sends out a Tweet, which I hate. I also heard something about unsolicited DM’s, but if you’re concerned about that all you need to do after you’ve made your cloud is go into your settings page and revoke it’s access.

  • On The Spot

    Quotes - 10/60
    Credit: flickr / B.Romain

    Tonight I went to Students and Startups at The Code Factory. It was really good, although I was nervous at first because we were doing these building challenges, which I worry I suck at. In the end it was OK – we didn’t win, but I don’t think anyone else had much more of a clue than I did.

    First off, each student had 30 seconds to introduce themselves. We were supposed to say, who we were, what languages we liked, and what our ideal job would be.

    Most people went over time and rambled a little. It’s tough to stand on the spot and do that. People kept saying they liked Java and sometimes C, to which I just tend think “y’huh, Java’s probably the only language you know” – I know, in my head I’m mean. Mostly I don’t say this stuff.

    A side note on, “Java is my favorite” – in general I get the impression from so many CS students that Java is the hammer and every problem is a nail, you know? It’s too prevalent. Learn a bunch of languages, have a favorite, sure, but don’t have your favorite be your favorite because it’s the default. I like Java, it’s up there in my favorites but I’ve tried a bunch of other ones and also, I mostly love it because Eclipse is a phenomenal IDE and there are so many fantastic Java libraries and toolkits available. Ultimately, Java is just one tool in my toolbox, and I love it because it’s like one of those screwdrivers, you know? With all the different heads.

    And then someone mentioned Haskell. And I thought, “nooooo!” because he would be the first person in Canada I’ve encountered that even knows what Haskell is, let alone can code in it. So then I couldn’t mention Haskell. And I was adamant that I was not going to go over time.

    In the end, I said something like,

    My name is Cate Huston, I’m a masters student at uOttawa. I work on, basically data-mining and visualizing Twitter. I’ve coded in 10 plus languages and I liked them all, except for Tcl. You can find me at catehuston.com or on Twitter, I’m @kittenthebad.

    Like almost everyone else, I forgot to say what my ideal job was. And afterwards I kicked myself, because I knew exactly what I wanted to stay, but then on the spot I totally forgot.

    So here it is:

    I want to make stuff, that’s beautiful, functional (useful), and usable.

    How about you?

  • Focusing on Action

    Liquid dream
    Credit: flickr / ~jjjohn~

    Yesterday I wrote a post about something that’s really been frustrating me – the fact that WISE may well run out of money in January. I wondered if it was too negative, and I reread it several times and debated about whether to post it… and eventually decided to.

    Here’s the thing – I can’t not be frustrated that we’re in that situation. I can’t write about it and not be angry.

    The other week, in my post “The Accidental Programmer”,  I linked to this fantastic article – Don’t Let Your Strengths Become Weaknesses.

    In this context, here’s my strengths: I’m passionate, involved, and trying to make change.

    Weakness is obvious – I get frustrated when we work so hard at something but get let down by people we need onside, and eventually angry after continually coming up against the hard surface that is University Bureaucracy.

    So now I have to focus on what we can do. The semester is over, and we’ve got some great stuff planned for January. I have a plan for the whole finances thing, which I think will work, and someone is dealing with the application thing.

    I need to accept that my plan may not work, but I’m going to do my best to make it happen.

  • A Crash Course in Leadership

    Leadership
    Credit: flickr / Dunechaser

    Disclaimer: don’t take any advice from me. I’m known for giving terrible advice, particularly when it comes to relationships. Also, don’t let me set you up. It invariably ends in disaster.

    WISE has enough money to last through January, I think. Then we’ll have to work something out, or stop.

    I’m not down with stopping, I’ll work something out. Watch me.

    Here’s my advice: no matter how good the cause, don’t be the driving force in starting (or restarting) a student organization. Particularly one with no stable source of funding. In fact, don’t ever be President of a student organization. Get involved, sure, but pick a clearly defined role and do it well enough that no-one will put anything else on you, but no so well that you give the impression of not having enough to do.

    The positive: I get to work with a great group of people, sometimes we get to put on events (like last week) that are truly useful and thought-provoking, and inspire debate. I get to feel like I’m involved in something that will genuinely make a difference, even if a small one, to some of the girls and women at the University.

    However being President involves a lot of rubbish things too. It involves the stuff that it says in our constitution, but also taking care of or finding people to take care of the stuff that other people aren’t doing or won’t do. I’ve worked out who I can rely on – and the people who you thought would, don’t always make the cut. Worse is, last week, I got two complaints and another person requesting to be removed from our mailing list, in a way that suggested she thought we’d scraped it off the internet (we don’t do that, obviously, if we have her email address it’s because she gave it to us). The complaints were just… I want to reply saying –

    WE KNOW AND WOULD LIKE TO IMPROVE THIS! But I have to tell you something – we have a handful of people and very little resources. We are doing the best we can. As a result of this, my policy is not to listen to complaints from people who don’t offer to help. Sorry.

    Then at the weekend I had to break to one of our execs that the application she’d spent so much time on, that we’d submitted ages ago and waited months to hear about? Yeah they totally ignored what we’d discussed prior to submitting it and that their “acceptance” of it was completely meaningless. Good times.

    You can probably tell, I’m frustrated. All the more so after reading about the lack of women in tech. Oh there’s a report? Super helpful! I’m so pleased!

    OK – sarcasm over. Do we need reports? Don’t they just say things that on some level most of us realize – we need action, and role models, and support networks, and inspiration… all the things that WISE is trying to do. Only we have no money, so that may stop after January. And everyone knows that my job is rubbish, so no-one wants to do it – so what about when I graduate? And I can’t do convert to a PhD like my supervisor and I wanted me to because I pay international tuition, and the university bureaucracy is anyway driving me so insane that I don’t think I want to anymore.

    However this post is entitled A Crash Course In Leadership. So here’s what I’m learning:

    • How to organize and motivate people – need to improve on this.
    • How to deliver bad news – but sometimes it’s best to keep it to yourself.
    • The importance of conviction –I am literally out a couple of hundred  dollars until our finances are sorted out. Because I believe in what we’re doing, even if I’m not always sure we’ll succeed.
    • The importance of team work – if it wasn’t for the others, I would have given up by now.
    • How to delegate, and how important it is that you do.

    Will this be helpful later on in my life? Of course. But right now I’m worried I’m failing. Which means I fail the team, which is too awful to think about. We are all doing the best we can, but sometimes that is not enough. Especially when the people who you need to support you, don’t buy in. Another important lesson in leadership, I think: you don’t lead in a vacuum.