The Changelog talks about TypeScript

Our guests this week are Anders Hejlsberg and Jonathan Turner. Anders is the language architect and Jonathan is the Program Manager for TypeScript, a typed superset of JavaScript that compiles to plain JavaScript from Microsoft.

I think Microsoft’s approach with TypeScript has been great. Check out this podcast episode for a detailed view into the project: #152: TypeScript with Anders Hejlsberg and Jonathan Turner from Microsoft – The Changelog

Measuring and patching phase for React components

On the latest episode of JavaScript Jabber, Amit Kaufman and Avi Marcus talk about how your web app performance is killed if you interleave your reading and writing from the DOM. For their now React-based app, they needed to measure certain elements for their layout work. Their solution sounds clever: components specify what information they’re going to need and they batch up all of the DOM reads and do them all at once and then they do all of the adjustments that come as a result of those reads all in one separate pass. This minimizes the amount of churn and recalculation that the browser needs to deal with.

Joining Khan Academy

We’re about 20 years into the age of the Internet, and I feel like it’s just getting warmed up. The Internet and modern computing have changed so many things, but the potential still seems limitless. Any area related to sharing of information is undergoing massive change, and education is certainly about sharing information.

I’ve been intrigued by Khan Academy ever since I first heard about it.  Sal Khan’s “here, let me walk you through that” videos made for a solid base upon which Khan Academy has grown and tried new ideas. The site offers a bunch of tools for flipping the classroom so that Internet-based learning doesn’t need to be limited to humans interacting with computers alone. They use machine learning techniques to figure out which problems you should be presented with next. They offer SAT prep. They have run experiments like LearnStorm in conjunction with traditional school systems.

And, they do it all for free. KA is a non-profit and their “mission is to provide a free, world?class education for anyone, anywhere.” Their code is open source and they’ve been one of the biggest contributors to React. Education can make a huge difference in people’s lives and this is an organization that is constantly working on ways to make that difference for as many people as they can.

Bill Gates called it the “future of education” at the end of Sal’s TED talk. And even Mr. Money Mustache says that “Sal Khan is pretty much The Man when it comes to great do-it-yourself education.”, though I daresay the Bill Gates endorsement likely carries a bit more weight.

We’ve already entered a period of unprecedented educational choice and opportunity, and by joining Khan Academy I’ll have a chance to do my bit to help children and adults who want to learn.

I’ve enjoyed my conversations with the KA people I’ve met so far, and I’m looking forward to getting started! What will I be doing at KA? I’m joining the tech staff and I’m looking forward to seeing how I can best help out once I’m there. I’m back to blogging at Blue Sky On Mars (more on that in another post), so expect to read more about my experiences at KA in this space.

Thanks to my friends at Adobe

My last day at Adobe was April 3rd. I am very fortunate to have worked at one of the best places to work during a phenomenally successful time as the company moved from packaged desktop software to a combination of software and services built as a whole.

I had the chance to work on interesting projects. Most of my time at Adobe was working on Brackets, one of the top 20 starred projects on GitHub. I got to work with smart and dedicated people on a project that people love, how great is that? The project underwent many changes while I was there, and the growth was unbelievable.

Most recently, I was the tech lead for a new, as-yet-unreleased project. One thing that I think Adobe does really well is that it gives people many opportunities for career development. I have been a manager at other companies before, but I am enjoying being hands-on at this point. Even so, Adobe provided a path for me to be promoted (thanks to my managers for supporting me in that!). I had many opportunities for success, despite being a remote worker.

There are pluses and minuses to working at a big company. The scale of what Adobe does can be breathtaking. I attended two MAXes (the creativity conference that highlights Adobe’s creative software) and two Tech Summits (an internal conference that brings together technologists from all over the company). These events are huge and well-run, and I enjoyed being on the program committee for the most recent Tech Summit.

Adobe’s scale enables it to create products that do things that no others do, and the pace of innovation is quite something to watch. I mentioned that there are downsides to big companies, and feeling like you don’t know what’s going on in other parts of the organization is one of those downsides. That’s a genuinely hard problem and people do work hard toward spreading information as well as possible.

By this point, you might be thinking “if Adobe’s so great, why did you leave?” I did not go hunting for a new job, but I came across an opportunity that I just couldn’t pass up. That’s a topic for another blog post. I have no reservations about recommending Adobe as an awesome place to work and to all of the people that made my time at Adobe special: thank you!

Custom messages for Jasmine expectations

jasmine-custom-message gives you a “custom failure message on any jasmine assertion”:

describe('the story', function() {
  it('should finish ok', function() {
    since('all cats are grey in the dark').
    expect('tiger').toEqual('kitty'); // => 'all cats are grey in the dark'

Overall, I like Jasmine as a testing library, but this particular limitation has really bothered me.

Data Visualization with JavaScript

Data Visualization with JavaScript is a nice looking online book by Stephen A. Thomas:

If you’re developing web sites or web applications today, there’s a good chance you have data to communicate, and that data may be begging for a good visualization. But how do you know what kind of visualization is appropriate? And, even more importantly, how do you actually create one? Answers to those very questions are the core of this book. In the chapters that follow, we explore dozens of different visualizations and visualization techniques and tool kits. Each example discusses the appropriateness of the visualization (and suggests possible alternatives) and provides step-by-step instructions for including the visualization in your own web pages.

Faster Yosemite Upgrades for Developers

Faster Mac OS X 10.10 Yosemite Upgrades for Developers

Your Yosemite upgrade may take many hours if you’ve got anything non-Apple in your /usr folder (Homebrew, Texlive, or Mactex for example).

I don't think the solves the problem I had with the Yosemite install, but this article has good suggestions for anyone using Homebrew, etc. Note that this also applied to Mavericks so this might be useful advice again in a year.


My React-in-Brackets Trilogy

I started experimenting with React in February or March, blogged about my experiments starting in May, committed to landing a Brackets feature in September and the latest release of Brackets now ships with React. Here are my three posts on the subject, in reverse chronological order:

I will likely be talking more about simplifying code soon, especially given my 1DevDay Detroit talk coming up next month.