Hello, and welcome to my website! I currently research applications of real-time systems to GPUs in autonomous vehicle systems under Dr. Anderson at UNC Chapel Hill, but I would love to hear about industry opportunities for after I wrap up my masters in May 2019. I have substantial experience in real-time and embedded systems (C, C++, CUDA, MIPS and x86 Assembly, Verilog, etc.) and full stack web development (HTML, JS, CSS, Angular, Java, Spring, C#, SQL Server, MySQL, etc.). As side interests, I run UNC's Computer Science Club, help organize HackNC, and work on UNC's Renewable Energy Special Projects Committee. Check out my resume if you want more detail and feel free to reach out. My email is the single word 'hacker' at the domain 'unc.edu'.
Built a platform to share vehicles using the security of the Ethereum blockchain as the trust basis instead of a physical entity. Also uses the APIs from Smartcar to allow unattended unlocking and ignition for shared vehicles to eliminate most overhead. Prototype implementation won awards from Coinbase, Smartcar, Contrary Capital, and HackDuke at HackDuke 2017.
Built a website to display energy usage data for every building at the University of North Carolina at Chapel Hill. Features include:
Managed a small team to build an online realtime multiplayer matchmaking lobby and ranking system. Features include:
Built a Node.js app using Websockets for realtime multi-user control of the Sphero robot
Built an application stack to gather long periods of continuous accelerometer readings
Joshua Bakita, Nathan Otterness, James H. Anderson, and F. Donelson Smith
Proceedings of the 14th Annual Workshop on Operating Systems Platforms for Embedded Real-Time Applications, pp. 49-54, July 2018.
Abstract: "Embedded systems augmented with graphics pro- cessing units (GPUs) are seeing increased use in safety-critical real-time systems such as autonomous vehicles. The current black-box and proprietary nature of these GPUs has made it difficult to determine their behavior in worst-case scenarios, threatening the safety of autonomous systems. In this work, we introduce a new automated validation framework to analyze GPU execution traces and determine if behavioral assumptions inferred from black-box experiments consistently match behav- ior of real-world devices. We find that the behaviors observed in prior work are consistent on a small scale, but the rules do not stretch to significantly older GPUs and struggle with complex GPU workloads."
Ming Yang, Nathan Otterness, Tanya Amert, Joshua Bakita, James H. Anderson, and F. Donelson Smith.
Proceedings of the 30th Euromicro Conference on Real-Time Systems, pp. 20:1-20:21, July 2018.
Abstract: "NVIDIA's CUDA API has enabled GPUs to be used as computing accelerators across a wide range of applications. This has resulted in performance gains in many application domains, but the underlying GPU hardware and software are subject to many non-obvious pitfalls. This is particularly problematic for safety-critical systems, where worst-case behaviors must be taken into account. While such behaviors were not a key concern for earlier CUDA users, the usage of GPUs in autonomous vehicles has taken CUDA programs out of the sole domain of computer-vision and machine- learning experts and into safety-critical processing pipelines. Certification is necessary in this new domain, which is problematic because GPU software may have been developed without any regard for worst-case behaviors. Pitfalls when using CUDA in real-time autonomous systems can result from the lack of specifics in official documentation, and developers of GPU software not being aware of the implications of their design choices with regards to real-time requirements. This paper focuses on the particular challenges facing the real-time community when utilizing CUDA-enabled GPUs for autonomous applications, and best practices for applying real-time safety-critical principles."