Accidentally in Code

Author Archive

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!

Ignite

Posted on: November 15, 2009

Ignite is a tough format – 5 minutes, 20 slides, and the slides advance every 15 seconds. As such, the talks aren’t so much informative as inspiring and I really enjoyed the evening. First such event in Ottawa, but hopefully there will be more to come.

You can see the full line up here, however sadly some people couldn’t make it and so the line up was as follows:

Adele McAlear – Death and Digital Legacy

Jairus Pryor – How I Stole $15M from the Canadian Mint

Ian Graham – Coworking

Sue Murphy – Online Community

David Akin – Media and Technology

Kris Joseph – Shakespeare and Oral Culture

Scott Annan – You Inc.: We’re all freelancers now

Nick Charney – Public Service Renewal in 5 Minutes

Al Connors – Improv and Everyday Life

Death and Digital Legacy

This is actually something I’ve been thinking about lately and had actually sat down with my boyfriend, given him my passwords and told him that if anything happened to me I’d want him to let people know. I will probably blog about this properly soon. What I hadn’t thought about, and what this talk brought into focus for me is OK, so I die, my boyfriend lets people know – then what? Do I want my Facebook profile to be a memorial? What do I want to happen to my Twitter account, my blog, LinkedIn etc. I still haven’t come up with any answers to that.

Adele talked about Mac Tonnies who died recently. He had not planned his digital afterlife, as a result the problem of what to do with his archives is ongoing. His family apparently do not own a computer, and did not realize that he’d not just left a website, he’d left a tangible community and online ecosystem – an Amazon affiliate account where money is paid in, and also services that cost, such as hosting.

Before this talk I realized that we had to think about our digital afterlife. Now, I’m starting to realize how much thought needs to go into it. I have more thinking to do.

Shakespeare and Oral Culture

Apparently Shakespeare couldn’t spell. I always thought that was just how people wrote at the time – but apparently it was more than that! Interesting talk and perspective about how rules restrict creativity. Mashups have no rules, and that’s partly why they’re so exciting.

Coworking

Fantastic quote from this – “The harder I work, the luckier I get” (originally by Samuel Goldwyn). This was a talk on entrepreneurship. He stressed the importance of small victories – celebrate them. Think you can change the world, because the people who do change the world are the people who think they can. Love what you do. Being an entrepreneur means you can choose who you work with.

Summary: Work hard, have fun, surround yourself with great people and eventually you will succeed.

Online Community

Susan talked a lot about “Superstars”. In the case of her work in a production company, these were the people in the trenches, people with full time jobs spending 18 hours a day working on productions. Everyone working there was a superstar – they finished each others sentances and raised each other up. Acheived the near impossible on a regular basis.

She started OttawaTonight.com (URL not currently working for me). after noticing the lack of good arts and entertainment information in Ottawa when out with a friend. She thinks that building stronger communities means building the 3 elements of a community, which are: soul (passionate to come together and create), everyone needs to be a superstar, space to come together and share. Concludes – we spend so much time thinking about technology and tools, but it’s not what’s important.

You Inc.: We’re all freelancers now

Scott starts by urging us all to quit our jobs, today (even if we don’t tell our bosses). We used to trade our skills and time as an employee so the company would make a profit in return for security, however that security doesn’t exist any more. Hence – we are all freelancers now! In the new reality, we won’t get to retire at 65, and thus rather than trying to earn more money we should instead look at our career as a journey.In Canada, the opportunity to have your own business is better than ever before.

Focus on skill growth – broad, not deep as this means more industries open to you when you change jobs. Connect with people – social networking enables connections. Your social reputation is increasingly important. Because of connectivity, it’s possible to make a living in a niche market. Authenticity trumps brand. Don’t worry about what you put online, just get online and do something. Do something that’s big and important to you.

In sum:

  • Dream big.
  • Quit job.
  • Build skills.
  • Build network.

Recommends Network Hippo as a tool to help manage your personal network.

Public Service Renewal in 5 Minutes

Great quote (threat?) from this guy – “or I’ll retire on the job and collect my pay for the next 26 years“. Trying to encourage us to put pressure on the government to change, because it moves so slowly. Talks about how difficult his first year working for the government was, how he was in denial about being in the public service. However, through blogging and finding his personal voice (buried under bureaucratic bullshit) he was able to connect with “fallen comrades” and started to build respect – which he used to try and tear down walls. Finally he started to connect with the job, and now he’s excited to go to work every day. He uses social media technologies to try and make the government more effective but it’s a drop in the bucket. What we can achieve collectively is far greater than what we can do on our own, we need to try and envision new ways to do stuff.

The goal of his talk was to be a call to action – a demand that we step up our civic participation and get our hands dirty. If you work in the government, be willing to think and act in color in a system that’s black and white. If you’re not in the government, you need to help to change the game – more pressure from the public is needed in order for the government to become more open and transparent – come up with ideas! Public servants need to be more engaged, and make change faster.

Improv and Everyday Life

Improv is increasingly popular – businesses want it, although they’re not sure why. Thinking on your feet, being able to work off the cuff and have intelligent things to say is helpful, great skill for job interviews – as such, Al owes every job he ever had to improv, especially those that weren’t improv related.

Another word is “Yes” – positivity. Things happen when you say yes. If you say no, nothing goes everywhere. He thinks we’re at the start of a trend towards positivity, which will carry us through the next decade. It’s important to say yes because it makes stuff happen. Pessimists make great stand-up comics – but lousy improvs. Accept the challenge, move forward and defeat it. Yes it involves risks, but risks motivate. There’s the potential for failure, but celebrate your failures – if you’re celebrating, the audience is laughing with you. The wost thing to be on stage is boring.

Concludes: MacGyver was an improv – didn’t worry about what he was going to do, just went for it and it was great. Make more improv in your every day life

Last week, and at the start of this week I was feeling really worn out and disillusioned. Things were taking longer than they should, and despite working a lot and effectively I really wasn’t making the progress I wanted to be. I felt like I wasn’t achieving anything. What this really means, is that on Monday I worked from around 8 in the morning to 11pm at night (- perhaps 2 hours) and yet didn’t cross anything off The List. Tuesday I started a little later, but ultimately didn’t cross anything off the list either. Or Wednesday.

I feel this real need to make progress, achieve something concrete, day in, day out. I’m aware that as a grad student there’s a risk of ending up at this place where you show up but nothing concrete happens, and this continues until you’ve been there for several years and people joke about whether you’re ever going to graduate.

I don’t want to be that person.

My far off goal, is finishing my thesis. It’s impossibly far away, and too large to conceptualize, so I have to break it into smaller, manageable tasks that mean I’ll make it, in increments. Like reading a paper a day. Coding a new visualization. Writing up all the papers I’ve read that are covered in notes into my work-in-progress. But then sometimes I end up spending a week on stuff that doesn’t help achieve these goals – like marking, or a ridiculously large assignment for the course I have to take. And then at the end of the week I look back and think, well I worked really hard, and I got this done, but in a months time (or even just another week) will anyone care? Will I care?

It’s frustrating. And so every day, I set myself an unrealistic list of tasks. If something (for example, the presentation we made this week) takes longer than expected and I don’t achieve them, the following day’s list is even more unmanageable. And it continues. This is why the “Week in Brief” and my “Goals” list are so helpful, because when I’m trying to do 10+ high level tasks in a week I have to give myself a reality check and admit, that’s never going to happen.

Setting goals that push me but don’t overwhelm me is something I’m working on. Because when I’m overwhelmed I’m not effective, I’m just overwhelmed. I’m not getting stuff done, I’m not motivated, I’m contemplating hiding from the world and wondering if everything would be OK if there were just 30 hours in the day. Panicking because I think I’ve missed an important appointment when I’ve in fact just misread my calendar.

The irony here? After all that stressing at the start of the week, there’s a chance I might just cross everything off the list this week.

Lesson? Start big tasks at the start of the week. Postpone smaller ones to the end of the week. Achieving large tasks motivates and inspires me to achieve the smaller ones. Vice versa does not work so well. Spend more time doing and less time scheduling.

Update: This will take place on Wednesday 18th and Friday 20th November, 7-9pm. Let me know if you’re interested.

I’m thinking to run a session on this tomorrow, with discussion going on via Wave. Will start at 10 or 11am EST and run for 2 hours, with another 2 hours in the afternoon.

Let me know if you’re interested. I know it’s short notice, so I may push back depending on when people want to do it, but this will happen in the next week or so.

What you’ll need:

  • a Google Wave account
  • Java SDK
  • Eclipse
  • Processing, free download – we won’t be using the IDE that comes with it, but try and locate core.jar

I’ll assume your computer savvy enough to install Java and Eclipse by yourself as this could take up a lot of time in the session.

What we’ll cover:

  • Your first program – “Hello World”
  • Simple types (building blocks)
  • What Object Oriented programming means
  • Getting started with processing, displaying stuff
  • Conditions
  • Loops
  • Global vs. Local variables

This is loosely based on the teaching I’ve done and I have a lot of resources that I’ve created that I’ll share. I have enough to do a whole series of these online workshops, if there’s demand. As it gets cold and nasty outside this could be a good opportunity to learn to code if you’re interested in doing so.

This week my supervisor, two of my office mates (Amir and Payam) and I have been working hard putting together a presentation we’ve recorded for a conference in Algeria on Sunday.

I laid out the slides in Keynote, using my color scheme (luckily the others were OK with the pink). We’ve been impressed with how easy it has been to record in Keynote, although I think due to the number of takes there are some glitches where the audio doesn’t quite match with the slides.

It’s taken longer than expected – I think we all got quite perfectionist, and when checking it the playback always started from the beginning – meaning with each additional person it took longer to check everything was working OK! Also – I hate listening to myself present. I say “So…” at the start of every slide!

The slides are available on slideshare (I’ve embedded it below). You may notice that my section is very similar to the presentation I prepared the other week, although I’ve had to add some text to the slides. You can also download the QuickTime movie here (it’s Benyoucef.mov and note – the first section is in French) my section starts at around 32:30.

As ever – let me know what you think!

CA assignment 3 is now out, and in class today we were looking at the stuff we needed for question 2 (which is ex. 7.1 in the textbook). It’s to manually solve the isomorphism for the two graphs below:

Petersen Graph

Petersen Graph

So I start sketching this out, and then it occurs to me that – ooh, I could easily write some code to validate it for me after I’ve worked it out.

And then it occurs to me that all I’m doing is trying permutations of “abcdefghij” (where the position in the string is the number they’re trying to replace). And if I used Haskell and the handy “permutations” method I could just code it in a brute force manner, and it would solve it for me.

So of course that’s what I did. This is a programmer thing, I think. We work out how to automate things and then we automate them. Yes, it probably took me longer to write the code than it would have to solve the thing manually. I was quite shocked that it ended up being over 60 lines (including white-space, but still… this is Haskell) although I did include my data (the edges) and methods to validate them. I think it could be done with less code, my Haskell is a little rusty.

I find programming much more satisfying than drawing the graph countless times until you get the right answer. Also, my code is purring away now generating all the valid permutations.

In case you’re interested… here are the first 20:

(‘c’,0),(‘d’,1),(‘e’,2),(‘f’,3),(‘g’,4),(‘b’,5),(‘i’,6),(‘h’,7),(‘a’,8),(‘j’,9)

(‘e’,0),(‘d’,1),(‘c’,2),(‘b’,3),(‘h’,4),(‘f’,5),(‘i’,6),(‘g’,7),(‘a’,8),(‘j’,9)

(‘d’,0),(‘e’,1),(‘f’,2),(‘a’,3),(‘i’,4),(‘c’,5),(‘h’,6),(‘g’,7),(‘b’,8),(‘j’,9)

(‘f’,0),(‘e’,1),(‘d’,2),(‘c’,3),(‘g’,4),(‘a’,5),(‘h’,6),(‘i’,7),(‘b’,8),(‘j’,9)

(‘a’,0),(‘f’,1),(‘e’,2),(‘d’,3),(‘i’,4),(‘b’,5),(‘g’,6),(‘h’,7),(‘c’,8),(‘j’,9)

(‘e’,0),(‘f’,1),(‘a’,2),(‘b’,3),(‘h’,4),(‘d’,5),(‘g’,6),(‘i’,7),(‘c’,8),(‘j’,9)

(‘b’,0),(‘c’,1),(‘d’,2),(‘e’,3),(‘h’,4),(‘a’,5),(‘g’,6),(‘i’,7),(‘f’,8),(‘j’,9)

(‘d’,0),(‘c’,1),(‘b’,2),(‘a’,3),(‘i’,4),(‘e’,5),(‘g’,6),(‘h’,7),(‘f’,8),(‘j’,9)

(‘f’,0),(‘a’,1),(‘b’,2),(‘c’,3),(‘g’,4),(‘e’,5),(‘i’,6),(‘h’,7),(‘d’,8),(‘j’,9)

(‘b’,0),(‘a’,1),(‘f’,2),(‘e’,3),(‘h’,4),(‘c’,5),(‘i’,6),(‘g’,7),(‘d’,8),(‘j’,9)

(‘c’,0),(‘b’,1),(‘a’,2),(‘f’,3),(‘g’,4),(‘d’,5),(‘h’,6),(‘i’,7),(‘e’,8),(‘j’,9)

(‘a’,0),(‘b’,1),(‘c’,2),(‘d’,3),(‘i’,4),(‘f’,5),(‘h’,6),(‘g’,7),(‘e’,8),(‘j’,9)

(‘e’,0),(‘d’,1),(‘c’,2),(‘g’,3),(‘f’,4),(‘h’,5),(‘i’,6),(‘b’,7),(‘j’,8),(‘a’,9)

(‘e’,0),(‘h’,1),(‘j’,2),(‘g’,3),(‘f’,4),(‘d’,5),(‘b’,6),(‘i’,7),(‘c’,8),(‘a’,9)

(‘j’,0),(‘h’,1),(‘e’,2),(‘d’,3),(‘i’,4),(‘g’,5),(‘b’,6),(‘f’,7),(‘c’,8),(‘a’,9)

(‘g’,0),(‘c’,1),(‘d’,2),(‘e’,3),(‘f’,4),(‘j’,5),(‘b’,6),(‘i’,7),(‘h’,8),(‘a’,9)

(‘d’,0),(‘c’,1),(‘g’,2),(‘j’,3),(‘i’,4),(‘e’,5),(‘b’,6),(‘f’,7),(‘h’,8),(‘a’,9)

(‘h’,0),(‘j’,1),(‘g’,2),(‘c’,3),(‘b’,4),(‘e’,5),(‘i’,6),(‘f’,7),(‘d’,8),(‘a’,9)

(‘g’,0),(‘j’,1),(‘h’,2),(‘e’,3),(‘f’,4),(‘c’,5),(‘i’,6),(‘b’,7),(‘d’,8),(‘a’,9)

(‘d’,0),(‘e’,1),(‘h’,2),(‘j’,3),(‘i’,4),(‘c’,5),(‘f’,6),(‘b’,7),(‘g’,8),(‘a’,9)

For last week:

  • Finish CA Assignment 2
  • Read 5 papers
  • Code more on Viz
  • Write more on Thesis
  • Get SVN working fully
  • More on website
  • Clear giant e-mail mountain
  • Start tracking morning mood and exercise on Mycrocosm
  • Go to my first hockey game!

Also:

  • Cleaned out fridge
  • Swam butterfly again for the first time since I injured my knee (super happy about this!)
  • Spent a lot of time debugging other people’s code!
  • Met with the girls from WISE, hopefully we can get some stuff moving.

Another week where things took longer than they should have (CA Assignment), and plans were derailed (4 hour lab). I’m frustrated at how much I’m getting distracted by this kind of thing, and how it’s cutting into my quiet-focus-time which I need to work on big tasks. I haven’t had a completely clear day since last Monday, and won’t have another until next Monday. This is a problem.

For this week:

  • Finish putting together presentation, record and upload it.
  • 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!!)
  • Clear new email mountain.
  • Code new viz idea.
  • Ignite!

Archives