John Aguayo
Tools: Software


I'm a husband, software engineer, and member of several communities in Stanford and the Bay Area. I received a BS in Computer Science from the University of Illinois at Urbana-Champaign and an MS in Computer Science from DePaul University focusing on distributed software design and development.

My interests in software and neuroscience have revolved around the questions of how distributed systems, whether hardware, software or neural, are designed and developed to carry out specific goals and tasks.

In my software engineering positions in industry, I've worked on teams developing distributed software systems used to design and manage distributed cellular and private radio networks. In my positions as researcher, technician and student, I've worked on teams that study the relationships between cortical activation and the planning and execution of movement as well as the relationship between cortical activation and neuromuscular activation during the performance of reaching and grasping tasks. As a software engineer in the Brains in Silicon lab, I work alongside researchers who are designing and developing asynchronous digital and subthreshold analog hardware systems capable of emulating the behaviour of distributed neural systems.

Currently, my personal interests include (but are not limited to) the effective use of parallel features of programming languages (specifically C++ 11); the design of parallel algorithms for the latest parallel architectures (e.g., in OpenCL or CUDA for GPUs); and implementing efficient and effective testing frameworks for systems with large input spaces (specifically using combinatorial testing techniques).

Project Goals

The Brains in Silicon lab develops hardware systems with elements that emulate the behaviour of neurons. These neuromorphic elements can be useful to neuroscientists so long as the neuroscientist can configure these elements and interrogate them (e.g., read spike times and rates). As a software engineer in the lab, my goal is to provide and maintain software tools currently in use by neuroscientists to model and test hypotheses about neural systems behaviour as well as work with the team to develop new software that enables users to exploit new hardware features being designed and developed in the lab.

The future of the lab holds some exciting new software challenges. The user base and platforms to be supported will increase as the lab continues its collaborations with groups such as the Computational Neuroscience Research Group at the  University of Waterloo, the Asynchronous VLSI and Architecture Group at Cornell University, the Neural Prosthetics Systems Laboratory at Stanford University and the Moore Lab at Stanford University. Some of the key new software features the lab is working on will support the integration of the Nengo software package with the lab's current and future neuromorphic systems; integration of the lab's neuromorphic chips with BCI systems being developed in the Neural Prosthetics Systems Laboratory; and the development and publication of cross-platform C++/Python APIs that can be used by software developers to integrate with the labs current and future neuromorphic systems.

Interested ?

Interested in developing neuromorphic systems? The team is very diverse consisting of electrical engineers, software and hardware engineers, computer scientists and neuroscientist each bringing specific goals, interests and expertise to the group. The lab is currently seeking experienced software engineers with an interest in developing and maintaining the software tools and drivers developed in the lab. If you are interested, please see the Positions page for more information.