Software Engineering for Machine Learning: A Case Study
Abstract—Recent advances in machine learning have stimulated widespread interest within the Information Technology sector on integrating AI capabilities into software and services. This goal has forced organizations to evolve their development processes. We report on a study that we conducted on observing software teams at Microsoft as they develop AI-based applications. We consider a nine-stage workflow process informed by prior experiences developing AI applications (e.g., search and NLP) and data science tools (e.g. application diagnostics and bug reporting). We found that various Microsoft teams have united this workflow into preexisting, well-evolved, Agile-like software engineering processes, providing insights about several essential engineering challenges that organizations may face in creating large-scale AI solutions for the marketplace. We collected some best practices from Microsoft teams to address these challenges. In addition, we have identified three aspects of the AI domain that make it fundamentally different from prior software application domains: 1) discovering, managing, and versioning the data needed for machine learning applications is much more complex and difficult than other types of software engineering, 2) model customization and model reuse require very different skills than are typically found in software teams, and 3) AI components are more difficult to handle as distinct modules than traditional software components — models may be “entangled” in complex ways and experience non-monotonic error behavior. We believe that the lessons learned by Microsoft teams will be valuable to other organizations.
While the tool is aimed at repos, more generally a tool for taking a ton of different files and turning them into a single source that can be thrown at some sort of learning system so you can ask questions of it.
A proposed standard for "docstrings" for TypeScript. Well, not docstrings in the Lisp/Python sense, but comments that can be used to document an API in place and allow for the generation of documentation from them.
I'm a big fan of keeping notes as I work, as I develop software. I like to /try/ and take a lab notebook approach where possible. But, to this day, I've not really settled on the "one right approach".
OpenNext Gets Closer to Making Next.js Truly Portable
I've read so many thanks about Next.js that suggest it's not a good time if you want to deploy anywhere other than with Vercel. It seens that this project aims to solve that problem.
maurymarkowitz/101-BASIC-Computer-Games: Type-in programs from the original 101 BASIC Computer Games, in their original DEC and Dartmouth dialects. No, this is *not* the same as BASIC Computer Games.
A fantastic collection of old BASIC games. Any that are full-screen text-based could be fun to turn into Textual-based apps, for example.
This looks like something that I should work with at some point in the future. I'm not sure how or why yet, but it looks like it could be a ton of fun.