# Khan Academy

Khan Academy Engineering's blog

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Copy-pasting more than just text

DevFeed: [Copy-pasting more than just text](<https://devfeed.tech/articles/copy-pasting-more-than-just-text-27370.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/copy-pasting-more-than-just-text.htm>)

Author: Khan Academy

Published: 2015-08-31T22:00:00Z

Content type: tutorial

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Web Development](<https://devfeed.tech/topics/web-development.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [React](<https://devfeed.tech/topics/react.md>), [interactive website](<https://devfeed.tech/topics/interactive-website.md>)

Tags: [alt-text](<https://devfeed.tech/tags/alt-text.md>), [copy](<https://devfeed.tech/tags/copy.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [interactive-content](<https://devfeed.tech/tags/interactive-content.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [news](<https://devfeed.tech/tags/news.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>), [widget](<https://devfeed.tech/tags/widget.md>)

### AI overview

Sam Lau describes how Khan Academy improved copy-pasting in Perseus, its interactive exercise and article editor, by moving widget metadata alongside copied text. The change preserves information such as image URLs and a number line's starting value, making it easier for content creators to move or duplicate widgets.

### Source excerpt

By Sam Lau The Result I'll skip to the happy ending. This little feature implements more sophisticated copy-pasting ... Read more

## Automating App Store Screenshots

DevFeed: [Automating App Store Screenshots](<https://devfeed.tech/articles/automating-app-store-screenshots-27367.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/automating-app-store-screenshots.htm>)

Author: Khan Academy

Published: 2017-03-27T22:00:00Z

Content type: tutorial

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [ui-testing](<https://devfeed.tech/topics/ui-testing.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [Sketch](<https://devfeed.tech/topics/sketch.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [app-store](<https://devfeed.tech/tags/app-store.md>), [design](<https://devfeed.tech/tags/design.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [fastlane](<https://devfeed.tech/tags/fastlane.md>), [ios](<https://devfeed.tech/tags/ios.md>), [iphone](<https://devfeed.tech/tags/iphone.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [news](<https://devfeed.tech/tags/news.md>), [screenshots](<https://devfeed.tech/tags/screenshots.md>), [testing](<https://devfeed.tech/tags/testing.md>), [ui-testing](<https://devfeed.tech/tags/ui-testing.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

A tutorial describing how Khan Academy automated App Store and Play Store screenshots with Xcode UI tests, Fastlane, a Snapfile, and a homegrown Sketch file. The team reduced screenshot update time from about a week to about an hour.

### Source excerpt

By Bryan Clark One of the more tedious design tasks is keeping your App Store promo images up-to-date. ... Read more

## Kanbanning the LearnStorm Dev Process

DevFeed: [Kanbanning the LearnStorm Dev Process](<https://devfeed.tech/articles/kanbanning-the-learnstorm-dev-process-27387.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/kanbanning-learnstorm-dev-process.htm>)

Author: Khan Academy

Published: 2015-12-07T23:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>)

Tags: [dev](<https://devfeed.tech/tags/dev.md>), [development](<https://devfeed.tech/tags/development.md>), [development-process](<https://devfeed.tech/tags/development-process.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [news](<https://devfeed.tech/tags/news.md>), [projects](<https://devfeed.tech/tags/projects.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>)

### AI overview

Kevin Dangoor describes how Khan Academy's LearnStorm initiative changed its development process from project-based planning with Trello and Google Sheets to task-focused tracking in Google Docs and Asana as launch requirements evolved.

### Source excerpt

By Kevin Dangoor In his New Employee's Primer post from July, Riley Shaw wrote a little about our ... Read more

## Engineering career development at Khan Academy

DevFeed: [Engineering career development at Khan Academy](<https://devfeed.tech/articles/engineering-career-development-at-khan-academy-27369.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/career-development.htm>)

Author: Khan Academy

Published: 2016-04-11T22:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Learning](<https://devfeed.tech/topics/learning.md>), [Job](<https://devfeed.tech/topics/job.md>), [Framework](<https://devfeed.tech/topics/framework.md>)

Tags: [career-development](<https://devfeed.tech/tags/career-development.md>), [development](<https://devfeed.tech/tags/development.md>), [eng-leads](<https://devfeed.tech/tags/eng-leads.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [guide](<https://devfeed.tech/tags/guide.md>), [learn](<https://devfeed.tech/tags/learn.md>), [news](<https://devfeed.tech/tags/news.md>)

### AI overview

Khan Academy shares its Engineering Career Development guide, explaining how the organization supports engineers' learning and uses career structures to help assess skill sets, impact, hiring, and pay fairly.

### Source excerpt

By Ben Eater At Khan Academy, we see ourselves as part of a broader engineering community and just ... Read more

## Let's Reduce! A Gentle Introduction to Javascript's Reduce Method

DevFeed: [Let's Reduce! A Gentle Introduction to Javascript's Reduce Method](<https://devfeed.tech/articles/let-s-reduce-a-gentle-introduction-to-javascript-s-reduce-method-27391.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/lets-reduce.htm>)

Author: Khan Academy

Published: 2017-07-10T22:00:00Z

Content type: tutorial

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [JavaScript](<https://devfeed.tech/topics/javascript.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Redux](<https://devfeed.tech/topics/redux.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [array](<https://devfeed.tech/tags/array.md>), [arrow](<https://devfeed.tech/tags/arrow.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [filter](<https://devfeed.tech/tags/filter.md>), [introduction](<https://devfeed.tech/tags/introduction.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [map](<https://devfeed.tech/tags/map.md>), [news](<https://devfeed.tech/tags/news.md>), [react](<https://devfeed.tech/tags/react.md>), [reduce](<https://devfeed.tech/tags/reduce.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>)

### AI overview

A tutorial explaining JavaScript's reduce method as a foundation for understanding Redux. It describes how reduce processes array items, how each iteration depends on the previous return value, and why the method can be difficult to learn.

### Source excerpt

By Josh Comeau Every summer, Khan Academy recruits a few software engineer interns. As part of their onboarding, ... Read more

## JavaScript bundling and HTTP performance trade-offs

DevFeed: [JavaScript bundling and HTTP performance trade-offs](<https://devfeed.tech/articles/forgo-js-packaging-not-so-fast-27386.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/js-packaging-http2.htm>)

Author: Khan Academy

Published: 2015-11-23T23:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [JavaScript](<https://devfeed.tech/topics/javascript.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [browserify](<https://devfeed.tech/topics/browserify.md>), [Webpack](<https://devfeed.tech/topics/webpack.md>)

Tags: [browserify](<https://devfeed.tech/tags/browserify.md>), [cache](<https://devfeed.tech/tags/cache.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [http](<https://devfeed.tech/tags/http.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [js](<https://devfeed.tech/tags/js.md>), [news](<https://devfeed.tech/tags/news.md>), [webpack](<https://devfeed.tech/tags/webpack.md>)

### AI overview

The article examines trade-offs between bundling JavaScript files, serving them separately, and using semantically related bundles. It explains how these approaches balance HTTP request overhead, browser fetch limits, cacheability, and unused downloaded code.

### Source excerpt

By Craig Silverstein Bundling JavaScript files The traditional advice for web developers is to bundle the JavaScript files ... Read more

## Tips for giving your first code reviews

DevFeed: [Tips for giving your first code reviews](<https://devfeed.tech/articles/tips-for-giving-your-first-code-reviews-27412.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/tips-for-code-reviews.htm>)

Author: Khan Academy

Published: 2017-09-18T22:00:00Z

Content type: tutorial

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Code review](<https://devfeed.tech/topics/code-review.md>), [engineering-culture](<https://devfeed.tech/topics/engineering-culture.md>)

Tags: [advice](<https://devfeed.tech/tags/advice.md>), [code-review](<https://devfeed.tech/tags/code-review.md>), [code-reviews](<https://devfeed.tech/tags/code-reviews.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [internship](<https://devfeed.tech/tags/internship.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [news](<https://devfeed.tech/tags/news.md>), [onboarding](<https://devfeed.tech/tags/onboarding.md>), [tips](<https://devfeed.tech/tags/tips.md>)

### AI overview

Hannah Blumberg shares practical advice for people conducting code reviews for the first time. She explains how asking questions and working through reviews with a teammate can help new reviewers contribute, learn, and communicate feedback effectively.

### Source excerpt

By Hannah Blumberg At Khan Academy, (nearly) every piece of code that goes into our codebase has been ... Read more

## Making Websites Work with Windows High Contrast Mode

DevFeed: [Making Websites Work with Windows High Contrast Mode](<https://devfeed.tech/articles/making-websites-work-with-windows-high-contrast-mode-27420.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/windows-high-contrast-mode.htm>)

Author: Khan Academy

Published: 2019-03-21T22:00:00Z

Content type: tutorial

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>), [Windows](<https://devfeed.tech/topics/windows.md>), [CSS](<https://devfeed.tech/topics/css.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [css](<https://devfeed.tech/tags/css.md>), [developers](<https://devfeed.tech/tags/developers.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [news](<https://devfeed.tech/tags/news.md>), [web-applications](<https://devfeed.tech/tags/web-applications.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

This tutorial explains how Windows High Contrast Mode changes web application styling and presents accessibility considerations for backgrounds, images, borders, and outlines. It emphasizes using CSS for decorative styling and retaining borders and outlines for functional purposes.

### Source excerpt

By Diedra Rater At Khan Academy, we've been working to make our web product more accessible to a ... Read more

## Fun with slope fields, css and react

DevFeed: [Fun with slope fields, css and react](<https://devfeed.tech/articles/fun-with-slope-fields-css-and-react-27377.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/fun-with-slopfields.htm>)

Author: Khan Academy

Published: 2015-08-05T22:00:00Z

Content type: opinion

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [React](<https://devfeed.tech/topics/react.md>), [notifications](<https://devfeed.tech/topics/notifications.md>), [math](<https://devfeed.tech/topics/math.md>)

Tags: [css](<https://devfeed.tech/tags/css.md>), [design](<https://devfeed.tech/tags/design.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [fun](<https://devfeed.tech/tags/fun.md>), [math](<https://devfeed.tech/tags/math.md>), [news](<https://devfeed.tech/tags/news.md>), [notifications](<https://devfeed.tech/tags/notifications.md>), [react](<https://devfeed.tech/tags/react.md>)

### AI overview

An account of designing a Khan Academy notification banner for LearnStorm winners under a tight three-day deadline. The project focused on improving the notification's visual presentation while incorporating LearnStorm's slope-field identity, using CSS and React.

### Source excerpt

By Marcos Ojeda A while ago, we needed to send out a notification to all our LearnStorm winners ... Read more

## Inline CSS at Khan Academy: Aphrodite

DevFeed: [Inline CSS at Khan Academy: Aphrodite](<https://devfeed.tech/articles/inline-css-at-khan-academy-aphrodite-27365.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/aphrodite-inline-css.htm>)

Author: Khan Academy

Published: 2016-03-29T22:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [React](<https://devfeed.tech/topics/react.md>), [Server-side rendering](<https://devfeed.tech/topics/server-side-rendering.md>), [HTML](<https://devfeed.tech/topics/html.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [networking](<https://devfeed.tech/topics/networking.md>), [Chrome](<https://devfeed.tech/topics/chrome.md>)

Tags: [chrome](<https://devfeed.tech/tags/chrome.md>), [css](<https://devfeed.tech/tags/css.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [latency](<https://devfeed.tech/tags/latency.md>), [network](<https://devfeed.tech/tags/network.md>), [news](<https://devfeed.tech/tags/news.md>), [react](<https://devfeed.tech/tags/react.md>), [server-side-rendering](<https://devfeed.tech/tags/server-side-rendering.md>)

### AI overview

Jamie Wong discusses Aphrodite, Khan Academy's inline styling solution, the constraints that shaped it, and its use in production. The article explains how reducing bytes before content renders motivated server-side rendering and compares the initial-load byte requirements of server-side and client-side rendering.

### Source excerpt

By Jamie Wong I won't ramble in this post about the maintenance woe that is CSS, as others ... Read more

## Hackathons Can Be Healthy

DevFeed: [Hackathons Can Be Healthy](<https://devfeed.tech/articles/hackathons-can-be-healthy-27380.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/healthy-hackathons.htm>)

Author: Khan Academy

Published: 2016-07-11T22:00:00Z

Content type: opinion

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Hackathon](<https://devfeed.tech/topics/hackathon.md>), [Learning](<https://devfeed.tech/topics/learning.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [eng-leads](<https://devfeed.tech/tags/eng-leads.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [hackathon](<https://devfeed.tech/tags/hackathon.md>), [hackathons](<https://devfeed.tech/tags/hackathons.md>), [inclusive](<https://devfeed.tech/tags/inclusive.md>), [learning](<https://devfeed.tech/tags/learning.md>), [news](<https://devfeed.tech/tags/news.md>), [open-source](<https://devfeed.tech/tags/open-source.md>)

### AI overview

Khan Academy describes its twice-yearly internal hackathons and the benefits of collaboration, creativity, team bonding, morale, and learning. The article also explains how the company adapted its hackathon format to be more inclusive, sustainable, and healthy.

### Source excerpt

By Tom Yedwab As an organization whose raison d'être is learning - we in fact have a campaign ... Read more

## What's New in OSS at Khan Academy

DevFeed: [What's New in OSS at Khan Academy](<https://devfeed.tech/articles/what-s-new-in-oss-at-khan-academy-27396.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/new-oss-activity.htm>)

Author: Khan Academy

Published: 2017-04-03T22:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Open Source](<https://devfeed.tech/topics/open-source.md>), [Software](<https://devfeed.tech/topics/software.md>), [React](<https://devfeed.tech/topics/react.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>), [jQuery](<https://devfeed.tech/topics/jquery.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [news](<https://devfeed.tech/tags/news.md>), [open-source-software](<https://devfeed.tech/tags/open-source-software.md>), [oss](<https://devfeed.tech/tags/oss.md>), [react](<https://devfeed.tech/tags/react.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>)

### AI overview

Khan Academy highlights several recent open-source projects, including Mu Lambda, a small JavaScript library of functional programming utilities; React Balance Text, a React wrapper for Adobe's Balance-Text project; Fuzzy Match Utils, which uses string-matching algorithms for filtering; and React Multi Select.

### Source excerpt

By Brian Genisio At Khan Academy, we rely heavily on Open Source Software (OSS). The majority of our ... Read more

## Slicker: A Tool for Moving Things in Python

DevFeed: [Slicker: A Tool for Moving Things in Python](<https://devfeed.tech/articles/slicker-a-tool-for-moving-things-in-python-27406.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/slicker.htm>)

Author: Khan Academy

Published: 2018-04-02T22:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Tool](<https://devfeed.tech/topics/tool.md>), [PyCharm](<https://devfeed.tech/topics/pycharm.md>)

Tags: [bug](<https://devfeed.tech/tags/bug.md>), [code](<https://devfeed.tech/tags/code.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [news](<https://devfeed.tech/tags/news.md>), [pycharm](<https://devfeed.tech/tags/pycharm.md>), [python](<https://devfeed.tech/tags/python.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [tool](<https://devfeed.tech/tags/tool.md>)

### AI overview

This article explains why Khan Academy built Slicker, a tool for moving thousands of Python files, classes, and functions while updating references and imports. It also describes limitations the authors encountered with PyCharm's refactoring tools.

### Source excerpt

By Ben Kraft Craig talked last post about our project to reorganize our whole Python codebase. This entails ... Read more

## Minimizing the length of regular expressions, in practice

DevFeed: [Minimizing the length of regular expressions, in practice](<https://devfeed.tech/articles/minimizing-the-length-of-regular-expressions-in-practice-27405.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/shortest-regex.htm>)

Author: Khan Academy

Published: 2016-05-23T22:00:00Z

Content type: tutorial

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>), [Regular expression](<https://devfeed.tech/topics/regular-expression.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [cloud-infrastructure](<https://devfeed.tech/topics/cloud-infrastructure.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [cdn](<https://devfeed.tech/tags/cdn.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [google](<https://devfeed.tech/tags/google.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [news](<https://devfeed.tech/tags/news.md>), [re](<https://devfeed.tech/tags/re.md>), [repository](<https://devfeed.tech/tags/repository.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>)

### AI overview

Craig Silverstein explains how Khan Academy needed a compact regular expression to distinguish static URLs from dynamic URLs for CDN routing. The article describes why simple patterns were unsuitable, reports that a naive generated expression reached 402,025 characters, and introduces a second approach that reduced the length to 2,400 characters.

### Source excerpt

By Craig Silverstein The problem Software engineering interviews tend to be full of "algorithms" questions, because they're easy ... Read more

## The User Write Lock: an Alternative to Transactions for Google App Engine

DevFeed: [The User Write Lock: an Alternative to Transactions for Google App Engine](<https://devfeed.tech/articles/the-user-write-lock-an-alternative-to-transactions-for-google-app-engine-27418.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/user-write-lock.htm>)

Author: Khan Academy

Published: 2016-06-20T22:00:00Z

Content type: tutorial

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Transactions](<https://devfeed.tech/topics/transactions.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [caching](<https://devfeed.tech/tags/caching.md>), [databases](<https://devfeed.tech/tags/databases.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [google](<https://devfeed.tech/tags/google.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [news](<https://devfeed.tech/tags/news.md>), [processes](<https://devfeed.tech/tags/processes.md>), [retry](<https://devfeed.tech/tags/retry.md>), [transactions](<https://devfeed.tech/tags/transactions.md>)

### AI overview

This developer article explains how transactions in Google App Engine's datastore provide atomicity for single-entity and multi-entity writes, but can introduce frozen datastore state, retries, idempotence requirements, and restrictions on datastore queries. It presents the User Write Lock as an alternative, although the supplied text ends before describing that alternative.

### Source excerpt

By Craig Silverstein Transactions are the standard method in Google App Engine's datastore -- as in many databases ... Read more

## Using static analysis in Python, JavaScript and more to make your system safer

DevFeed: [Using static analysis in Python, JavaScript and more to make your system safer](<https://devfeed.tech/articles/using-static-analysis-in-python-javascript-and-more-to-make-your-system-safer-27419.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/using-static-analysis-in-Python-and-JavaScript-to-make-your-system-safer.htm>)

Author: Khan Academy

Published: 2018-07-26T22:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Code quality](<https://devfeed.tech/topics/code-quality.md>), [Python](<https://devfeed.tech/topics/python.md>), [Code review](<https://devfeed.tech/topics/code-review.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [React](<https://devfeed.tech/topics/react.md>)

Tags: [analysis](<https://devfeed.tech/tags/analysis.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [code](<https://devfeed.tech/tags/code.md>), [code-quality](<https://devfeed.tech/tags/code-quality.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [eslint](<https://devfeed.tech/tags/eslint.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [lint](<https://devfeed.tech/tags/lint.md>), [news](<https://devfeed.tech/tags/news.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

This article describes how Khan Academy uses custom linters and static analysis across JavaScript, Python, and Kotlin to prevent known bad patterns, keep duplicated logic or shared interfaces synchronized, and enforce frontend migration practices.

### Source excerpt

By Kevin Dangoor "Linting" source code to look for errors is nothing new (the original "lint" tool turned ... Read more

## Ensuring transaction-safety in Google App Engine

DevFeed: [Ensuring transaction-safety in Google App Engine](<https://devfeed.tech/articles/ensuring-transaction-safety-in-google-app-engine-27414.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/transaction-safety.htm>)

Author: Khan Academy

Published: 2016-06-27T22:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Transactions](<https://devfeed.tech/topics/transactions.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Code](<https://devfeed.tech/topics/code.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [cache](<https://devfeed.tech/tags/cache.md>), [code](<https://devfeed.tech/tags/code.md>), [database](<https://devfeed.tech/tags/database.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [google](<https://devfeed.tech/tags/google.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [news](<https://devfeed.tech/tags/news.md>), [tracing](<https://devfeed.tech/tags/tracing.md>), [transactions](<https://devfeed.tech/tags/transactions.md>)

### AI overview

The article explains how Khan Academy uses transactions and user-write locks with Google App Engine to prevent database corruption caused by concurrent requests overwriting one another. It describes hooks that detect transaction-safety violations and highlights caching and code-path mistakes that can cause stale data to be used inside transactions.

### Source excerpt

By Craig Silverstein In last week's exciting post, I described an alternative to transactions that we use at ... Read more

## Our Transition to React Native

DevFeed: [Our Transition to React Native](<https://devfeed.tech/articles/our-transition-to-react-native-27402.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/react-native-at-khan.htm>)

Author: Khan Academy

Published: 2020-07-09T22:00:00Z

Content type: opinion

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [React Native](<https://devfeed.tech/topics/react-native.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [React](<https://devfeed.tech/topics/react.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [architectures](<https://devfeed.tech/tags/architectures.md>), [backend](<https://devfeed.tech/tags/backend.md>), [bridge](<https://devfeed.tech/tags/bridge.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [change](<https://devfeed.tech/tags/change.md>), [code](<https://devfeed.tech/tags/code.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [ios](<https://devfeed.tech/tags/ios.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [news](<https://devfeed.tech/tags/news.md>), [react-native](<https://devfeed.tech/tags/react-native.md>)

### AI overview

Khan Academy describes completing its transition to React Native for its iOS and Android apps. The article explains why the team moved away from separate platform codebases and outlines the transition's exploration, straddling, and extinction phases.

### Source excerpt

In 2017, Khan Academy started using React Native in our iOS and Android apps. As of this year, we've reached a big milestone: our transition to React Native is complete! Every screen in the app is rendered in React Native.

## Working Remotely

DevFeed: [Working Remotely](<https://devfeed.tech/articles/working-remotely-27421.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/working-remotely.htm>)

Author: Khan Academy

Published: 2017-10-02T22:00:00Z

Content type: opinion

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Job](<https://devfeed.tech/topics/job.md>)

Tags: [engineering](<https://devfeed.tech/tags/engineering.md>), [news](<https://devfeed.tech/tags/news.md>), [remote](<https://devfeed.tech/tags/remote.md>), [remote-work](<https://devfeed.tech/tags/remote-work.md>), [time](<https://devfeed.tech/tags/time.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>), [work](<https://devfeed.tech/tags/work.md>)

### AI overview

Scott Grant reflects on working remotely after moving from Silicon Valley to Kingston, Ontario. He explains how remote work expands access to technology jobs outside major hubs and discusses the discipline and routine needed to work effectively.

### Source excerpt

By Scott Grant When my wife and I left Silicon Valley in sunny California to return to my ... Read more

## Making thumbnails fast

DevFeed: [Making thumbnails fast](<https://devfeed.tech/articles/making-thumbnails-fast-27392.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/making-thumbnails-fast.htm>)

Author: Khan Academy

Published: 2015-09-14T22:00:00Z

Content type: tutorial

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Image](<https://devfeed.tech/topics/image.md>), [pixel](<https://devfeed.tech/topics/pixel.md>), [Server](<https://devfeed.tech/topics/server.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [blog](<https://devfeed.tech/tags/blog.md>), [code](<https://devfeed.tech/tags/code.md>), [color](<https://devfeed.tech/tags/color.md>), [components](<https://devfeed.tech/tags/components.md>), [design](<https://devfeed.tech/tags/design.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [image](<https://devfeed.tech/tags/image.md>), [images](<https://devfeed.tech/tags/images.md>), [news](<https://devfeed.tech/tags/news.md>), [rgb](<https://devfeed.tech/tags/rgb.md>), [software](<https://devfeed.tech/tags/software.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>)

### AI overview

Khan Academy explains how it generated custom video thumbnails by resizing, desaturating, lightening, color-tinting, and overlaying text and branding on source images. The post also explains pixel multiplication and why the team implemented the image operations themselves because its server infrastructure could not use available libraries.

### Source excerpt

Note: This post contains quite a bit of LaTeX notation, which is not supported right now on this ... Read more

## Evolving our content infrastructure

DevFeed: [Evolving our content infrastructure](<https://devfeed.tech/articles/evolving-our-content-infrastructure-27375.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/evolving-our-content-infrastructure.htm>)

Author: Khan Academy

Published: 2016-09-19T22:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Tooling](<https://devfeed.tech/topics/tooling.md>), [Website](<https://devfeed.tech/topics/website.md>), [Network](<https://devfeed.tech/topics/network.md>)

Tags: [engineering](<https://devfeed.tech/tags/engineering.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [news](<https://devfeed.tech/tags/news.md>), [tooling](<https://devfeed.tech/tags/tooling.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

Khan Academy describes infrastructure changes and optimizations that helped make its Spanish-language site fully available in Spanish, focusing on how the team addressed untranslated new and changed content and plans to adapt the approach to more languages.

### Source excerpt

By Willow Chargin Every month, millions of learners use Khan Academy in languages other than English. Over the past ... Read more

## Profiling App Engine Memcached

DevFeed: [Profiling App Engine Memcached](<https://devfeed.tech/articles/profiling-app-engine-memcached-27394.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/memcached-profiling.htm>)

Author: Khan Academy

Published: 2017-05-01T22:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Latency](<https://devfeed.tech/topics/latency.md>), [Logging](<https://devfeed.tech/topics/logging.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>)

Tags: [engineering](<https://devfeed.tech/tags/engineering.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [latency](<https://devfeed.tech/tags/latency.md>), [logging](<https://devfeed.tech/tags/logging.md>), [memcached](<https://devfeed.tech/tags/memcached.md>), [news](<https://devfeed.tech/tags/news.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [profiling](<https://devfeed.tech/tags/profiling.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

Khan Academy engineers profile App Engine Memcached to estimate access latency and evaluate whether on-demand content fetching could support separate content trees for each language. Most requests showed 1-4 ms latency, usually below 10 ms, while a single multi-get performed similarly to a single get.

### Source excerpt

By Ben Kraft Last year, Willow wrote about how we optimized our in-memory content data to take up ... Read more

## Introducing SwiftTweaks

DevFeed: [Introducing SwiftTweaks](<https://devfeed.tech/articles/introducing-swifttweaks-27384.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/introducing-swifttweaks.htm>)

Author: Khan Academy

Published: 2016-05-09T22:00:00Z

Content type: release

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [feature flags](<https://devfeed.tech/topics/feature-flags.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [feature](<https://devfeed.tech/tags/feature.md>), [feature-flags](<https://devfeed.tech/tags/feature-flags.md>), [interface](<https://devfeed.tech/tags/interface.md>), [ios](<https://devfeed.tech/tags/ios.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [news](<https://devfeed.tech/tags/news.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

Khan Academy introduces SwiftTweaks, a Swift library for adjusting parameters in iOS apps on a device without recompiling. The article explains how to create tweak libraries, use tweak values and bindings, adjust animation settings, and access the runtime interface.

### Source excerpt

By Bryan Clark Today, we're releasing SwiftTweaks, a way to adjust your Swift-based iOS app without needing to ... Read more

## How Engineering Principles Can Help You Scale

DevFeed: [How Engineering Principles Can Help You Scale](<https://devfeed.tech/articles/how-engineering-principles-can-help-you-scale-27372.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/eng-principles-help-scale.htm>)

Author: Khan Academy

Published: 2019-08-21T22:00:00Z

Content type: opinion

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Code](<https://devfeed.tech/topics/code.md>), [Processes](<https://devfeed.tech/topics/processes.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [communication](<https://devfeed.tech/tags/communication.md>), [decision-making](<https://devfeed.tech/tags/decision-making.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [growth](<https://devfeed.tech/tags/growth.md>), [news](<https://devfeed.tech/tags/news.md>), [process](<https://devfeed.tech/tags/process.md>), [professional-development](<https://devfeed.tech/tags/professional-development.md>), [scale](<https://devfeed.tech/tags/scale.md>), [velocity](<https://devfeed.tech/tags/velocity.md>)

### AI overview

Marta Kosarchyn describes how Khan Academy's growing engineering team outgrew its initial principles. The article argues that evolving engineering principles can support scaling while preserving culture and engagement, and explains how the original approach eventually contributed to slower delivery, code clutter, and implicit architectural decisions.

### Source excerpt

By Marta Kosarchyn Our engineering team has grown a lot over the past couple of years, and we're ... Read more

[Next page](<https://devfeed.tech/sources/khan-academy.md?cursor=WyIyMDI2LTA5LTE2VDA5OjQ5OjUzLjE3Mzg0NiswMDowMCIsICJhMjYyNWNiNy00NzZlLTQxODUtOGM0MS02NTNjMjJjZWQ2NjkiXQ%3D%3D>)