Joshua Bakita

Software Engineering Intern

Windows Core Fundamentals Dev R&D, Microsoft

Introduction

Hello, and welcome to my website! I am currently wrapping up my Bachelor of Science in Computer Science at UNC Chapel Hill and would be interested in full time opportunities for after I finish my masters degree in May 2019. I have substantial experience in real-time embedded systems (C, MIPS and x86 Assembly, Verilog), full stack web development (HTML, JS, CSS, Angular, Java, Spring), and web services (C#, SQL Server, MySQL). 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 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

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

Papers

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

To appear in ECRTS 2018. Ming Yang, Nathan Otterness, Tanya Amert, Joshua Bakita, James H. Anderson, and F. Donelson Smith.

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