Recommended Reading
Jun 13, 2021
Over the years I’ve recommended these books to many people. Each one has changed how I approach my work, those around me, and myself. The list is unordered, each book was impactful at one point in my life, and the order you choose to read them depends...
One-on-One Meeting Template
Jun 5, 2021
I’ve been a manager for over four years now, and I still really enjoy it. I thought I should share some of the tools I’ve used with others and hopefully get some feedback as well!
I schedule my one-on-ones (1:1s) for 30 minutes every week, but the...
Free Coaching Sessions Again!
Jun 1, 2021
Earlier this year I offered to coach four women over six months. It's been such an interesting and rewarding experience that I'm doing it again!
I'm particularly interested in coaching women tech managers. This is open to current managers, or individual...
Preparing for our coaching session
Jan 31, 2021
This is written mostly for the four women who are part of my community coaching program. It will mostly apply to anyone doing coaching with me, and might be helpful to review before a coaching session with others as well!
Pre-work
Before each session...
2021 Coaching Sessions
Jan 1, 2021
Hello and welcome to 2021!
This year I'll give back to the amazing community in a different, covid safe, way. I'm offering four people six coaching sessions! I got a lot of value attending coaching sessions; so much so, that I took a course on how...
Three tips for reports to improve one-on-ones: Part 1
Jan 18, 2019
Having better one-on-ones (1:1s) is usually left up to the manager. There are loads of articles and books written with the manager in mind. But focusing exclusively on only one of the attendees drastically reduces how useful the meeting can be. In...
React JS: what is a PureComponent?
Jan 14, 2018
Early on, React developers had the idea of “pure” components. This concept went by a variety of names (stateful/pure, smart/dumb, container/presentational, etc.) but were all fairly similar. These components still used the React.Component
class, but...
JS: ES6’s spread operator for objects
Jan 2, 2018
Over two years ago I wrote about destructuring assignment, which has been one of my favourite features of ES6. Since then I’ve also come to value destructuring’s “sibling” feature - the spread operator. Although you can use the spread operator on other...
New role (same company)
Oct 14, 2017
You may recall I started working at Atlassian in March of 2015. I’ve been a front end developer for them for about two years, but have wanted to move to a team lead position for a little while. I was offered the position, and spent three months being...
Goal setting and tracking
Feb 21, 2017
We’re almost two months down in 2017. How are those New Year’s resolutions going? I’ll fully admit that I’m terrible about keeping up with things like that. But I’m working at getting better. This framework has helped me stay on target for a few things...
How does React decide to re-render a component?
Feb 8, 2017
React is known for its performance. Because it has a virtual DOM and only updates the real DOM when required it can be much faster than updating the DOM all the time, even to display the same information. However, React’s “smarts” only go so far (at...
JS: Promises/A+, jQuery Deferreds, and errors
Jan 29, 2017
As I said, I’m having difficulty understanding all the jargon associated with promises. This post is a continuation from JS: promise and deferred and we’ll take a deeper look into how Promises and Deferreds handle errors. You can read about the history
Presentation notes
Jan 12, 2017
Way back in 2015 YOW! granted me a ticket to a one day public speaking workshop. The workshop description had me a little uncertain (after all, I had never done any conference speaking before), but I signed up and took a leap of faith that Damian Conway
JS: Promises/A+ and. jQuery history
Jan 1, 2017
In my last post I listed a bunch of confusing things about promises. That time I clarified “deferred” and “promise” and this time I’ll start writing about Promises/A+ and jQuery’s promises.
Promise or promise?
The concept of a promise has been around...
JS: promise and deferred
Dec 22, 2016
I’m struggling with promises. A lot.
One of the things that’s super confusing about promises is the jargon associated. We’ve got all kinds of things: promise, deferred, Promises/A+, jQuery promise, fulfil, settle, reject, resolve, fail, catch, then...
Upgrading to Middleman v4
Dec 10, 2016
My blog runs on Middleman - I really like the way they’ve set things up, and it feels very familiar to me since it’s written in Ruby. However, v4 came out almost a year ago, and I never upgraded. I tried half heartedly a couple of times, but never...
YOW! Day Two
Dec 9, 2016
The other volunteers and I got to sleep in a bit this morning and only had an 8:15 start time. Yawn! At least there’s free tea and coffee! After setting up a few odds and ends it was time to start shepherding people into the main room for the third...
YOW! Day One
Dec 8, 2016
In Australia we have a well known conference called YOW!. Yes, the name is in all capitals and contains an exclamation point; no it's not ten times more exciting than any other tech conference. I’d always assumed this conference had more of a Java...
Javascript: pre-Promises
Nov 30, 2016
Promises have confused me for quite a while, so I decided I should spend some time thinking about them. Turns out they’re really powerful, and there’s a fair bit going on with promises. This first post has no promises code, but instead gives some general...
ReactJS: Props vs. State
Nov 27, 2016
I’ve been using ReactJS with Redux at work recently, and I have quite a few questions about how it all fits together. I figured I’d start small, with just some React questions and see how it goes.
This “props vs. state” question is pretty common for...
Ela Conf - closing thoughts
Nov 14, 2016
Well, Ela Conf 2016 is over and done. It’s been just over a week since I attended - time to write up some musings from the event!
Topics
Ela Conf is very much about non-technical topics for technical women. Their tag line is “Empowering more women...
Ela Conf - day two
Nov 5, 2016
We started with a light breakfast and moved right into the talks. Again, so many positive vibes and happy voices. Everyone is clearly excited to be here!
We started off with some stories from the organisers about how they got into tech and why they...
Ela Conf - day one
Nov 4, 2016
Friday night was for talks and Lightning Talks. It was pretty quick, 7-8:30 or so, but a great way to meet some of my fellow attendees and kick off the good vibes for the evening. Props to the organisers who required all of the lightning talk presenters...
Attending Vogue Codes
Oct 15, 2016
A couple weeks ago I was invited to attend Vogue Codes, an event for women in technology. I was lucky enough that my boss let me have the day off with almost no warning (thanks boss, and thanks Atlassian!). I was again lucky that my coworker told me...
Workshop for conference proposals
Feb 21, 2016
Last Wednesday I ran a workshop to help people come up with and refine conference talk ideas and then start working on a proposal for it. In preparation for the workshop I wrote a worksheet to help people come up with proposal ideas. This week I’ll...
How to come up with conference proposal ideas
Feb 14, 2016
Programming theory: Evaluation strategies
Nov 25, 2015
This is a topic I learned at university, but didn’t fully understand all the repercussions of until later. This post is to help you understand the differences and to help me remember them :)
Let’s get started!
But wait, what’s an “evaluation strategy...
JS: Destructuring assignment with ES6
Nov 13, 2015
In my last post we talked about enhanced object literals with ES6. This time around we’ll cover destructuring assignment, another bit of sugary syntax that’s available in ES6. Again, we’ll build up increasingly complicated examples.
Vanilla JS
Since...
JS: Enhanced object literals
Nov 1, 2015
Here’s some nice ES6 syntactic sugar for creating object literals. I found it hard to read at first and needed a few examples before I could understand what was happening. It’s got a few uses, so we’ll build up more and more complicated examples to...
CSS: Flexbox in action - Bitbucket Server pull request header
Oct 20, 2015
I recently wrote about using the flex-box
rule in CSS. That was a practice round because I knew I needed to use flexbox at work in the future. Well, the time has come!
As you might know, I work for Atlassian on the Bitbucket Server product. Today...
JS: new keyword and functions
Oct 12, 2015
I’m still slowly making my through the javascript interview questions, despite having started a new job on JS. There's just so much I don’t know! Maybe one day I'll actually interview someone with these questions...
Alright, let’s get to today’s question...
Bower link
Sep 28, 2015
At work today I used bower link
and wanted to know more about how it works. I'm not going to talk about why you should use Bower, how to use it generally, or really anything useful for most people. I'm only going to talk about the bower link
command...
Languages, cultures, and opinions
Aug 31, 2015
I wrote Ruby
I have a lot of shirts that have “Ruby” on them from past Rails Girls events. I love wearing them. Partly I like the style of the script (thanks Carla Hackett for the beautiful lettering!) and the fact that the shirts look girly and are...
JS: ES6’s string templates
Aug 18, 2015
How are the new string templates better?
The traditional JS way of working with strings leaves a lot to be desired.
variables
It’s not easy to read...
1
2
var someVar = "world";
console.log("Hello" + someVar + "!");
newlines
It doesn’t handle...
JS: ES6 Const keyword
Aug 2, 2015
A little bit of background
ES6
ECMAScript 6 (ES6) introduced a lot of new JS keywords to play with. Generally these changes make JS a bit more approachable for new JS developers by making JS more similar to other programming languages.
Constants
Intro to programming: If statements
Jul 24, 2015
Explanation
Although computers live in a very predictable world of 1s and 0s they need to be able to handle uncertainties.
If a customer has enough money in his account then the ATM should give money out.
If a shirt is on sale then the shirt’s...
CSS: What is Block Formatting Context (BFC)?
Jul 12, 2015
Time for the next CSS interview question from the list of front end interview questions. My goodness that repo has a LOT of questions to get through!
What is Block Formatting Context (BFC)?
It seems that BFC is something that I’ve always assumed...
JS: ES6’s let vs. var
Jun 28, 2015
This isn’t a “real” interview question from the list, but I reckon it’s a good one. Plus it came up at work today and I didn’t know the difference. So here it is in question form:
What’s the difference between ES6’s let
and “traditional” JS’s var
Periodic site maintenance
Jun 15, 2015
Every now and then I spend some time going through my site to make sure things are working as expected. I might tweak something, make some SEO updates, refactor messy code, or fix something that was broken. Ususally days like this are pretty unstructured...
Intro to Programming: Booleans
Jun 1, 2015
Explaination
As you’ve probably heard, computers think in 1s and 0s. There is no middle ground, there’s no 0.5, no 1.1, no 1 and 0 at the same time. 1 or 0, that’s all they’ve got. It turns out, 1s and 0s are pretty powerful.
Humans have the same...
CSS: Flexbox
May 18, 2015
I recently learned about flex-box and have been doing some research into it. Hopefully I'll write up a “All about flexbox” post, but for now I want to go through a hands on example of using flexbox in the wild.
What are we working on?
I want to convert...
CSS: the box model
May 2, 2015
The blog topic (like most of my interview question posts) comes from the Front-end Job Interview Questions. Today I’m moving away from JS to talk about CSS’s box model.
Explain your understanding of the box model.
Well, first off what’s this “box...
JS: AMD and CommonJS
Apr 23, 2015
What’s the difference between AMD and CommonJS?
Disclaimer: I’m only going to talk about how this impacts the browser. I will not talk about Node.js, although I know it’s relevant to this discussion. I don’t know enough about Node.js to cover it properly...
Rails Girls event manager
Apr 9, 2015
Hi there!
I’m looking for something that Rails Girls could use to manage our events, particularly user sign ups. In the past we've cobbled together something from various sites. Those sites are good on their own, but the whole system is pretty flimsy...
JS: How can you accept optional parameters?
Apr 3, 2015
There’s more than one way to skin a cat, and there’s more than one way to accept optional parameters. (Editors note: I do not condone skinning cats!)
Object
Coming from a Ruby background, I find this option the most intuitive. You can create an object...
In programming, what is an object?
Mar 26, 2015
As promised in my last blog post: intro to objects.
Objects
Many languages have the concept of an “object.” It’s a way of organising code based around objects (things) with similar characteristics. As in, most dogs have four legs, most cars can drive...
JS: What data types are supported in Javascript?
Mar 22, 2015
According to the latest ECMAScript release, these are the data types:
- Boolean
- Null
- Undefined
- Number
- String
- Symbol
- Object
Ok, let’s run over those one by one:
Boolean
Pretty standard across all languages, booleans are true
and false
. They're often...
JS: What is Javascript namespacing? How and where is it used?
Mar 17, 2015
What is Javascript namespacing? How and where is it used?
Well, what is namespacing?
Namespacing is a way of organising your code. It organises concepts and ideas into a group and gives the group a name.
So rather than having everything dumped in...
JS: Split vs. Splice
Mar 12, 2015
What’s the difference between split
and splice
?
Well, what does split
do?
Much like the name implies split
breaks something into pieces. The split
method is used for strings in JS. It has a few optional parameters, so let’s see what the simplest...
Rails Girls - March 2015
Mar 8, 2015
Phew! Rails Girls Sydney, March 2015 was on Friday and Saturday, I wanted to update you
Usually the Sydney Rails community runs a Rails Girls event every four-ish months. I've always enjoyed mentoring at them, but I've never organised one before ...
JS: How does JSONP work?
Mar 1, 2015
How does JSONP work?
Let’s start smaller: What does JSONP stand for?
JavaScript Object Notation with Padding
Hopefully you already know about the JSON part, if not check out this Stackoverflow answer. Go ahead, I'll wait :)
We'll talk about the...
Algorithms study group
Jan 28, 2015
Last year I ran two study groups, one for JS and one for intro to programming. I also gave a talk about starting a study group at Girl Geek Dinner. I was thrilled when my friend Daphne decided to organise a group on her own to study algorithms.
The...
I have a new job!
Jan 22, 2015
Well apparently all this studying has paid off! I’ve been interviewing with a few companies since before Christmas, and I’m pleased to announce that today I accepted an offer from Atlassian. I’ll be working as a junior front end developer on Stash...
JS: How does ajax work?
Jan 10, 2015
How does AJAX work?
Let’s start smaller: What does AJAX stand for?
Asynchronous JavaScript and XML (I think using the “a” in “and” is a little bit of a cheat, but there you go.)
So how does it work?
After loading, the client uses JavaScript to...
JS: When would you use document.write()?
Jan 6, 2015
When would you use document.write()
?
First, what is document.write()
?
As you might have guessed, document.write()
writes to the document (a.k.a web page). It takes the content you want to write as a parameter. An invocation could look like this:
Retro from my coding test
Jan 2, 2015
I've been looking for a new job over the past month. As part of my interview process I had to do an at home coding exercise. The directions were simple, but disconcertingly vague:
- The application should run successfully in modern browsers. Your app...
JS: don’t touch the global scope
Dec 30, 2014
One of the last installments from my series on javascript interview questions.
Why is it, in general, a good idea to leave the global scope of a website as-is and never touch it?
Form most languages, global variables are considered a “bad thing”...
JS: ternary expressions
Dec 26, 2014
Why is it called a Ternary expression, what does the word “Ternary” indicate?
Let’s answer the second question first: what does the word “ternary” indicate? According to Wikipedia the word “ternary” comes from the n-ary word setup. Other examples...
JS: same-origin policy
Dec 20, 2014
Explain the same-origin policy with regards to JavaScript.
The same-origin policy helps prevent malicious attacks by stopping code from another site executing on your site. An attacks like this is known as a Cross Site Scripting attack.
How does...
JS: document load vs document ready
Dec 16, 2014
Difference between document load event and document ready event?
$(document).ready()
fires when the HTML has finished loading. You can’t interact with the DOM before the HTML has finished loading, so we keep all our JS interactions wrapped up in the...
JS: Explain “hoisting”
Dec 13, 2014
I’m continuing my series of JS interview questions. These posts are proving very good practice for the interviews I’m doing!
Explain “hoisting”
Hoisting is when a JS declaration is lifted (“hoisted”) to the top of its scope by the JS interpreter...
JS: Async Google Adwords conversion
Dec 10, 2014
How can I trigger a Google Adwords conversion when the page is loaded asynchronously?
I've been working with Google Adwords at work this week (yay learning!). My first task was to add a “tracking pixel” to a thank you page after a user has given us...
JS: use strict
Dec 8, 2014
What is "use strict";
? what are the advantages and disadvantages to using it?
If you put "use strict";
at the top of your code (or function), then the JS is evaluated in strict mode. Strict mode throws more errors and disables some features in an...
JS: feature detection vs. inference vs. UA string
Dec 4, 2014
What’s the difference between feature detection, feature inference, and using the UA string?
Let’s start smaller...
What is feature detection?
When you check if a certain feature exists, that’s feature detection.
We need to write code that checks...
JS: .call vs. .apply
Nov 30, 2014
What’s the difference between .call
and .apply
?
Let’s start with the similarities.
What are .call
and .apply
?
Both methods allow you to invoke a function and pass parameters through.
1
2
3
4
5
6
function printer(message) {
console.log(message...
JS: ways to create objects
Nov 26, 2014
What are a few different ways to create new objects?
Well it turns out this topic has been covered quite a lot (unlike my last post about host vs. native objects). I don’t really have anything to add to the conversation, so I'll just give you the...
JS: don’t extend JS objects
Nov 25, 2014
Why is extending built in JavaScript objects not a good idea?
Turns out there’s lots written on this topic (lucky for me!), be sure to check out the references section at the end.
What is “extending an object”?
When you add functionality to an object...
JS: Describe event bubbling
Nov 20, 2014
Describe event bubbling
Event bubbling occurs when a user interacts with a nested element and the event propagates up (“bubbles”) through all of the ancestor elements.
HTML
1
2
3
4
5
<div class="ancestor">
<div class="parent">
<button> Click...
JS: host vs. native objects
Nov 16, 2014
What’s the difference between host objects and native objects?
I didn’t find as much lot of information about this topic as some of the other JS interview questions. So here’s my current understanding, but please comment if I've misunderstood or there...
JS: attribute vs. property
Nov 10, 2014
What’s the difference between an “attribute” and a “property”?
As usual, let’s start smaller.
What is a property?
JS DOM objects have properties. These properties are kind of like instance variables for the particular element. As such, a property...
JS: Anonymous vs. referenced vs. declared functions
Nov 2, 2014
Anonymous
Anonymous functions are typically used as callbacks.
So what’s a callback?
I’m glad you asked!
1
2
3
4
5
6
7
8
function takesACallback(callback) {
// do some interesting things here
return "The callback says: " + callback();
}...
JS: == vs. ===
Oct 25, 2014
What is the difference between == and ===?
Triple equals checks for type and equality.
Double equals only checks for equality.
What? How can you check for equality without checking type?
JS uses type coercion to check for equality without checking...
JS: what is a closure?
Oct 18, 2014
What is a closure, and how/why would you use one?
A closure is a way of keeping access to variables in a function after that function has returned.
Fantastic, now again, not as a dictionary.
Usually you lose access to variables when a function returns...
A display of Scott Aaronson’s Timeline of computer science
Oct 13, 2014
The timeline might take some time to load, please be patient. I did not pick any of these events, they come directly from Scott...
JS: explain Function.prototype.bind
Oct 10, 2014
Explain Function.prototype.bind
I hadn’t heard of bind
before, so I've just been reading up on this one. Woah. It’s pretty cool! Why hasn’t anyone mentioned it before?!
Official answer
bind
allows you to set which object is treated as this
within...
JS: null, undefined, and undeclared
Oct 6, 2014
What’s the difference between a variable that is: null, undefined, or undeclared?
Here’s a TL;DR version I found quite useful when writing this.
I think they make more sense in the opposite order: undeclared, undefined, and null. That’s the order...
JS Immediately Invoked Function Expressions
Oct 1, 2014
Explain why the following doesn’t work as an IIFE: function foo(){ }();
What does “IIFE” even stand for?
IIFE stands for Immediately Invoked Function Expressions
Great, so what are IIFEs?
An IIFE is an anonymous function that is created and then...
JS prototypal inheritance
Sep 30, 2014
Explain how prototypal inheritance works
JS objects each have a “hook” to its parent object, or prototype. Obviously everything the child object defines it has access to, but it also can climb up the prototype tree to access its parent’s (or ancestor...
JS "this"
Sep 29, 2014
Explain how this works in JavaScript
Huh, well that’s something I've been trying to figure out as I work with JS. this
still doesn’t make perfect sense to me. But here’s my current understanding...
this
is the context the code is running in
However...
JS: event delegation
Sep 25, 2014
I’m continuing my JS learning and found a list of front end interview questions. There’s a section devoted to JS on there for me to work through. If they’re important enough to know in an interview, they’re important enough for me!
Explain event delegation
Sublime Text Macros
Jun 18, 2014
My coworker users vim, and has a snazzy macro to put a binding.pry
wherever he using a keyboard shortcut. I thought it was a neat trick (and he mentioned something about Sublime not being a real editor), so I decided to implement it for Sublime as...
Next up: Front end
Mar 13, 2014
For the next 12-14 months I'd like to learn front end dev.
I've been doing Rails for a little over 2 years now, and almost all of my training and experience has been heavily back end oriented. Pretty much everything I learned at uni was for back...
RubyConf - a look back
Mar 7, 2014
It’s been almost 3 weeks since RubyConf. Feels like longer. I wrote a quick review after the event, but that post didn’t do RubyConf justice.
Really, I’m not sure what made RubyConf so great. The talks? Meeting new people? Chatting with existing...
Sublime Auto Indent
Feb 27, 2014
I recently discovered how to get Sublime to fix indentations for you! Since I spend a certain amount of time each day pushing characters left and right this was pretty exciting. Hope you find it useful!
In Sublime, under Preference
select Key Bindings...
RubyConf Australia 2014
Feb 23, 2014
I just finished RubyConf Australia, and what a wild ride! I've never been to a conference before, and I was a bit nervous what it would be like. Would people be welcoming? Would I know where to be? Would everyone be taking notes, or no one? Turns...
Rails Girls Next
Feb 19, 2014
Wahoo! Rails Girls Next happened without a (major) hitch today! I am so happy with how it went, and to have helped with these girls' continuing Ruby education.
The event
I've shared the slides used for keeping track of time, so you can see the...
Starting a CS Study Group!
Feb 13, 2014
I've wanted to run a programming study group for quite a while. Although I love what Rails Girls and InstallFest do, I think attendees find it quite hard to continue learning. They have some support from the community through initiatives like DevHub...
Git Branch Names on Command Prompt
Feb 13, 2014
I often forget which branch I’m on. Sure, I have git branch
aliased (it’s probably one of my most frequently used commands) but sometimes I’m convinced I’m on another branch. A few commits and merges later I find out I was wrong, and it’s time for...
Sublime Multi-Cursor
Feb 3, 2014
I use Sublime. I know, I know, I’m not a “real” dev. Whatever. It works for me. One of my favourite features is the multi-cursor. If you're a fellow Sublime user and aren’t aware of this ability you should really check it out. Look at step 12 for a...
validate vs. validateS
Jan 15, 2014
I stumbled across this validation gotcha a while back, but that was before I had this awesome blog ;) I think this is a pretty big one, hope this help someone!
::ActiveModel::Validations
treats validates
and validate
differently. validates
is used...
TDD Day 5
Jan 9, 2014
What did I do today?
I said at the beginning that I wasn’t a huge fan of TDD. It just doesn’t seem like a great idea to me. Today I took some time to explore that, and it turns out, I’m not the only one. Most people have mixed reviews, and that...
TDD Day 4
Jan 8, 2014
What did I do today?
I’m continuing on at Coders Dojo, today I worked on Roman Numerals. I've heard this problem talked about, but haven’t actually worked on it myself. It was harder than I expected (and involved a lot of Googling for the correct...
Rails Girls Next Planning
Jan 6, 2014
Back in December Elle suggested running a continuation event for Rails Girls, something for the girls who had completed Rails Girls and were looking for something else to push their Ruby/Rails education a bit further. I thought this was a great idea...
TDD Day 3
Jan 6, 2014
I started the next kata at Coders Dojo. I think you're supposed to do katas over and over again, but I didn’t think I'd gain that much from repeating the FizzBuzz kata from yesterday. Maybe when I've got a better hang of things I can go back to FizzBuzz...
TDD Day 2
Jan 5, 2014
What did I do today?
Second day of working with TDD and I actually got to write some code! I tried to work with Coders Dojo, but their web interface only seems to allow Unit Test (we use RSpec at work, so that’s what I'd like to start with), and...
TDD Day 1
Jan 4, 2014
Background
I've been feeling for a while now that I'd like to be a better programmer. Right now I can make stuff happen, but I usually don’t think it’s particularly well designed. Since it’s a new year, full of possibilities, I thought I'd spend...