Joshua Bakita

PhD Student and Researcher

Computer Science Dept. - UNC Chapel Hill


Hello, and welcome to my website! I currently research ways to safely integrate commodity multicore processors and GPUs into real-time systems, with a focus on autonomous vehicles. I'm presently interested in industry opportunities for summer 2021. I have substantial experience in real-time and embedded systems (C, C++, CUDA, MIPS, ARM, and x86 Assembly, Verilog, etc.) and full stack web development (HTML, JS, CSS, Angular, Java, Spring, C#, SQL Server, MySQL, etc.). Recently I've helped develop DNN parallelization approaches to double CV throughput, helped develop methods to certify real-time SMT-using platforms per an FAA need, and developed changes to Linux's memory allocation systems to implement asymtotically higher efficency page coloring. Outside of research, I serve on UNC's Graduate Senate and the Computer Science Students Association. My other involvements include Triangle Fellows, FOCUS, and regular hackathon competitions. 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 ''.

Resume LinkedIn GitHub Twitter Instagram Google DevPost Blog



Teaching Assistant of the Year

Chosen as the best teaching assistant by faculty and students in the Computer Science Department at UNC. Setting a new record, nearly 30% of my 150-person class nominated me for this award. On an anonymous feedback form, one student says "You are a wonderful person who cares about his students! Thank you so much for adding some sunlight into the spring of my senior year!" And during the awards ceremony, the instructor opened her remarks by saying that "Josh saved the course for the students." Another student comments, "He was super understanding, helpful, knowledgable, and very kind. He always went out of his way to help students and his calm and helpful responses are always reliable and good. He shows a lot of great enthusiasm for the material and is a great person."

More Information



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

Prototype implementation won an award from Microsoft at HackNC 2014

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


Simultaneous Multithreading Applied to Real Time

Sims Hill Osborne, Joshua J. Bakita, and James H. Anderson.
Proceedings of the 31st Euromicro Conference on Real-Time Systems, to appear, July 2019.

Abstract: "Existing models used in real-time scheduling are inadequate to take advantage of simultaneous multithreading(SMT), which has been shown to improve performance in many areas of computing, but has seen little applicationto real-time systems. The SMART task model, which allows for combining SMT and real time by accounting forthe variable task execution costs caused by SMT, is introduced, along with methods and conditions for schedulingSMT tasks under global earliest-deadline-first scheduling. The benefits of using SMT are demonstrated througha large-scale schedulability study in which we show that task systems with utilizations up to 30% larger thanwhat would be schedulable without SMT can be correctly scheduled."


Statically Optimal Dynamic Soft Real-Time Semi-Partitioned Scheduling

Clara Hobbs, Zelin Tong, Joshua Bakita, James H. Anderson
Real-Time Systems, to appear, 2020

Abstract: "Semi-partitioned scheduling is an approach to multiprocessor real-time scheduling where most tasks are fixed to processors, while a small subset of tasks is allowed to migrate. This approach offers reduced overhead compared to global scheduling, and can reduce processor capacity loss compared to partitioned scheduling. Prior work has resulted in a number of semi-partitioned scheduling algorithms, but their correctness typically hinges on a complex intertwining of offline task assignment and online execution. This brittleness has resulted in few proposed semi-partitioned scheduling algorithms that support dynamic task systems, where tasks may join or leave the system at runtime, and few that are optimal in any sense. This paper introduces EDF-sc, the first semi-partitioned scheduling algorithm that is optimal for scheduling (static) soft real-time (SRT) sporadic task systems and allows tasks to dynamically join and leave. The SRT notion of optimality provided by EDF-sc requires deadline tardiness to be bounded for any task system that does not cause over-utilization. In the event that all tasks can be assigned as fixed, EDF-sc behaves exactly as partitioned EDF. Heuristics are provided that give EDF-sc the novel ability to stabilize the workload to approach the partitioned case as tasks join and leave the system."

Re-thinking CNN Frameworks for Time-Sensitive Autonomous-Driving Applications: Addressing an Industrial Challenge

Ming Yang, Shige Wang, Joshua Bakita, Thanh Vu, F. Donelson Smith, James H. Anderson, and Jan-Michael Frahm.
Proceedings of the 30th Euromicro Conference on Real-Time Systems, April 2019.

Abstract: "Vision-based perception systems are crucial for profitable autonomous-driving vehicle products. High accuracy in such perception systems is being enabled by rapidly evolving convolution neural networks (CNNs). To achieve a better understanding of its surrounding environment, a vehicle must be provided with full coverage via multiple cameras. However, when processing multiple video streams, existing CNN frameworks often fail to provide enough inference performance, particularly on embedded hardware constrained by size, weight, and power limits. This paper presents the results of an industrial case study that was conducted to re-think the design of CNN software to better utilize available hardware resources. In this study, techniques such as parallelism, pipelining, and the merging of per-camera images into a single composite image were considered in the context of a Drive PX2 embedded hardware platform. The study identifies a combination of techniques that can be applied to increase throughput (number of simultaneous camera streams) without significantly increasing per-frame latency (camera to CNN output) or reducing per-stream accuracy."


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


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