A few months ago, while looking through one of my kids’ wardrobes, I stumbled upon a forgotten treasure: a Lego Mindstorms EV3 robot, gathering dust and long outgrown. The sight instantly sparked an idea—could I use this old robot as a playground to learn more about AI, agents, LLMs, and the Model Context Protocol (MCP)? I wanted a hands-on project that would let me experiment with these concepts in a tangible, physical way. Why I Started: Learning by Doing My main motivation was curiosity. I’d been reading about AI agents and the MCP ecosystem, and I wanted to see what it would take to give a physical robot a “brain” powered by modern AI. The goal was to bridge the gap between software and hardware, and to see how far I could push the boundaries of what’s possible with open-source tools and a bit of creative hacking. Dusting Off the Robot The EV3 had been sitting unused for years, but after a quick change of batteries and some fiddling, it was ready for action. The robot runs ev...
Currently, Google Apps Script does not support ES modules - and any usage of export/import will fail. One way of handling this is to use rollup.js to bundle your project into one single JavaScript file. The trick here is to make sure not to export any functions in your entry point code, e.g. index.ts , and to prevent any generation of export statement in the final bundle (see the custom rollup plugin in the rollup.config.js below). import { babel } from "@rollup/plugin-babel"; import { nodeResolve } from "@rollup/plugin-node-resolve"; const extensions = [".ts", ".js"]; const preventThreeShakingPlugin = () => { return { name: 'no-threeshaking', resolveId(id, importer) { if (!importer) { // let's not theeshake entry points, as we're not exporting anything in Apps Script files return {id, moduleSideEffects: "no-treeshake" } } return null; }...