Joshua Bakita

Student and Researcher

Computer Science Dept. - UNC Chapel Hill

Introduction

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'.


Resume LinkedIn GitHub Twitter Instagram Google+ DevPost

Languages

Projects

SafeShare

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.


Landing Page

UNC Energy Dashboard

Built a website to display energy usage data for every building at the University of North Carolina at Chapel Hill. Features include:

  • Displays electricity, steam, and chilled water usage data in realtime
  • Dynamic updates using AJAX with a REST API
  • Live and historical data
  • Dynamic web page layout
  • Works on mobile or desktop
GitHub Repo Homepage (Note: changes to HTML shadow DOM have broken current deployment)

0 A.D. Empires Ascendant Multiplayer Lobby

Managed a small team to build an online realtime multiplayer matchmaking lobby and ranking system. Features include:

  • Real time chat with IRC-like command system
  • Detailed game listing and join system
  • User list with profiles
  • SHA256 PBKDF2 secure password hashing with salting
  • Leaderboard using the ELO ranking algorithm
  • UPnP port negotiation system
  • Uses XMPP protocol with custom-built extensions and encryption
Project Homepage

Share Sphero App

Built a Node.js app using Websockets for realtime multi-user control of the Sphero robot

  • Low-latency cross-platform communication using Websockets
  • Shared Javascript codebase across client and server
  • Built as part of a collaboration between Microsoft and Orbotix
  • Uses Google's Polymer framwork and the PeerJS library
Project Homepage Main GitHub Repo

Pebble Accelerometer Log

Built an application stack to gather long periods of continuous accelerometer readings

  • Low-power, interrupt-based, realtime collection system on Pebble
  • Custom designed lossless compression for data storage and transmission
  • Developed an Android App in Java and a Pebble App in C
  • Worked in collaboration with UNC's School of Geriatric Medicine
  • Used by Alzheimer's researchers at the University of Twente
GitHub Repo Internal Documentation

Publications

Scaling Up: The Validation of Empirically Derived Scheduling Rules on NVIDIA GPUs

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."


PDF

Avoiding Pitfalls when Using NVIDIA GPUs for Real-Time Tasks in Autonomous Systems

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."


PDF