Ben Kamens, a lead developer at Khan Academy, writes about web engineering, App Engine, A/B testing, team practices, and shipping software.
HN links it for his analysis of Amazon's mega dropdown and his Google App Engine tips, with commenters calling his blog full of good material.
>So what exactly did we lose? It's quite simple: by moving software into the cloud and turning them into web-based SaaS offerings, many of the basic affordances that used to be standard have gotten watered down or removed entirely. Here are some examples:
>Menus let you cross over empty space and other menu items, instead of strictly enforcing hover rectangles.
I know the guy, Frank Leahy, who implemented that feature invented by Bruce "Tog" Tognazzini.
When he was at Apple, he rewrote the Menu Manager for Mac SE and Mac II.
We were working together on a project at Current TV, and reminiscing about how great the original Apple Human Interface guidelines were, and how Apple had totally lost their original devotion to excellent user interface design, and I mentioned how the original edition of the Apple HIG book I had actually illustrated, documented, and justified that subtle feature.
Frank proudly told me he was the one who implemented it for the Menu Manager, and that he was touched that somebody actually noticed and appreciated it as much as I did.
https://news.ycombinator.com/item?id=17404401
https://bjk5.com/post/44698559168/breaking-down-amazons-mega-dropdown
>Breaking down Amazon’s mega dropdown [...]
>DonHopkins on June 26, 2018 [–]
>The comments are actually great -- even Tog weighs in! It also mentions Frank Lehey, who rewrote the Menu Manager for Mac SE and Mac II.
>Jake Smith • 5 years ago This was first implemented by Apple's HID team back in the 80s,…
Mountain View, CA (we also love interns, and remote is a possibility for the right candidate)
---
At Khan Academy, we're a small, 52-person non-profit tech startup. We're trying hard to do good for the world. Here's a testimonial we received just two days ago:
January 29, 2014
I am an adult returning to school for a midlife career change. I have always disliked math and thought I was bad at it -- and my last math class was over 20 years ago! But I just passed my Accuplacer placement test, thanks to Khan Academy. Thank you so much for making it fun and easy to refresh my skills. I also purchased the Accuplacer test prep app, but I found myself coming back to Khan Academy more often because I liked it more. Now I am learning coding at school, so I'll definitely be back for more!
Lisa
This letter is one story, but every month we hear about hundreds of lives like this that we've transformed.
--
Most of you reading this are familiar with Sal's videos, but we also have hundreds of videos by other teachers, partnerships with organizations like MoMA and the California Academy of Sciences, and a huge library of interactive exercises. Over 20 million math problems are done every week on our site. That's a lot.
With this huge scale, we're able to study learning in a way that wasn't previously possible. We've run tests and found that students learn more when they're given harder problems based on an intelligent machine-learning algorithm [1]. Right now we have dozens of A/B…
Amazon | AmazonUI (AUI) | Seattle; San Francisco | Onsite | Full-Time
AUI is the Front-end platform being adopted on Amazon.com. We are modernizing the company's front end code base, while diving deep on latency, performance, API design, user experience, and cross browser/device compatibility. Basically, we need people who can build libraries, not just use them.
Our team is incredibly customer-centric. For any given situation, we have to make the right choice on behalf of the folks using our platform -- and we have to do it at scale. That may sound cliche, but within the next hour AUI will be used to generate tens of millions of page views. And that's just in the US. Worldwide, we're used on more than 90% of requests across all device categories.
It's a lot of responsibility, but also a lot of opportunity. For example, we can run experiments that change almost every page on Amazon.com. We can also impact the page load time for the entire site. Have you ever tried to figure out why your site is 6ms slower? We have.
We use these tools (but don't expect you to know all of them): HTML, CSS, JavaScript, Ruby, Java, Perl, Git And to give you an idea of who you will be working with, the folks responsible for this articles are on our team: http://bjk5.com/post/44698559168/breaking-down-amazons-mega-dropdown
If you're interested in senior engineering or technical program manager roles, drop us an email: aui-hn (@) amazon (.) com
An interesting semi-related follow up from the former Fog Creek VP of Eng (now at Khan Academy): http://bjk5.com/post/3340326040/in-any-language-you-want-khan-academy-interviews
Not understanding the underlying fundamentals when programming in high level languages can be really dangerous, but generally it's not. I kind of view the ongoing development of Compilers, VMs, JITs, etc. as being somewhat parallel to that of processors. At one point, optimizing with machine code was crucial to obtain performant code, but with crazy-ridiculous superscalar processors and all of the things that come with it, all you can really do is code C, compile with -O2, and then guess and check on optimizations. I wouldn't be surprised if this was the case in most high-level languages before long.
Don't get me wrong, I first read this in High School and this was the essay that made me love C, and made me want to try to get an internship at Fog Creek. I just think it's starting to show its age.
The drag-and-drop is done from scratch. Quirk just listens to browser events like mousedown/mousemove/mouseup and turns that into manipulations of the circuit. Getting it to work well across all the browsers, and modes of interactions, is quite finicky. For example, mobile browsers refused to not scroll even if `event.preventDefault()` was called, so I had to overlay the drag targets with transparent divs that have `touch-action: none`.
Quirk doesn't have menus.. you might be thinking of the recording of Davy's simulator? Those menus also look custom-made. I actually wouldn't call them "nice", because they lack important polish. Read this: http://bjk5.com/post/44698559168/breaking-down-amazons-mega-dropdown
I'm sure there are libraries for menus and things like that, but I generally prefer to try to do it myself unless those libraries have a really good interface.
We have a tool that does Canvas drawing from React too. Currently some pieces are cached in retained mode but it's just an implementation detail for certain performance characteristics.
https://github.com/facebook/react-art
Canvas APIs are currently not as fast as the DOM renderer. There's also a lot of added complexity with regards to layout, text flows and text input. The code you'd have to ship down to solve all that with pure Canvas isn't worth it for a lot of applications.
For things that has it's own layout and no text input (like charts/data visualizations) or complex editors like Khan Academy's math content editor (http://bjk5.com/post/53742233351/getting-your-team-to-adopt-new-technology) it definitely makes sense.