Accidentally in Code

Tomorrow I’m running an introduction to Java via Wave. Because I’ve had a degree of interest from non-complete beginners in learning Processing, I’ve split the content so that one session will be Java: Building Blocks which will teach the very basics of Java but does not introduce Processing, and the other session will be An Introduction to Processing.

Java: Building Blocks covers the very very basics of Java – writing your first program, primitive types, conditions, and loops. At the end, we should be able to make a simple Hangman game using a framework I will provide.

An Introduction to Processing will cover getting started with Processing and be suitable for beginners who have gone through Java: Building Blocks but hopefully won’t be too dull for more advanced programmers. It will take you through creating your first little Java applet in Processing.

I’m taking suggestions for Topics, but things I’m contemplating are:

  • Java: Next Steps – covering arrays, multidimensional arrays, Objects, more on functions (passing arguments etc). Finishing with a TicTacToe or Pacman game (I have frameworks for both of these).
  • Test Driven Development and Exceptions – throwing and handling exceptions, writing code to pass test cases. Working on a Blackjack game.
  • Creating games in Processing – detecting key presses etc.
  • New Since Java 5 – Generics, enum, for each, etc.

Slides for Java: Building Blocks can be found below. As ever, I really welcome feedback!

Advertisements

There are two things that are almost guaranteed to bring out the giant ***** in me. One is people who accost me in the street trying to convert me to one religion or another (it’s amazing none of them have punched me for suggesting they’re mentally ill). The other thing is sales calls.

I think this allows me to be nice to almost everyone else, even when they’re being annoying.

Anyway, this morning I got a call from the Ottawa Sun, asking if I wanted a trial of the newspaper for as little as $0.20 a day. I said,

My boyfriend and I are 24 and 28. I don’t think either of us has ever bought a newspaper, apart from The Economist. We get all of our news online. So I don’t think we’re really your target market

This guy he took it really well, laughed and complimented me, and told me his kids were the same way.

I was talking to Treena the other day about her start-up, Betidings. She observed that the people who had really “got it” were my generation.

Now, it seems obvious. People used to hear about events in the paper (perhaps some people still do). However, I don’t know anyone who reads a paper – I’m the exception, and I only read the Economist! We get our news from various sources online, and hear about events from our friends or via Facebook or Twitter. But you can’t export Facebook events to your calendar and Facebook doesn’t really display them that helpfully either. The thing about Twitter is that in order to hear about events someone is going to you have to be tuning in to everything they’re saying, and even then you may only hear about it on the day (when it’s too late to get tickets). Betidings means you can just tune into their calendar. That’s kinda awesome.

I think newspapers will die, but I also think that presents an opportunity to those willing to look for them. Betidings is one such example. Do you have another?

Check out what events I’m going to through my Betidings calendar.

After I gave my presentation the other week, someone asked a question. It was:

So, basically what you’re doing is data-mining?

And I said, no, well yes, but that’s not how I think about it. I see it as creating something that will help people understand their use of Twitter. The fact that I achieve this by data mining is by-the-by.

Maybe when we speak to other programmers it’s OK to say something like, “I’m data-mining social graphs in Twitter and visualizing them” but when we speak to our users, that may not mean very much to them. What’s more, I don’t think I would have come up the idea to do that if I’d gone to Twitter with the intention of data-mining. This didn’t come from me as a programmer with an interest in data-mining, or an interest in visualization (as an aside, I took a course in visualization at Edinburgh and hated it. Mostly because we were coding in Tcl). It came from me as a Twitter user, wanting a better way to measure engagement than followers/following.

Yesterday, I wrote a little bit about the journey that brought me to Ottawa. I think I’ve finally realized what I’m passionate about. It’s people. It’s users. This is why I’m so fascinated about what I’m working on right now – what’s more people than social networking? It’s also why I’m so interested in Usability. I’ve read every article on Don Norman’s website, I find usability so interesting, so important.

I’m passionate about giving users what they want – that’s usability, better ways to display data, etc. That’s creating the things they say they want.

Even more so, though, I’m passionate about giving user what they want, that they don’t realize they want yet. In small ways, that’s telling people who are emailing spreadsheets about Google Docs, or explaining to someone frustrated by their web designer about the simplicity and ease of use of WordPress. In bigger ways, it’s been taking a mess of spreadsheets and turning it into a database that can answer questions that users hadn’t even thought to ask. It’s been creating something that’s can make you really aware of your conversational network, and encourage you to talk to new people (the most rewarding feedback I got was from someone who told me they were now making an effort to speak to more people after seeing their graph). I hope these things are just the beginning.

So, what do I want to be when I grow up? I want to be a programmer who speaks fluent human. How about you?

I’d never heard of Don Dodge until about a week ago, until he was one of the people laid off in Microsoft’s latest round of layoffs. He took it with great class, you can read the blogpost here.

I didn’t subscribe to his blog before, but his blogpost about his departure went viral on Twitter. A week later, the fact that Google has hired him went viral as well.

First off, well done him – on the new job and on handling the transition with grace. In his exit interview with TechCrunch he refused to say anything bad about Microsoft. Right the end, all he said was, “I was just surprised… I don’t… y’know, when I’m emperor I won’t do it that way”.

Second – this is a great example of blogging being good for your career. Working at Microsoft might have contributed to his personal brand, but when he left he took his personal brand with him. Handling it with class, built his personal brand up more. Now, a week later, he takes his personal brand to Microsoft’s nemesis – Google.

Talk about the best revenge being a life well lived!

I read a lot about how companies worry about their staff using Social Media. Microsoft was rare in that it allowed it’s employees to blog and identify themselves as working for Microsoft. It’s dawning on me that companies are going to have a new problem – when they lay off someone and that person announces it on their blog (what better way to let your contacts know you’re in the market for a new job?) they will have to deal with the fallout from that as well. That person could be bitter, and justifiably so, but maybe if they say no more than,

However, laying off 5,000 people when you have $37B in cash and huge profits is not cool.

… that might be worse.

So far this is the best new name I have for my blog. I’m still brainstorming, but this is a story I want to tell and now is as good a time as any.

I wrote, a while ago, about how I don’t have Imposter Syndrome any more. Perhaps it would have been better to say, I mostly don’t have impostor syndrome. Sometimes I don’t feel geeky enough. I don’t subscribe to xkcd (although I do appreciate the ones that I see), and I’ve never watched Star Wars or Star Trek, don’t understand the distinction, and I’m not particularly interested to either. I don’t drink Red Bull and stay up all night coding.

The nerdiest thing I ever did was get fed up with Windows when I was 16 and wiped it off my hard-drive, replacing it with RedHat. Only I was at boarding school, with no internet connection, and couldn’t download all the necessary drivers. So my dad took it in to PC World, they fixed it, and I put up with Windows until I eventually got my first Mac nearly 3 years later.

I learned HTML at 13 or 14, but didn’t learn to code until I was 16 (when I learned C in school). Then I went to University to study Chemistry, I wasn’t sure exactly what I wanted to do but I liked making stuff go fizz and occasionally burst into flames. My DOS (director of studies) put me in Computer Science as an elective, and I took the mandatory math course.

Part way through my first semester, I went to him and said “I hate Computer Science”. I was frustrated by being taught programming through slides, not doing (I still don’t think this works well, especially not for beginners), and weirded out by all the boys who didn’t seem to wash regularly. I was also completely mystified by “Object Orientated Programming”, having learned procedurally. I could explain it beautifully, but the concept just made no sense to me. I remember a professor commenting in my third year that Computer Science had changed because you couldn’t expect everyone coming in to have taught themselves a good chunk of what they needed to know anymore – because there were non-geeks. Non-geeks like me.

My DOS bribed me to stay in CS for another semester, promising he’d get me into Economics the following year. Anyway, it turned out Chemistry didn’t have enough explosions for me and I ended up still in CS, and Economic History rather than Economics (another story altogether, and not such a happy one… Economic History is all the boring bits of History and all the non-math-sy bits of Economics. It’s very dull). I guess at some point I started to like it, and then to love it. I wrapped my head around OO, discovered Recursion and Functional Programming (which I really liked) and met people who, if rather more nerdy than me, were at least clean. I interned at a wonderful company which gave me so much more confidence in terms of my ability, and I graduated with a good 2:1.

I wanted to be a programmer, but I wasn’t sure where, or what kind, and I wasn’t yet ready to settle down, wasn’t sure if I wanted to go to grad school or not, so I took off. I worked in the US, trained in martial arts in China, hung out in Europe for a while, qualified as a ski instructor in Canada, worked for a bit in the UK and then went back to the US to work, ended up here in Canada at uOttawa. I’d realized I wanted to know more stuff and as only banks seemed to be hiring (oh, the irony!) it was a good time to go back to school.

In the US I worked as a programming instructor, and after the second summer they recruited me to develop the programming curriculum. It also lead to the opportunity to work in China, last summer. In the UK, I worked to transform the zillions of spreadsheets a department was using to organize themselves into a database, that was easier to update and maintain and easier to extract information out of.

The job in the UK really hit it home to me how we as programmers often don’t really understand how “normal people” use computers, which ultimately means that we don’t always know who our users are. People who don’t realize what a little know-how can do, and how if you represent your data the right way it can be a goldmine of information, with little effort. It’s now something that I try to consider, and it influences my research and general attitude to users.

I read this article the other day – don’t let your strengths become weaknesses. It’s fascinating, because it explores this idea of how your weaknesses have corresponding strengths. So if my weaknesses that I’ve been talking about here are:

  • Lack of confidence
  • Not feeling enough of a geek

My corresponding strength are:

  • Lack of confidence -> Patience as an instructor: I remember what it’s like to be confused so it’s easier for me to be patient when my students get confused. When they make an endless loop, I find it funny rather than frustrating.
  • Not feeling enough of a geek -> empathy with end users, and a better understanding of people for whom computers are a facilitator, not the be-all-and-end-all, or even the most important thing. An interest in how computers can be useful to regular users, rather than just technologically or programmatically more advanced.

So an accident? Yes! A happy one? Yes! And if I don’t always quite feel like I belong, that’s not necessarily a bad thing – it can lead to other opportunities.

Goals for this week were:

  • Finish putting together presentation, record and upload it. See it here.
  • Put together loop exercises for extra session with my DGD group.
  • Start CA Assignment 3 (this one will apparently be shorter) – aim for half done.
  • Marking.
  • Read 5 papers.
  • Join gym (physio says yoga and body pump allowed – finally!!) attended a body pump class, and it hurts… in a good way though, which is a nice change after weeks of injury pain!
  • Clear new email mountain.
  • Code new viz idea. Read about it here.
  • Ignite! Read about it here.

Crikey! I checked off everything. This never happens! I also:

  • Spent time with the people behind Betidings, working on their color-scheme (hopefully you’ll see some improvement to that soon).
  • Planned an introductory online Java/Processing workshop – you can read about it here and let me know if you want to participate.

Thanks to everyone who made this week so awesome / productive!

For next week:

  • Finish CA Assignment 3
  • Recreate conversational graphs from re-factored code
  • Create slide deck for introductory Java workshop
  • Read 5 papers
  • Go to the gym 3 times
  • Rename blog (taking suggestions!)
  • WISE coffee social
  • WECS meeting (Women in Engineering and Computer Science)
  • Work on website

I know, it’s been a long time coming. But finally – my new visualization which I’ve created using IBM’s Many Eyes (which is awesome, although very blue).

Since Twitter released it’s new “Lists” feature, there’s been talk about how Lists are a good way to measure influence – someone who is on more lists is likely to be more influential. Likewise, someone with lots of followers who’s not on any lists (or maybe one called “spammers”) is less influential.

However, what about measuring influence within lists? For instance, if you’re using lists to collect a group of people, such as the Girl Geek Dinners list, it might be nice to visualize something that indicates how influential people are within that network.

So, what I’m doing is displaying the scatter-graph of followers vs following, with the size of the bubble being proportional to the number of times the user has been mentioned by another user in the list.

See the dynamic one for my friends here. Static one below:

9117565e-d240-11de-be19-000255111976 Blog_this_caption

Here’s the one for GGDOttawa (dynamic version here):
B2507ef0-d249-11de-aa1c-000255111976 Blog_this_caption

More coming soon! Taking requests and suggestions!