JITX
1207 Tenth Street
Berkeley, CA 94710
617-549-0578
jrb at pobox dot com
http://www.jbot.org
The overall goal of my research is to introduce software techniques to accelerate the design of electromechanical systems: changing the way we design, what components we use, and what machines we use to fabricate them with.
Modern electronic designs are increasingly complex systems with many specialized processing engines. The complexity of these systems and the severe physical constraints imposed by technology scaling are limiting the hardware efficiency gains possible using traditional manual design. Automated exploration of much larger design spaces is required to uncover further efficiency gains, but will require a much higher level of design description to avoid restricting the set of possible design solutions while maintaining architect productivity. I am working on a set of techniques for accelerating the entire hardware design cycle.
Despite new computer controlled machines that theoretically speed up fabrication of mechanical systems, 3D design remains difficult and fabrication remains manually intensive. In order to address this, I am exploring the ideas of {\it shape compilers} as well as the application of declarative design methods to the design and fabrication of articulated forms to make design and fabrication dramatically more productive. Shape compilers are software applications which transform a high level design into simple and inexpensive parts ready for rapid manufacturing.
Ph.D., Computer Science,
University of Massachusetts, Amherst (1992)
Thesis Topic: Connectionist Modeling and Control of Finite State Environments
Thesis Advisers: Andrew Barto and David Rumelhart
M.S., Computer Science,
University of Massachusetts, Amherst (1989)
Thesis Topic: Learning to Represent State
Thesis Advisers: Andrew Barto and Richard Sutton
B.S., Computer Engineering and Cognitive Science,
University of California, San Diego (1985)
Thesis Topic: A Boltzmann Machine Solution to the Waltz Labeling Problem
Thesis Adviser: David Rumelhart
Engineering Leader / Cofounder, JITX (2018 - present)
Automating the design of electronics.
Adjunct Assistant Professor, UC Berkeley (2012 - 2021)
Designing hardware construction languages for specifying highly parameterized hardware generators used in design exploration using fast emulation (RAMP) with John Wawrznek and Krste Asanovic. The specific target is lowering power requirements for exascale computing. Designing a range of ways to speed up FPGA development time using novel FPGA hardware and software. Exploring novel material compatible computing for embedding computing within materials and world at large. Advising students and teaching seminars.
Visiting Research Engineer, UC Berkeley (2010 - 2012)
Designing hardware construction languages for specifying highly parameterized hardware generators used in design exploration using fast emulation (RAMP) with John Wawrznek and Krste Asanovic.
Senior Research Scientist, Co-founder Other Lab (2009 - 2012)
Developing pneumatic and digital fluidic robotic design / simulation tools under new DARPA program towards revolutionizing how we design and make robots in a roll to roll fashion. Continuing work on programmable matter languages, workflows, and runtimes for DARPA funded MIT CBA / Media Lab programmable matter team. Developing distributed robot motion language for use on the chain robot and other MIT CBA projects. Continuing developement of future fabrication software for creation of 3D shapes made out of 2D parts. Developing languages and algorithms for architecture, layout and arithmetic in Reconfigurable Asynchronous Logic Automata (RALA). Managing business and research opportunities and relationships with universities, funders, and clients. Ongoing advising and managing of students on programmable matter and RALA projects.
Principal Research Scientist, Makani Power (2008 - 2009)
Explored ideas in programmable matter, spatial computing and future fabrication. Developed ideas and algorithms for end-to-end CAD/CAM software tool chain for DARPA funded MIT CBA / Media Lab programmable matter team. The platform is a mechanical protein folding robot that fills space. Developed future fabrication software for creation of origami style and stacked laminates construction of shapes. Developed coded mechanical protein folding toy. Advised and managed MIT students on programmable matter and RALA projects.
Research Scientist, MIT AI Lab (2000 - 2008)
Explored the design and implementation of next generation programming languages and algorithms to support spatial computers and space time programming. Advising graduate and undergraduate students. Research includes the creation of new spatial computing platforms, distributed algorithms, adaptive methods, abstractions, and programming languages. Areas include modular robotics, swarm robotics, kinetic structures, sensor networks, programmable matter, and FPGA’s. Led MIT DARPA NEST program in sensor networks where we developed new languages, localization, threat avoidance, and target tracking software. Also help manage dynamic languages group where we explored the design and implementation of next generation programming languages to support intelligent, adaptive, complex software systems.
President and Cofounder of Functional Objects Inc (1999 - 2000)
Commercializing an advanced implementation of the object-oriented dynamic programming language called Dylan.
Principal Software Engineer and Engineering Manager, Harlequin Inc (1994 - 1999)
Assisted (Apple) in the design of a general-purpose object-oriented dynamic language called Dylan.
Wrote a large part of the Dylan compiler, runtime, and libraries. Designed and implemented class-based and orthogonal persistence based object-oriented databases, one of which is used by the Dylan compiler for separate compilation. Wrote performance monitoring, analysis, and visualization tools.
Coordinated Dylan development activities including the planning of task schedules, the supervision of developers, and the coordination and running of meetings.
Researcher, IRCAM (1994 - 1996)
Assisted in development of real-time Max/FTS with Miller Puckette and David Zicarelli and assisted composer Phillipe Manoury on opera. Researched alternative text based programming languages for real-time music creation.
Postdoctoral Fellow, ICSI Berkeley (1992)
Participated in the development of a neural network supercomputer. My job was to advise the hardware designers as to the requirements of the popular connectionist algorithms and architectures. This was accomplished through rigorous analysis of algorithms and simulation studies. Participated in the design of a new object-oriented language called Sather.
Visiting Scholar, Stanford Univ. (1991 - 1992)
Developed a neural network simulator to be used by David Rumelhart and his neural network research group. Developed image-processing code for OBVIUS, an interactive image processing system.
Research Assistant, University of Mass. (1985 - 1991)
Designed and analyzed connectionist learning algorithms under the supervision of Andrew Barto.
Visiting Graduate Student, Stanford Univ. (1989 - 1991)
Developed connectionist learning architectures and algorithms for navigation under the supervision of David Rumelhart.
Summer Research Student, GTE Labs (1987)
Developed a theory for learning to represent state under the supervision of Richard Sutton.
Summer Research Student, HP Labs (1984)
Assisted in the analysis of graphics algorithms to be used to guide the design of a graphics architecture for the PA-RISC.
Research Assistant, Harold Cohen, UCSD (1980 - 1985)
Developed plotter software, vector based shading and scribbling, and rule based programming for expert drawing system.
S. Karandikar, H. Mao, D. Kim, D. Biancolin, A. Amid, D. Lee, N. Pemberton, E. Amaro, C. Schmidt, A. Chopra, Q. Huang, K. Kovacs, B. Nikolic, R. Katz, J. Bachrach, K. Asanovic. ClusterSim: FPGA-Accelerated, Cycle-Accurate Scale-Out System Simulation in the Public Cloud. In 45th International Symposium on Computer Architecture (ISCA'18) 2018.
A. Wang, P. Rigge, A. Izraelevitz, C. Markley, J. Bachrach, B. Nikolic. ACED: A Hardware Library for Generating DSP Systems. To appear in (DAC) 2018.
R. Dutra, K. Laeufer, J. Bachrach, K. Sen. Efficient Sampling of SAT Solutions for Testing. To appear in 40th International Conference on Software Engineering (ICSE) 2018.
D. Kim, C. Celio, D. Biancolin, J. Bachrach, K. Asanovic. Evaluation of RISC-V RTL with FPGA-Accelerated Simulation. Second Workshop on Computer Architecture Research with RISC-V (CARRV 2018)
A. Izraelevitz, J. Koenig, P. Li, R. Lin, A. Wang, A. Magyar, C. Schmidt, C. Markley, J. Lawson, J. Bachrach. Reusability is FIRRTL ground: Hardware construction languages, compiler frameworks, and Transformations. IEEE/ACM International Conference on Computer-Aided Design (ICCAD) 2017.
J. Koenig, D. Biancolin, J. Bachrach, K. Asanovic. A Hardware Accelerator for Computing an Exact Dot Product. IEEE 24th Symposium on Computer Arithmetic (ARITH), 2017.
J. Bachrach, D. Biancolin, A. Buchan, D. Haldane, R. Lin. JITPCB. IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS) 2016
D. Kim, A. Izraelevitz, C. Celio, H. Kim, B. Zimmer, Y. Lee, J. Bachrach, K. Asanovic. Strober: A Fast and Accurate Sample-Based Energy Simulation Framework for Arbitrary RTL. ISCA 2016
Y. Lee, A. Waterman, H. Cook, B. Zimmer, B. Keller, A. Puggelli, J. Kwak, J. Bachrach, D. Patterson, E. Alon, B. Nikolic, K. Asanovic. An Agile Approach to Building RISC-V Microprocessors. IEEE Micro Mar/Apr 2016.
A. Wang, J. Bachrach, B. Nikolic. A Generator of Memory-based Runtime-reconfigurable 2^N 3^M 5^K FFT Engines. ICASSP 2016.
A. Buchan, J. Bachrach, R. Fearing. Towards a Minimal Architecture for a Printable, Modular, and Robust Sensing Skin. IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS) 2012.
J. Bachrach, H. Vo, B. Richards, R. Avizienis, J. Wawrzynek, K. Asanovic. Chisel: Constructing Hardware in a Scala Embedded Language. Design Automation Conference (DAC) 2012.
J. Perkins, S. Kim, S. Larsen, S. Amarasinghe, J. Bachrach, M. Carbin, C. Pacheco, F. Sherwood, S. Sidiroglou, G. Sullivan, W. Wong, Y. Zibin, M. Ernst, M. Rinard. Automatically Patching Errors in Deployed Software. Symposium on Operating Systems Principles (SOSP) 2009.
J. Beal, J. Bachrach, D. Vickery, M. Tobenkin. Fast Self-Stabilization for Gradients. International Conference on Distributed Computing in Sensor Systems (DCOSS) 2009, June 2009.
N. Correll, D. Rus, J. Bachrach, D. Vickery. Ad-hoc Wireless Network Coverage with Networked Robots that Can not Localize. IEEE International Conference on Robotics and Automation (ICRA) 2009, May 2009.
J. Beal, N. Correll, L. Urbina, J. Bachrach. Behavior Modes for Randomized Robotic Coverage. Second International Conference on Robot Communication and Coordination 2009, April 2009.
J. Bachrach, D. Qumsiyeh, M. Tobenkin. Hardware Scripting in Gel. IEEE Symposium on Field-Programmable Custom Computing (FCCM), April 2008.
J. Beal, J. Bachrach. Cells Are Plausible Targets for High-Level Spatial Languages. Spatial Computing Workshop, October 2008.
J. Bachrach, J. McLurkin, A. Grue. A Language for Programming Multi-Robot Systems Using the Amorphous Medium Abstraction. International Conference on Autonomous Agents and Multiagent Systems (AAMAS), May 2008
J. Beal, J. Bachrach, D. Vickery, M. Tobenkin. Fast Self-Healing Gradients. ACM Symposium on Applied Computing, March 2008.
J. Bachrach, J. Beal, J. Horowitz, D. Qumsiyeh. Empirical Characterization of Discretization Error in Gradient-based Algorithms. IEEE International Conference on Self-Adaptive and Self-Organizing Systems (SASO), October 2008
J. Bachrach, J. Beal. Continuous Space-Time Semantics for Adaptive Program Execution. IEEE International Conference on Self-Adaptive and Self-Organizing Systems (SASO), July 2007
C. Taylor, A. Rahimi, J. Bachrach, H. Shrobe, A. Grue. Simultaneous Localization, Calibration, and Tracking in a Sensor Network. ACM/IEEE International Conference on Information Processing in Sensor Networks (IPSN), April, 2006
R. Nagpal, H. Shrobe, J. Bachrach. Organizing a Global Coordinate System from Local Information on an Ad Hoc Sensor. ACM/IEEE International Conference on Information Processing in Sensor Networks (IPSN), 2003, Palo Alto.
J. Bachrach, K. Playford. The Java Syntactic Extender. In ACM Proceedings of Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 2001, Tampa Florida.
J. Bachrach. A connectionist architecture for navigation. In David S. Touretzky, editor, Advances in Neural Information Processing Systems 3, San Mateo, CA, 1991. IEEE Conference on Neural Information Processing Systems Natural and Synthetic, Morgan Kaufmann Publishers.
M. Mozer, J. Bachrach. Discovering the structure of a reactive environment by exploration. In David S. Touretzky, editor, Advances in Neural Information Processing Systems 2, San Mateo, CA, 1990. IEEE Conference on Neural Information Processing Systems Natural and Synthetic.
J. Bachrach. Learning to represent state. In ICNN Conference Proceedings, page 288. International Neural Network Society, Pergamon Press, September 1988.
Y. Lee, A. Waterman, H. Cook, B. Zimmer, B. Keller, A. Puggelli, J. Kwak, J. Bachrach, D. Patterson, E. Alon, B. Nikolic, K. Asanovic. An Agile Approach to Building RISC-V Microprocessors. IEEE Micro Mar/Apr 2016.
K. Cheung, E. Demaine, J. Bachrach, S. Griffith. Programmable Assembly with Universally Foldable Strings (Moteins). IEEE Transactions on Robotics, June 2011.
J. Bachrach, J. Beal, J. McLurkin. Composable Continuous-Space Programs for Robotic Swarms. Neural Computing and Applications Journal, Volume 19, Issue 6, September 2010.
J. Beal, J. Bachrach. Infrastructure for Engineered Emergence on Sensor/Actuator Networks. IEEE Intelligent Systems, March/April, 2006
J. Bachrach, R. Nagpal, M. Salib, H. Shrobe. Experimental Results and Theoretical Analysis of a Self-organizing Global Coordinate System for Ad Hoc Sensor Networks. Telecommunications System Journal, Special Issue on Wireless Sensor Networks, Kluwer Academic Publishing 2004.
M. Mozer, J. Bachrach. Discovering the structure of a reactive environment by exploration. Machine Learning Journal, 1991.
M. Mozer, J. Bachrach. Discovering the structure of a reactive environment by exploration. Neural Computation, 2(4), 1990.
P. Schmidt-Nielsen, K. Chen, J. Bachrach, S. Greenwald, F. Green and N. Gershenfeld. Cryptography with Asynchronous Logic Automata"Springer Lecture Notes in Computer Science", 2011.
J. Bachrach, C. Taylor. Localization in Sensor Networks. in "Handbook of Sensor Networks" book, edited by Ivan Stojmenovic, Wiley 2005.
J. Bachrach, M. Mozer. Connectionist modeling and controlling of finite state systems in the absence of complete state information. In Yves Chauvin and David E. Rumelhart, editors, Back-propagation: Theory, Architectures and Applications. Erlbaum, Hillsdale, N.J.
J. Bachrach, A. Magyar, P. Dabbelt, P. Li, K. Asanovic.Cyclist: Accelerating Hardware Design. 2017 IEEE/ACM International Conference on Computer-Aided Design (ICCAD).
A. Izraelevitz, J. Koenig, R. Lin, C. Markley, J. Lawson, C. Celio, C. Schmidt, P. Li, E. Alon, B. Nikolic, J. Bachrach.Improving Hardware Reusability: Software Defined Hardware.GOMACTech-17, 2017-03-01, Reno, Nevada.
K. Asanovic, R. Avizienis, J. Bachrach, S. Beamer, D. Biancolin, C. Celio, H. Cook, D. Dabbelt, J. Hauser, A. Izraelevitz, S. Karandikar, B. Keller, D. Kim, J. Koenig, Y. Lee, E. Love, M. Maas, A. Magyar, H. Mao, M. Moreto, A. Ou, David A., B. Richards, C. Schmidt, S. Twigg, H. Vo, A. Waterman. The Rocket Chip Generator. Tech Report UCB/EECS-2016-17.
P. Li, A. Izraelevitz, J. Bachrach. Specification for the FIRRTL Language. Tech Report UCB/EECS-2016-9.
J. Bachrach, J. Beal. Building Spatial Computers. MIT CSAIL TR 2007-0017, March 2007
J. Bachrach, J. Beal. Programming a Sensor Network as an Amorphous Medium . MIT CSAIL TR 2006-069, June 2006
C. Taylor, A. Rahimi, J. Bachrach, H. Shrobe. Simultaneous Tracking and Localization in Sensor Networks. MIT AI Memo AIM-2005-016, April 26, 2005
J. Bachrach. Connectionist learning in backgammon. In Proceedings of the Connectionist Models Summer School, Pittsburgh, PA, June 1986. Carnegie Mellon University.
Marvell Semiconductor, Santa Clara (2016-05-04),
Software Defined Hardware
Cavium Networks, San Jose (2016-03-31),
Software Defined Hardware
(Xerox) PARC , Palo Alto CA (2015-12-02),
Software Defined Hardware Defined Software
Sketching in Hardware, Biosphere2 AZ (2015-07-31),
Software Defined Hardware Defined Software
EPFL, Lausanne Switzerland (2015-07-17),
Chipper Bootcamp
AMD, Sunnyvale CA (2015-01-26),
Chisel: Accelerating Hardware Design
Google Tech Talk, Mountain View CA (2014-10-14),
Chisel: Accelerating Hardware Design
UC Berkeley PL Seminar, Berkeley CA (2014-10-09),
Chisel: Accelerating Hardware Design
nVidia, Santa Clara CA (2014-06-06),
Chisel: Accelerating Hardware Design
Microsoft Programming Language Talk Series, Redmond WA (2013-09-20),
Chisel: Applying Software Engineering Techniques to Hardware Design
FPGA 2013, Invited Panel on Innovator's Dilemma, Monterey (2013-02-12),
Future FPGAs
Sketching in Hardware 2012, Portland (2012-07-21),
Revisiting Design + Fabrication Complexity
Kestrel Institute Retreat 2012, Lake Tahoe (2012-02-04),
Computing Matters
New Directions in Software Technology 2011, St John (2011-12-08),
Shape Compilers
Berkeley EECS Joint Colloquium Distinguished Lecture Series, Berkeley (2011-11-02),
Computing Matters
Berkeley Wireless Research Center Summer Retreat, Berkeley (2011-06-10),
Computing Matters
UC Berkeley OSQ/PL Club, Berkeley (2011-05-09),
Spatial Computing in Proto
Berkeley Institute of Design Lectures Series, Berkeley (2010-02-06),
Computing Matters
MIT Media Lab, How to Make (almost) Anything Class, Cambridge (2010-11-17),
The Education of Matter
Nokia Research Lab, Palo Alto, CA (2010-11-09),
Bridging the Hardware / Software Divide
CU Boulder, Computer Science Department (2010-10-14),
Bridging the Hardware / Software Divide
MIT Architecture Department Computational Lecture Series, Cambridge (2010-10-09),
The Education of Matter
Fab5, Pune, India (2010-08-20),
Programmable Matter Folding Workflow
MIT Media Lab Class: How To Make Something That Makes (almost) Anything, Cambridge (2009-02-21),
Programmable Matter Software Workflow
Smart Geometry Conference, San Francisco (2009-03-29)
Computing Geometry
Parlab Seminar Series, Berkeley CS Department, Berkeley (2008-04-17)
Spatial Computing in Proto
DCOSS, Marina Del Rey (2009-06-09)
Fast Self-Stabilization for Gradients
EE380 Computer Science Seminar Series, Stanford CS Department, Stanford (2008-04-16)
Spatial Computing in Proto
Google Tech Talk, Boston (2008-02-21),
Spatial Computing in Proto
BBN Seminar, Cambridge (2008-02-05),
Spatial Computing in Proto
New Directions In Software Technology, Saint John's (2007-12-05),
Proto Physics
New Directions In Software Technology, Saint John's (2007-12-04),
Space-Time Programming in Proto
Ideas Boston, Federal Reserve Building (2007-10-04),
Computational Dance: Challenges and Opportunities
New England Programming Language Seminar, TUFTS (2007-04-11),
Spatial Programming in Proto
DARPA ISAT study on Engineered Ensembles Effects, CMU (2007-04-06),
Space-Time Programming in Proto
Animation as Installation class, Harvard (2007-03-16),
Computational Animation
Programming Languages Group Meeting, Harvard (2007-03-14),
Space-Time Programming in Proto
Self-Organizing Systems Group Meeting, Harvard (2007),
Space-Time Programming in Proto
Growth, Form, and Interaction: Artists and Engineers Look to Biology, Harvard (2006),
Proto and Gooze.
Self-Organizing Systems Group Meeting, Harvard (2005),
Neighborhood Amorphous Programming Language.
Lightweight Languages 4 Conference, MIT (2004),
Gooze: A Multimedia Stream Processing Language.
Colloquium, Center for Research in Computing in the Arts, UCSD (2003),
Alien Goo: A Lightweight C Embedding Facility
Dynamic Languages Seminar, MIT (2003),
Alien Goo: A Lightweight C Embedding Facility
Computer Science Colloquium, BBN (2002),
The Java Syntactic Extender
Programming Languages Seminar, Northeastern University (2002),
The Java Syntactic Extender
Computer Science Colloquium, Yale (2002),
The Java Syntactic Extender
Computer Science Colloquium, Harvard (2002),
Simple Dynamic Compilation with GOO
Lightweight Languages 1 Conference, MIT (2001),
Rethinking Lightweight Languages, Java Syntactic Extender and Proto
New Jersey Programming Language Seminar, AT&T (2001),
The Java Syntactic Extender
Dynamic Languages Seminar, MIT (2001),
Simple and Efficient Subclass Predicates
OOPSLA Conference (2001),
The Java Syntactic Extender
Dynamic Languages Seminar, MIT (2000),
Efficient Predicate Dispatch for Dylan
Dynamic Languages Seminar, MIT (2000),
Procedural Macros for Java
NIPS Conference (1991),
A Connectionist Architecture for Navigation
MIT 6.894 (2001), co-taught with Greg Sullivan and Kostas Arkoudas
The Design and Implementation of Dynamic Object-Oriented Languages
Huy Vo, UC Berkeley EECS Masters (upcoming Spring 2013), co-adviser with Krste Asanovic
High Level Chisel Design (working title)
Maxim Lobovsky, MIT Media Lab Masters (2011), co-adviser with Neil Gershenfeld and thesis reader
Stochastic Programmable Matter
Jonathan Ward, MIT Media Lab Masters (2010), co-adviser with Neil Gershenfeld
Printing Digital Materials
Velin Tzanov, MIT Masters (2006), primary adviser,
Distributed Area Search with a Team of Robots
Christopher Taylor, MIT Masters (2005), primary adviser,
Simultaneous Localization and Tracking in Wireless Ad-hoc Sensor Networks
Adam Eames, MIT Masters (2005), primary adviser,
Enabling Path Planning and Threat Avoidance with Wireless Sensor Networks
Michael Salib, MIT Masters (2003), primary adviser,
Starkiller -- A Type Inferencing System for Python
Andrew Sutherland, MIT Masters (2002), primary adviser,
Towards RSEAM: Resilient Serial Execution on Amorphous Machines
James Knight, MIT Masters (2002), primary adviser,
Parameterized Types for GOO
Aaron Ucko, MIT Masters (2001), co-adviser with Greg Sullivan,
Predicate Dispatching in the Common Lisp Object System.
Curator, MIT Stata Center Gallery (2006 - present),
COLLISION 11-12
Curator, Axiom Gallery (2007 - present),
COLLISION:technomorph
Curator, Art Interactive (2004 - 2006),
COLLISION 6-10
Curator, Boston Art Windows Project (2005),
windowCOLLISIONone
Organizer, Cambridge (2002 - present),
Collision Collusion Art Technology Speaker Series
Curator, MIT Compton Gallery (2003),
COLLISIONfive, the next dimension
Curator, MIT Museum (2002),
hyperCOLLISION and COLLISION3, in super 3D
Organizer, MIT AI Lab, (2001),
Language Wizard Panels
Organizer, MIT AI Lab, (2000 - 2004),
Dynamic Languages Seminar Series
NSF Bio Inspired Computation Grant, Sep 2006
Nominated for Rockefeller New Media Award, Sep 2006
Member Program Committee (2008 - 2011),
Spatial Computing Workshop in IEEE Self Adaptive Self Organizing Systems (SASO)
Reviewer (2010),
2016 OLAF Workshop (FPGA)
Member Program Committee (2007),
Self Organization in Pervasive Distributed Systems in 2008 ACM Symposium on Applied Computing
Member of the editorial board (2004 - 2008),
Ad Hoc and Sensor Networks journal
Reviewer (2010 - present),
IEEE International Conference on Robotics and Automation
Reviewer (2006 - present),
ACM Transactions on Programming Languages (TOPLAS)
Reviewer (2003 - present),
ACM Transactions on Sensor Networks