[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"detail-sidebar-cat-0-en-105":3,"doc-seo-157997-105":59,"doc-detail-157997-en":131},{"code":4,"msg":5,"data":6},0,"success",[7,13,18,23,28,33,38,43,48,51,55],{"id":8,"doc_module":4,"doc_module_name":9,"category_name":10,"show_sort_weight":11,"slug":12},1,"Document","Story & Novel",90,"story-novel",{"id":14,"doc_module":4,"doc_module_name":9,"category_name":15,"show_sort_weight":16,"slug":17},2,"Literature",80,"literature",{"id":19,"doc_module":4,"doc_module_name":9,"category_name":20,"show_sort_weight":21,"slug":22},4,"Exam",70,"exam",{"id":24,"doc_module":4,"doc_module_name":9,"category_name":25,"show_sort_weight":26,"slug":27},5,"Comic",60,"comic",{"id":29,"doc_module":4,"doc_module_name":9,"category_name":30,"show_sort_weight":31,"slug":32},6,"Technology",50,"technology",{"id":34,"doc_module":4,"doc_module_name":9,"category_name":35,"show_sort_weight":36,"slug":37},7,"Healthcare",40,"healthcare",{"id":39,"doc_module":4,"doc_module_name":9,"category_name":40,"show_sort_weight":41,"slug":42},8,"Research & Report",30,"research-report",{"id":44,"doc_module":4,"doc_module_name":9,"category_name":45,"show_sort_weight":46,"slug":47},9,"Religion & Spirituality",20,"religion-spirituality",{"id":46,"doc_module":4,"doc_module_name":9,"category_name":49,"show_sort_weight":46,"slug":50},"World Cup","world-cup",{"id":52,"doc_module":4,"doc_module_name":9,"category_name":53,"show_sort_weight":52,"slug":54},10,"Lifestyle","lifestyle",{"id":56,"doc_module":4,"doc_module_name":9,"category_name":57,"show_sort_weight":24,"slug":58},19,"General","general",{"code":4,"msg":60,"data":61},"ok",{"site_id":62,"language":63,"slug":64,"title":65,"keywords":66,"description":67,"schema_data":68,"social_meta":124,"head_meta":126,"extra_data":128,"updated_unix":130},105,"en","sed-481-scala-at-duolingo","SED 481 - Scala at Duolingo","","Software Engineering Daily Episode 481 features a technical discussion with Andre Kenji Hori, a senior engineer at Duolingo, focusing on the rewrite of Duolingo’s session generator. The conversation covers what Duolingo is, how its game-like language learning experience works at scale, how teams are organized, and why the engineering effort moved from Python to Scala while changing architecture. It also explains how sessions are formed from exercise data and why preprocessing is needed to avoid excessive on-the-fly computation.",{"@graph":69,"@context":123},[70,84,106],{"@type":71,"itemListElement":72},"BreadcrumbList",[73,77,79,82],{"item":74,"name":75,"@type":76,"position":8},"https://docshare.wps.com","Home","ListItem",{"item":78,"name":9,"@type":76,"position":14},"https://docshare.wps.com/document/",{"item":80,"name":30,"@type":76,"position":81},"https://docshare.wps.com/document/technology/",3,{"item":83,"name":65,"@type":76,"position":19},"https://docshare.wps.com/document/sed-481-scala-at-duolingo/157997/",{"url":83,"name":65,"@type":85,"image":86,"author":91,"headline":65,"publisher":94,"fileFormat":97,"inLanguage":63,"description":67,"dateModified":98,"datePublished":99,"encodingFormat":97,"isAccessibleForFree":100,"interactionStatistic":101},"DigitalDocument",{"url":87,"@type":88,"width":89,"height":90},"https://docshare.wps.com/thumbnails/sed-481-scala-at-duolingo/157997.png","ImageObject",300,407,{"name":92,"@type":93},"Liam","Person",{"url":74,"name":95,"@type":96},"DocShare","Organization","application/pdf","2026-10-10","2026-08-29",true,{"@type":102,"interactionType":103,"userInteractionCount":105},"InteractionCounter",{"@type":104},"ViewAction",12,{"@type":107,"mainEntity":108},"FAQPage",[109,115,119],{"name":110,"@type":111,"acceptedAnswer":112},"What problem does Duolingo’s session generator solve?","Question",{"text":113,"@type":114},"It pulls course and exercise data and selects the most suitable exercises for a learner at that moment to assemble a bite-sized session.","Answer",{"name":116,"@type":111,"acceptedAnswer":117},"Is a learning session generated on the fly?",{"text":118,"@type":114},"Part of the session is generated on the fly, but significant preprocessing is performed because the amount of data per session is large and fully on-the-fly computation would be too slow.",{"name":120,"@type":111,"acceptedAnswer":121},"Why did Duolingo rewrite the session generator and move toward Scala?",{"text":122,"@type":114},"The episode addresses the reasons behind the rewrite and what drove the technology-stack change from Python to Scala while the architecture was also updated.","https://schema.org",{"og:url":83,"og:type":125,"og:title":65,"og:site_name":95,"og:description":67},"article",{"robots":127,"canonical":83},"index,follow",{"doc_id":129,"site_id":62},157997,1787993369,{"code":4,"msg":5,"data":132},{"doc_id":129,"user_id":133,"nickname":92,"user_avatar":134,"doc_module":4,"category_id":29,"category_name":30,"doc_title":65,"doc_description":67,"doc_content":135,"file_id":136,"file_url":137,"file_type":138,"file_size":139,"view_count":105,"is_deleted":4,"is_public":8,"is_downloadable":8,"audit_status":8,"page_count":140,"language":141,"language_code":63,"site_id":62,"html_lang":63,"table_of_contents":142,"faqs":143,"seo_title":144,"seo_description":67,"update_tm":130,"read_time":145},8796095461564,"https://ap-avatar.wpscdn.com/davatar_155a257f0dc6eb9ab79c44ca47cae57d","SED 481 Transcript  \nEPISODE 481  \n[INTRODUCTION]  \n[0:00:00.6] JM: Duolingo is a language learning platform with over 200 million users. I’ve personally used it to learn some Spanish. On a daily basis, millions of users receive customized language lessons targeted speciﬁcally for that user, these lessons are generated by a system called the session generator. Andre Kenji Hori is a senior engineer at Duolingo and he wrote about the process of rewriting the session generator moving from Python to Scala and changing the architecture at the same time.  \nIn today’s episode, guest host Adam Bell talks to Andre about the reasons for the rewrite and what drove them to move to Scala as well as the experience of moving from one technology stack to another.  \n[SPONSOR MESSAGE]  \n[0:00:00.6] JM: Cloudﬂare runs 10% of the internet, boosting the performance and security of millions of websites. Many of you probably already use Cloudﬂare on your sites but we’re not talking about using Cloudﬂare today. We’re talking about building on top of it. If you’re a developer, you can build apps which can be installed by the millions of sites which rely on Cloudﬂare. You can even sell your apps.  \nThey can make you money every month. Your users can log in or register to your service inside your app, they can get a real time preview of your tool live on their site and they can start paying you monthly all from within Cloudﬂare apps. They can go from never having ever heard of you or your service to having it installed on their site and paying you in seconds.  \nVisit cloudﬂ[are.com/sedaily to watch](are.com/sedaily to watch) how you can build and deploy an app in less than three minutes. That’s cloudﬂ[are.com/sedaily](are.com/sedaily), thank you to Cloudﬂare for being a new sponsor of Software Engineering Daily.  \n[INTERVIEW]  \n© 2017 Software Engineering Daily 1  \nSED 481 Transcript  \n[0:02:07.8] AB: Andre Kenji Jorge is a senior software engineer at Duolingo. Andre, welcome to software engineering daily.  \n[0:02:16.7]AKJ: Hello, welcome for inviting me.  \n[0:02:19.2] AB: Yeah. You have a great sort of case study about the rewrite works that’s been done at Duolingo but before we get into that, I was wondering if you could explain what Duolingo is?  \n[0:02:30.6] AKJ: Yes, Duolingo is a language learning app, we have around 200 million users as of today and in the app, well people can learn how to learn any language by doing exercisesand translating sentences from their language to their native language they want to learn and then we have other exercises that practice listening skills and some reading skills, some grammar skills.  \n[0:03:02.1] AB: It tries to make it sort of a game to learn a new language, is that correct?  \n[0:03:06.2] AKJ: Yes, that’s correct, we have all of the gamiﬁcation mechanisms such as hearts, levels, experience, all of that you make the language learning experience more engaging because when you’re learning a language, that’s the sort of process that takes people like several years to have become ﬂuent in a language, right?  \nBy gamifying it, we make it easier for our users to keep learning and keep engaged so that it can achieve this very long term goal.  \n[0:03:37.4] AB: How big is the engineering team at Duolingo?  \n[0:03:41.0] AKJ: Engineering team should be around 40 to 50 people maybe?  \n[0:03:46.1] AB: How is that organized?  \n© 2017 Software Engineering Daily 2  \nSED 481 Transcript  \n[0:03:48.3] AKJ: We have several teams, we have some product teams which we call product teams for example, we have the learning team which is the team that focuses on improving our learning metrics and improving the learning experience to users, we have for example our growth team which is concerned with expanding our user base and keeping people engaged and we also have some more foundational teams.  \nFor example, Q&A, our operations.  \n[0:04:18.8] AB: Which team are you on?  \n[0:04:20.1] AKJ: I’m in a team called the architecture team. I","cbCais8Ms5G4qC3k","https://ap.wps.com/l/cbCais8Ms5G4qC3k","pdf",120873,21,"English","# Introduction\n# Interview\n## Duolingo overview and learning model\n## Engineering organization and architecture role\n## Session generator purpose and workflow\n# Sponsor message","[{\"question\":\"What problem does Duolingo’s session generator solve?\",\"answer\":\"It pulls course and exercise data and selects the most suitable exercises for a learner at that moment to assemble a bite-sized session.\"},{\"question\":\"Is a learning session generated on the fly?\",\"answer\":\"Part of the session is generated on the fly, but significant preprocessing is performed because the amount of data per session is large and fully on-the-fly computation would be too slow.\"},{\"question\":\"Why did Duolingo rewrite the session generator and move toward Scala?\",\"answer\":\"The episode addresses the reasons behind the rewrite and what drove the technology-stack change from Python to Scala while the architecture was also updated.\"}]","SED 481 - Scala at Duolingo | PDF",53]