Did I mention I’m going to JSConf this year? It starts tomorrow, so I maybe could have posted this sooner, but this is my first time going, and I’m stuck in an airport waiting for my flight’s crew, so let’s do this.
I’m one of those people that reads over the entire schedule before the conference and plans all the talks I plan on attending. This year, there are three talks that I consider can’t-miss. Here’s why:
Beyond Responsive: Building a mobile web you’re f*ing proud of
Responsive design is always an interesting topic, and that title just makes me want to drop everything and start building a better web. Kate Hudson promises us a talk that goes beyond the usual spiel about media queries; there’s all kinds of stuff in that pitch that makes my mouth water.
Async Programming in ES7
I’ve seen Jafar speak before, and it’s something to behold. If you’ve never heard of RxJS, you don’t know what you’re missing, and you have no idea what’s in store for you in this talk. Expect everything you know about promises to be questioned.
Zombies and Soup: Why End-to-End testing sucks (and why it doesn’t have to)
This one piqued my interest for a couple of reasons: First, I’ve heard a lot about Walmart Labs, but I’ve never seen someone like Dave Cadwallader speak. Second, end to end testing is an enormous pain, and I’m wondering how one of the world’s biggest retailers has approached it. This is definitely the Friday talk I’m most looking forward to.
If you’re hitting up JSConf this year, what are you looking forward to?
I know it’s been a while. But I’m going to start writing again and I thought I owed you a quick catch-up.
My last post was almost two years ago. Here’s what’s happened since then:
- I left Netflix and moved back to Ottawa. No hard feelings; I really liked working there, and I was sad to leave. But the time was right to move back to Canada.
- I started working at Shopify. Wonderful place, having a great time.
- I became a father. My beautiful baby girl was born in August 2014, and is currently 9 months old and cute as a button.
Nothing crazy, but enough to keep me busy.
Oh, and I re-themed the blog, so if you’re like me and still use RSS to read all your friends’ posts, you might want to click through and check it out.
It’s a sad day for the blogging community; Google Reader has shut down.
As someone who follows way too many blogs, an RSS reader is essential for me. I’ve switched to Feedly, which is great, but as a Google Reader user since 2007, I’m more than a little sad to see it go.
However, as part of the switch to Feedly, I’ve dug through and purged most of the posts I’d starred and tagged in Reader, keeping only a few that have left a lasting impression on my life. Since you might enjoy these as well, here are seven of my favourite blog posts from the past five years:
1. The Office According to The Office
This is an excellent study of the modern corporation, explained entirely by referencing characters and situations from the first few seasons of the TV show, The Office. If business was always taught this well, we’d all have MBAs.
2. How to Give a Kick-Ass Presentation with a Hangover
This was written by a veteran conference organizer, and it’s a list of 60 or so tips for speaking at conferences. I’ve read it before every important talk I’ve ever given (including my talks at SenchaCon and OSCON), and it’s helped me enormously each time.
I’ve mentioned this post before. The irony of posting it on July 1st — again — is not lost on me.
4. Why Aren’t you Really Good at Graphic Design?
A reminder that the internet changed everything, and all skills are learnable.
5. Overnight Success
Don’t worry about the post, just watch the minute-long video. It’s probably the most motivating video I’ve ever seen, and I watch it anytime I feel like I’m half-assing some part of my work, to remind myself that sometimes you have to stop playing video games for a while if you really want to build something great.
6. On Craft
This is a post about changing jobs. The bit about craftsmanship in the first few paragraphs is exquisitely written, and I take from it whenever I need to explain software development to anyone.
7. Me, but you, but me
Beautiful writing from the legendary Mark Pilgrim. Proof that you can be both a fantastic programmer and a fantastic writer.
I hope this makes up for publishing so few of my own posts over the past year and a half. I don’t think I’ll ever get back to a weekly scheduled, but I’ll do better going forward than I have recently. Many of the posts above weren’t written by professional bloggers, and the thought that I could someday write something that would reach someone the way these posts reached me… well, it’s something I’d like to start working towards, again.
One of the classic motivational techniques for achieving a goal is to keep that goal in front of you all the time.
The traditional suggestion is to put post-it notes all over your desk or monitor or whatever. This way, when you space out at your desk, you look at one of these and it reminds you that, oh, hey, you wanted to write a book, get that promotion, etc.
But post-its are a little old-fashioned, aren’t they?
Here’s what I’ve started doing instead:
Pick up your phone. You always have that with you, right? You probably check it a hundred times a day. And every single time you do, for a split second, you stare at that little screen you have to slide to unlock.
Take a picture of your goal, and put it on that screen.
Last week I had a lot to do, so I wrote it down, took a picture of it, and set that as my lock screen. For several days, many, many times per day, I would see that list, realize I have a bunch of stuff to do, put my phone down, and get back to work. Often without even unlocking it.
I’m training for a race (the kind you run with your feet). Right now my lock screen has a picture of my awesome running shoes, so that a few dozen times a day I’m reminded that running is awesome because I have awesome shoes. Guess how much trouble I’ve had motivating myself to train this week?
You can put all kinds of crazy stuff there. Anything that visually reminds you of your goal is fair game:
Want to write a book? Jot down an outline and use that.
Want to spend more time with your family? Use a picture of the wife and kids.
Want to start updating your blog regularly again? Try a screenshot of your traffic stats from the month you stopped.
Constant reminders are a tried and tested technique for boosting motivation. You’ve got a little portable reminder-machine that you carry with you all the time and are constantly looking at.
It only takes a few seconds to change the image on your lock screen. Why not do that right now?
Oh, and let me know what you set it to, because I bet I can learn from your creativity, too.
Have you heard of AngularJS?
But knowing why a framework is great is only the first step. Now you have to figure out how to use it. This can lead to all kinds of frustrating questions:
- How well does AngularJS scale?
- What sort of tools can/should I use with AngularJS?
- How do all those features work, under the hood?
- Any gotchas to watch out for?
I could go on.
I wanted to help you figure these things out, but I couldn’t fit all of that into a single post. Even with many posts, I would have had to gloss over a few things. What’s a simple, part-time blogger to do?
Write a book, it turns out.
I wrote this book because I used to spend a lot of time learning how to work with new frameworks. I know the pains and problems with trying to build an application in a framework you’ve never used before, and I know what kind of examples are helpful, and what kind aren’t.
If you’re looking to ramp up on AngularJS, and you don’t have time to dig through Google results and sort through forum posts, this is the book for you.
Here’s where you can get your copy:
If you pick one up, I’d love know what you think. Drop me a line anytime at email@example.com.
Note: There were some typos in the code samples that shipped with the book. I’m working with the publisher to distribute the corrected versions, but in the mean time, you can email me and I’ll send you the updates directly.
It’s no secret that I’m a fan of Windows Phone. I was one of the maybe six people on Earth who were actually optimistic for Windows Phone 7.8. But when I realized my pre-paid T-Mobile plan was going to expire days after the Lumia 920 launch, and that the 920 would only cost $100 on a 2-year term, I decided to pick one up.
Best. Decision. Ever.
The Lumia 920 is a phone made by Nokia, running Windows Phone 8. It was released last Friday, but I’ve only had mine for about three hours. I already completely adore it. Here are five reasons why:
1: Nokia Maps is incredible.
I hated Bing Maps in Windows Phone 7.
I remember searching for Westfield one time, because there are a bunch of Westfield malls in San Jose and I guess I wanted to get my shopping on.
It found nothing. This is completely typical of Bing Maps. Coming from iPhone back when it had Google Maps, this was a huge let down. I often cited it as the only thing I genuinely disliked about WP7.
Nokia Maps is leaps and bounds better. I searched for Westfield and it focused on the closest Westfield mall, highlighted the rest with little shopping bag icons, and when I scrolled down from the map, it gave me a text-based list of all the results.
It’s beautiful. Sometimes jabbing at tiny pin drops in a moving car (in the passenger seat, of course!) is really ineffective. Having a list of text results is great because they’re easier to tap, and you can see in plain text what all the results are, without having to tap on each one.
This is a huge win for UX, and it’s indicative of Nokia’s commitment to making sure WP8 succeeds.
2: Built-in GPS is about to be very helpful.
Nokia has a really slick Drive app, which is your basic 3D voice-navigating GPS. The brilliant feature in this app is that it lets you download maps of specific areas in 100MB or so chunks, so that you can navigate those regions while offline.
I’m going to Las Vegas with the wife and some friends this weekend, and one of the things we’re going to do is drive to the grand canyon. I just downloaded the maps for Nevada, so now we’ll have GPS despite driving through areas with bad or no reception. When we get back, I can delete the Nevada maps to free up the 90MB they’re currently taking up. Excellent!
3: Smaller live tiles are awesome!
Live tiles in Windows Phone 7 came in two sizes: big, and really big. Really big tiles stretched the full width of the home screen, and were half as tall as they were wide. Big tiles were the same height as really big, but square-shaped.
This means if you used all big tiles — the smallest available option — you could see about eight on screen at one time.
Windows Phone 8 offers a smaller size, which is 1/4 the size of big tiles. If I put all small tiles on my Lumia, I can fit 24 on screen at a time.
This is incredible!
I still have a really big tile for my calendar, and a big tile for my social network notification app, but that leaves me space for twelve additional icons, which is great when you have three email addresses, two blogs, two messaging apps, and of course a phone icon, and you like to have them all above the fold so you can see all your notifications at once.
4: The camera is superb.
I don’t know a whole lot about cameras, but this Carl Zeiss thing takes great pictures. It also records HD+ video, but I don’t know what that means. I guess it’s more pixels than HD?
Looking at comparisons online, the vote seems to be split on whether it’s better or worse than the iPhone 5 (my money’s on worse; it’s amazing what people can do with an iPhone these days).
All I care about is that the pictures aren’t blurry. You should see what came out of my last phone; it’s like the lens was part Jell-O. Glad to put those days behind me.
5: I’m digging the large screen.
One of the things I was a little concerned about with the 920 is its size. It’s a little bigger than my last phone, which was itself slightly bigger than the iPhone I had switched from.
It turns out the larger form factor is pretty sweet. It fits nicely in my hand, and thankfully the power button is on the side; I would struggle to reach it if it was on top like every other phone I’ve ever used.
My new Lumia sports a 4.5 inch screen, at a resolution of 720×1280. This is really nice for content that generally feels a little cramped on a mobile screen. Calendar events and non-mobile-optimized websites, I’m looking at you — and you look great!
Overall, I’m pretty psyched.
This is the first time since the iPhone launched in Canada (2008), that I’ve owned a just-released phone. This thing has features that I don’t even know how to use (NFC), and some that just seem like overkill (inductive charging).
I think I’m in for a swell two years :)
In approximately 24 hours, I will be speaking at OSCON 2012.
My talk is about code review, why you should do it, and how it can help you write (much) better code. We’ll talk about hidden benefits, how to do code review with distributed teams, code review tools, and much more.
Here are the details if you’d like to attend:
Wednesday, July 18th at 1:40 PM in room Portland 256.
Hope to see you there!
In no particular order, here are some thoughts I happened to write down during the two-hour talk:
I noticed a couple of places where Angular seems to be doing something that I know is a planned feature in HTML5 (field-level validation, web history via JS).
At first, I thought this was kind of stupid. What are you going to do when those features become mainstream? I don’t want to have to choose between the proper, standards-specified way of doing something, and the way this framework wants me to do it. That would be super-lame.
Eventually I caught on that they’re providing a framework way to do it, but they seem to be falling back on the HTML5 versions when supported. This was very clear in the web history example, where the speaker mentioned they convert from hash-bang syntax to proper HTML5 history API calls, but I caught a bit of it during the validation example as well.
This is actually kind of cool. They’re making the features available right now, but putting the framework (and by extension, the apps built using the framework) in a position where transitioning to the standard HTML5 solution will be easy when that solution becomes widely available.
In short, you get to use soon-to-be-standard HTML5 features now, and it will be easy to convert your app to use HTML5 standards later. Neat!
Along the same lines, the team at Angular seems to have put a lot of effort into helping you get your application (and skillset) ready for the future of HTML5. Here’s an example:
One of the HTML5 features I’m most excited about is Web Components. We’re still at least 6 months away from seeing these in beta release channels (Aurora, Canary, etc), but they’re available in the Safari and Chrome nightlies right now.
What I love, love, love about reusable components in AngularJS is that they follow the same paradigm shift. The way you write and use reusable components in AngularJS looks and feels a whole lot like how you’ll write and use web components in a couple of years.
This is super-helpful for the web developer community. Web components are the future, and Angular’s reusable components are a very similar present.
Good Web Citizenship
My main gripe with a lot of frameworks these days is that they don’t play nice with the rest of their world.
Just today, for example, one of my coworkers went on a rant about how some Node-based packaging plugin he was looking at tried to force its own conventions on the content you’re trying to package. This is a huge no-no! A good framework goes out of its way to make sure it can work with as wide a range of content as possible.
AngularJS is one of the good guys.
Need your HTML to validate? They provide a slightly-more-verbose syntax for that. Want to minify your dependency injections? You can do that too, just add an extra line of code. Want to integrate with jQuery or Node or your favourite test framework? No problem!
The web is a heavily-interconnected place, and it’s nice to see frameworks put some effort into fitting in. People aren’t going to use your library if it conflicts with anything they’re already doing/using.
Did your heart skip a beat when I mentioned this a second ago? It should have.
Even if you’re not a fan of dependency injection, I still think you should be excited about this. We need more experimentation with server-side features. If the success of Node has taught us anything, it’s that JS developers want to write server-ish code if it will help them get the job done quicker. Experimentation must be encouraged!
Unit Testing is a Big Deal
I didn’t count how many times our speaker mentioned unit tests, but I’m fully confident it was at least two dozen times.
I know what you’re thinking: Dan, every framework wants you to write unit tests.
You’re right, but most frameworks don’t put anywhere near this much focus on testing. It’s not some after-thought they tacked on to attract the TDD crowd. There’s support for testing in the docs, and every aspect of an Angular application is fully testable. Our speaker discussed integration with Jasmine, Testacular, and Selenium.
It’s always great to see frameworks (and their communities) encourage testing, and the level of testing support for AngularJS is especially notable for how new(ish) the framework is.
The Usual Suspects
- Template support,
- data binding,
- work-in-progress documentation,
- and a handful of useful UI components.
Next time I find time to build a fun little webapp, I’ll probably give AngularJS a shot. I was seriously impressed by all the thought they put into making their features HTML5-ready, and little extras like dependency injection and seriously overwhelming testing support are just icing on the cake.
I’ve been away from the JS framework scene for a little while now. Did I miss anything? Is this all old news? What are the all cool kids using these days?
There’s an excellent article called The Recruiter Honeypot that’s been making the rounds since it was published last week. It’s a downright fascinating read about the state of recruiting in high tech.
Grab a coffee and open it up. It’s worth a few minutes of your time.
Back? Great. Let’s see if I can supplement what you’ve just learned. Having just been poached myself, here’s my two cents:
1. Recruiters really do rely exclusively on LinkedIn.
One of the most common questions I was asked when I told everyone I knew that I was moving from Ottawa to California to join Netflix was “How did they find you?”.
In fact, other than candid prodding from friends, I don’t think I’ve ever been contacted about a job outside of LinkedIn. It truly is the go-to source for recruiters looking for talent.
2. Managers make better poachers than recruiters.
Netflix is not the first famous Silicon Valley name to grace my InMail. What made them special (well, one of many things) was who contacted me: the manager of the team I’ve since joined.
For the recruiting company, there is one major advantages to having a manager make contact as opposed to a recruiter:
Technical managers are former developers. Mine was in my position for five years before switching to management. He knew the role intimately, and could really explain how I’d be spending my time. He knew the team, he knew what technologies we were using (and not using), and he could sell the company as well as anyone in HR.
It’s not easy to leave a job that you love — and let’s be honest, everyone worth poaching loves their current gig — nor is it easy to move across a continent, or to another country.
Before I commit, I need to know what I’m getting myself into. And a manager is almost always going to be better suited for that task than a traditional recruiter.
3. Location matters. A lot.
The number of LinkedIn messages I get from recruiters has gone up by at least 3 or 4 times since I moved to the valley. I get that some of that is due to the Netflix brand, but I’m positive an even bigger chunk of it is location, location, location.
Here’s why I’m so sure: Since moving to California, despite the huge uptick in recruiter spam, every single message I’ve received has been from a bay-area company. Every. Single. One.
Despite how interconnected the world has become in the past couple decades, the recruiters that have contacted me have been massively biased towards location. I can’t help but think this is a trend, and also an opportunity for teams that are willing to hire remote workers, or invest in relocation costs.
There you have it…
If you want more recruiters to contact you, beef up your presence on LinkedIn.
If you’re trying to poach someone, send a manager instead of a recruiter.
If you’re looking to work in the valley, move to the valley.
(And because I’m sure someone will ask: Netflix is great, and I’m having a blast. Won’t be leaving anytime soon.)
Pictured above is what I see when I search “What time is tomorrow’s Giants game?” on Google.
Look at the sidebar on the left. What does it say for location? San Jose, CA. And where are the top two results? New York. Nearly 3000 miles away.
The next two hits have the right team (thankfully), but are both from 2010. I had “tomorrow” right there in my query. This is another missed opportunity.
The next two hits are for the wrong city, again, and rounding out what I saw above the fold is ask.com telling me tomorrow is March 27th. Disappointing.
The bottom three results (the rest of Google’s first page) were equally unhelpful. Beneath that were some ads promoting the Giants, and even mentioning their schedule, which is completely infuriating; why are the targeted ads more relevant than the search results themselves?
So, next time someone tells you that search is a solved problem, or that nobody will ever be able to beat Google, you can remind them that search is hard, and even the Giantest search engine of them all still has a long way to go.