As students learn more about Generative AI, one important topic for them to understand is the ability to take a pretrained model and adapt it for a new style or domain, i.e. fine-tuning. Teaching fine-tuning, however, can be challenging. Not only is it a complex topic, but there is a significant compute barrier for students to work through. In my CS-394 undergraduate class on Generative AI,…
In my CSP-400 class, a couple of the student teams have been building projects using NVIDIA IsaacLab . If you’ve not come across it, IsaacLab is an open source framework and set of algorithms for training robots. It’s built on top of NVIDIA IsaacSim and Omniverse, which enables training to happen at scale (i.e., thousands of robots learning simultaneously) in a sophisticated virtual environment. A…
In Nov 2024, Anthropic introduced the Model Context Protocol (MCP). MCP provides a standard interface that makes it possible for LLMs to access external tools and data sources. Since the announcement, there have been thousands of MCP servers published, with many for business applications, data access, and developer tools. In the education space, I believe MCP opens up some interesting learning…
When I was interviewing at Code.org, I asked whether there was a document-driven culture, one where well-written documents were the primary mechanism for driving decisions in the organization. The answer was a resounding yes! What I found is that like many other organizations, Code.org had a lot of documents, but they were often short and used for brainstorming. While these can be useful for…
Should CTOs - or VPs, Directors, Engineering Managers, or any other technical manager role - write code? It’s a polarizing question. The answer often depends on your background, definition of what a CTO should do, and the size of your organization. It’s a question I’ve struggled with for many years. I’ve regularly asked myself what, if any, code should I be writing? How can I add value without…
I was sad to learn of Niklaus Wirth’s death on New Year’s Day. In college, I used Modula-2, Pascal, and Delphi, and my love of coding may have been very different without Wirth’s contributions. May he rest in peace. As I was reminiscing about languages and tools I used to use, I recalled how much time I spent in the debugger. I was always using the debugger. It was the primary tool to learn new…
When I meet an engineering team for the first time, I’m always intrigued to learn the “shape” of the team. What do I mean by “shape”? Well, if you map the ratios of engineers across all levels in the team, you can often derive a shape from it. For example, imagine a team of engineers that range from SDE-1 (entry level) to SDE-5 (principal). Let’s say the team has 15 engineers and comprises five…
Like many organizations, Code.org has its fair share of technical debt. At the beginning of last school year, we agreed to dedicate 20% of engineering time towards reducing it. While we had good intentions, we didn’t do a stellar job of managing the time. Engineers would approach me asking me whether we had spent the 20% and if not, whether they could they use some of it. For this school year, we…
What is Technical Debt? We use the word frequently, yet we lack a consistent definition. Without a common understanding, it’s challenging to talk about technical debt, especially with those who don’t come from a software engineering background. Many equate technical debt to the age of software. It’s true that older codebases can carry a lot, but I’ve also seen technical debt creep in from day one.…
I often switch between Mac and Linux for development. The Mac is my go-to machine for my main applications and development specific to the Apple ecosystem. On a separate PC running Ubuntu, I work on several other repos and anything else required for x86 development. Switching between the two can be challenging, especially when trying to remember keyboard shortcuts. Many issues stem from both…
When I joined Code.org, several folks asked me what habits from Amazon I wanted to bring across with me. While Amazon has many peculiar qualities, the one I valued most was the culture of writing. As you’ve likely heard, Amazon values writing and using documents for decision making over creating slide decks. A good document makes meetings more efficient. Spending the first 10-15 minutes reading a…
Many professions incorporate practice into their daily routines. Athletes wake up early to practice regularly. Successful musicians often have a strict routine of practice. And many artists will dedicate time to practicing new techniques they then incorporate into their work. Yet, as software developers, we don’t embrace this concept. We often expect developers to perform (i.e., ship software)…