Skip to content
PROJECTS/JACINTHEBLOCK
2ND PLACE — JACHACKS 2026 · SOCIAL GOOD TRACK

JacInTheBlock

▲ 2ND @ JACHACKS

VS Code extension + Blockly visual code generator for the Jac language.

ROLEFull Stack Developer
DURATIONApril 2026
TEAM4 PEOPLE
JacInTheBlock — VS Code extension + Blockly visual code generator for the Jac language.

MISSION BRIEF

Built a VS Code extension with a custom LSP server for linting, diagnostics, and Jac-to-Python transpilation; implemented a Blockly-based visual code generator with real-time Jac code output. Adopted by the Jac open-source community and endorsed by the language creator.

THE PROBLEM

Jac is a new programming language built around graphs: you define nodes and edges, and "walkers" move through them. New languages live or die on tooling, and Jac's was thin. Beginners had no visual way into graph-oriented code, and people writing Jac in VS Code had little help with errors, formatting, or debugging. At JacHacks 2026 (Social Good track) we built for both groups: a visual block editor for learners and a real toolchain for people writing Jac every day.

APPROACH

For learners we built JacBlocks, a Blockly-based visual IDE. Students snap blocks together and see the generated Jac code update live, with a graph view of the nodes and walkers they created, a console for output, and starter examples such as "Build a Graph", "Walker", and "Dual Walkers". For developers we built a toolchain around one shared core: a parser, linter, formatter, and Jac-to-Python transpiler that the CLI and the VS Code extension both use, so editor and command-line results always agree. Diagnostics explain what failed, where, and what to do next, with a context line and a suggestion, not just a red underline.

ARCHITECTURE

A TypeScript monorepo with three packages. jac-core holds the parser, diagnostics, linter, formatter, and a transpiler that lowers the supported subset of Jac to Python with source-map line mappings. jac-cli wraps it with lint, format, transpile, and doctor commands. jac-vscode watches open Jac files, shows diagnostics, and adds commands for transpile, lint, a playground webview, and debugging. Debugging works by transpiling to Python and launching the generated file through the normal Python debugger, which gave us usable breakpoints quickly and leaves room for a dedicated Jac debug adapter later. The tools use native Jac tooling when it's installed and fall back to the local implementation when it isn't.

RESULTS

Won 2nd place in the Social Good track at JacHacks 2026. A single command, npm run proof:reliability, checks that the workspace builds, lint fixtures pass, the formatter is idempotent (formatting twice gives the same output), diagnostics include context and suggestions, and the fallback path still works. That let us show judges correctness, not just a list of features.

TECH ARSENAL

JacReactBlocklyVSCode Extension