Want to take a spin in the good old git time machine? Here are some useful way to do that.
git show --name-only [sha]
- Show which files have changed between the referenced [sha] and the current HEAD.
git log --grep=[stuff]
- Show any commits where the commit message matches the regular expression [stuff].
git log -p [filename]
- Show the log (commits and changes) for a the file [filename]. You can add any
log arguments to this, such as 25 for only the most recent entries in the log:
git log -p -25 README.md.
git grep [stuff]
- Use the power of git to search for any matches of the regular expression [stuff] in the repo.
- If the results are too difficult to read in your terminal, you can pipe the results to your test editor. For example, to pipe the output to Sublime from OSX's Terminal:
git log -p -2 README.md | subl.
- Or you can pipe those results to a file to save them. For example, to send the results to a file in Windows' Command Line:
git log -p -25 > file.txt
Have you been thinking about contributing to open source projects, but didn't know where to start? Here are a few ways to get started. find projects which are actively welcoming new contributors by highlighting their "starter" issues - bugs which are small in scope or otherwise make a good introduction to the project.
Way back in 2013, I decided that it would be good for my professional development for me to attend some conferences. I had just started a new job, with some savings left over from unemployment time, and so I even had some budget to attend conferences on my own dime. I had met Carter Rabasa (founder and long-time organizer of CascadiaJS) by attending the SeattleJS meetup in the previous year. So I arranged a trip to Vancouver, BC for CascadiaJS in November. On the Hacker Train up from Seattle to Vancouver, I met Tracy Hinds, who had organized the Hacker Train all the way up from Portland.
CascadiaJS 2013 was an absolute blast. The talks were interesting and educational, and I met a bunch of new (and now long-time) conf-friends and even got mistaken for a speaker! I followed new friends on Twitter, and CascadiaJS on Github. Not too long after coming home, I wrote up and posted some of my notes and published them on this blog. I knew I would be ready to do it again in 2014.
And I did. CascadiaJS 2014 was in Portland, and I bought a ticket and lodging nice and early. Beyond being excited about attending, I had even begun to think I might be able to speak. I had even submitted a talk. It was pretty awful, but that's the first step. 2014 was just as wonderful as the last year - I made sure to thank Tracy and Carter (head organizers for that year) personally, since I knew it was a ton of work to organize something so big and so lovely. (Organizing a conference is kinda like organizing a wedding, every year.) Since I followed the CascadiaJS repo, I was able to observe many parts of the organization process, and contributed some (hopefully!) helpful thoughts for the next year.
So, there you go. I got involved by attending first, providing useful feedback to the organizers, and participating in the community.
I got my tinylab last week; it's a nifty little prototyping board with an Arduino Leonardo and a bunch of embedded components that was funded on IndieGoGo. So naturally I wanted to get Johnny-Five working and start fiddling with the tinylab as soon as possible. Unfortunately, it seems like the hardest part of every hardware project is the grand upgrading of the softwares that must proceed fiddling. Here's the process that worked for me.
- Re-install Node. My Node installation was a few versions old, and somehow npm was missing. So I went ahead and installed Node.js from https://nodejs.org/en/download/. I decided to live dangerously and install the "Current" version rather than the Stable one.
- Upgrade Arduino.app. My Arduino install was older than the Leonardo, so I needed to upgrade it too. I got version 1.6.10 from https://www.arduino.cc/en/Main/Software.
- Upgrade npm packages.
npm outdated showed that several packages (including Johnny Five) were out of date. This required a few rounds of
- Write the Johnny Five code. I checked the excellent Johnny Five docs and wrote this code for the first LED on the tinylab.
var five = require("johnny-five");
var board = new five.Board();
var led = new five.Led(13);
This should make LED1 (on pin D13) pulse on an off. At first I tried using
"D13" to address the LED (since that's what's silk-screened on the board) but it was just
13 that worked.
Here is some tinylab documentation that might come in handy next time:
A while ago, I interviewed for a job with a company that I was absolutely in-love with. I'd been excited to see that they were looking for a front-end developer and I applied right away.
Back to the interview, we'd gone though a few basic questions and the interviewer had moved on to the algorithm questions. It was a little more complicated than Fizz Buzz, but it wasn't too tricky. But I flailed around for a while trying to both understand what the interviewer was asking, as well as trying to logic out the solution. I didn't solve the algorithm easily enough, and I didn't get any further in the interview process.
Why evaluate a front-end developer based on a algorithm? It's such a very small part of the job, and especially over a video conference after a full day of work, and it's the wrong test to get the front-end developer to demonstrate their best. It's like evaluating an NFL kicker based on their tackling skills - sure, they need to do it sometimes, but a proper blocker will always be more skilled at tackles.
Bottom line - your events (from meetup to conference) and even your open source projects need a code of conduct. What is a code of conduct?
- It is an explicit statement about what is - and isn't - appropriate in your space. It sets a social contract that every attendees agrees to, and encourages active enforcement of that social contract.
- It is a promise from you (the organizer) to me (an attendee or speaker). If you break that promise, I am 100% free to leave your project / event without any repercussions.
- It compels a response, even when the organizer would rather ignore a situation.
Let me tell you precisely how a code of conduct works to change interactions during an event.
Last year, I attended a conference as a workshop volunteer. After the workshop, a speaker from the previous day wanted to ask me some follow-up questions about the workshop. While he spoke a little English, he wanted me to step outside to the plaza where his translator was. I agreed.
Let's review the power dynamic here: me = unimportant volunteer, him = very important speaker.
He was from a country where (I suppose), it's common for men to escort women by leading them by the elbow. While we were walking outside, he put his hand on my elbow, and I (being perfectly capable of finding the doors outside) removed it. He again put his hand on my elbow and tried to lead me towards the door. I again removed it, and looked him directly in the eyes and said "no". I then stomped through the doors and found the translator. With the help of the translator, the speaker apologized if he had offended me. I said that I was fine and I answered his questions from the workshop.
Here is how the conference's code of conduct worked: I knew that - regardless of any power imbalance - the conference had my back. I was empowered to enforce my own boundaries and I did so. I was a bit irritated by the incident, but I took care of it myself. Situation resolved, no escalation, no problem. That's how a code of conduct works.
I'm curating CSS Day at CascadiaFest this year, and earlier this month we finished our speaker selection process. Since I've evaluated hundreds and hundreds of proposals for CascadiaFest, I thought I'd share what I'm looking for when I evaluate a talk proposal. At CascadiaFest, our selection process is masked; we do most of the evaluation before revealing the identity of the person who wrote the proposal. (Though it's sometimes possible to guess who has submitted the talk.) Naturally these thoughts are only about my process, and do not represent any other curators or selection committee members.
Does the proposal give me a sense of what you'll actually be talking about on stage?
Screen writers are often told "If it ain't on the page, it's not on the screen." Films and plays often follow the advice to "show, don't tell". Once I watched an episode of "Next Food Network Star" (or something like that) and the experienced host gave this advice to the contestants: "Don't describe the food as 'delicious', 'yummy', or 'fantastic'. Use words with meaning like 'chocolaty', 'tender' or 'flaky'."
All of these ideas apply to writing talk proposals too. I'm not going to infer things that you haven't mentioned in your proposal. Don't tell me that you're an awesome speaker; show me with previous talks. Use words that are clear and descriptive.
Pretend your reviewer is on an international flight with no wi-fi, and can't look up "polymorphic". (True story.) No one should have to read 3 articles to understand the core concept of your talk - you should be explaining it.
Does the proposal convince me that you can pull this talk off? Does it demonstrate knowledge of (or passion for) the topic? Don't rely on a bunch of keywords and memes in your proposal; tell me about your history with the topic, or the insights that you've had.
Can you expand on the techniques you intend to discuss? How will your solutions stand out from others in the same space? If your proposal asks some questions, include some answers to those questions to demonstrate that you've got a useful perspective on the topic.
Does the talk proposal boil down to "Getting Started with XYZ" where XYZ is some framework or tool? These talks have their place, but I'm really not a fan of them. I look at how relevant your talk will be to people who are not using that framework, because the majority of the audience at CascadiaFest is not using your favorite framework.
Use your very best written English. Organizers often see that the care taken in writing the proposal reflects the care taken in preparing for the talk. Get someone else to proofread your proposal - buy dinner for your friend with the snootiest grammar sensibilities, or exchange proofreading duties with someone else submitting a talk. Proofreading your own talk is just as difficult as security-testing your own software.