Carlton Joseph

Software Developer
headshot

carlton.joseph@gmail.com

Las Vegas

Currently interested in web and mobile development, cryptocurrencies and AI. Initially, wrote software on embedded devices and Windows PCs to verify the correct operation of ICs/chips/semiconductors. Presently coding websites using ReactJS. The skill and technology used over the years are listed below.
Javascript CSS HTML ReactJs NodeJs ExpressJs PWA Python PHP Java MySQL MongoDb Docker Nginx Visual Basic C# C++ C Scala Assembler Windows/Mac/Linux Bootstrap WebSocket
Computer Engineering - B. Eng.
McGill University
Parallel Processing - M. A. Sc.
University Of British Columbia
Web Developer
8/1/2015-present
Use DigitalOcean to host six docker web domains with Let's Encrypt for https. This résumé, hosted on one of the domains, is built as a PWA for mobile and desktop using ReactJs/JSS. A project under development uses ExpressJs, Oauth2 & Firebase on the back-end and ReactJs for the UI. A personal photo website uses ReactJs, Styled Components and React router. DigitalOcean does NOT host the following sites. A photo-sharing site is hosted on Firebase and is developed using straight HTML/CSS/JS with Workbox for the PWA. The Workbox service worker syncs photos to IndexDb before uploading to Firebase. It will also notify users of the new uploads via push notifications from the Firebase server. Converted a static HTML yoga website to one that uses SWIG HTML templates and Stylus CSS.
Cross Platform App Developer
1/1/2018-present
Developed a GUI application, using ElectronJs, ReactJs and material-ui, that runs on Windows/Mac/Linux. Part of the application functionality extracts JPEGs from RAW images and resizes them for efficient online usage. New features added to this ElectronJs application are initially developed and prototyped using ExpressJs/ReactJs-Hooks/Material-UI/WebSockets/Lazy-Loading/Context.
Blockchain/Bitcoin/Ethereum
6/1/2018-4/1/2019

Created a NodeJs disk-based blockchain based on levelDb used in Bitcoin in phase 1/3. In phase 2/3 enhanced the application to give API access to the blockchain via ExpressJs. In phase 3/3 improved the app to provide a Star Notary Service where a user can register ownership of a star. JestJs is used to test the functionality of the service.

Built a Star notary on the Ethereum test blockchain using jQuery on the front-end to allowed users to register stars. This functionality was developed on the Ethereum blockchain using the Solidity language to code an ERC721 token contract. Javascript is used to test the functionality and interface with the following Ethereum tools: Ganache, Truffle Framework, MetaMask Wallet and Infura.

Built a Supply chain DAPP on the Ethereum test network that tracks coffee beans from harvest to customer receipt. The front-end written using JQuery allowed the participants to move the product from farmer, to distributor, to retailer and finally to the customer based on the role of the participant.

Built a Flight Insurance Smart Contract where a user could buy insurance on a flight and would be paid up to 1.5x the insured amount upon flight cancellation. The smart contract received randomly generated flight data from several oracles/servers. In this implementation, the data and logic were separated into two smart contracts which allow updates of the business rules governing the insurance without affecting the data contract. The user UI was built using a "React-like" lightweight framework. The functionality of the system was tested using a JavaScript testing framework based on Mocha and Chai.

Built a house listing service and deployed it to the Ethereum test network. The contract is written so that OpenSea could be used as the front-end to provide user interaction without writing UI code. The property sales, offers and purchases are done on OpenSea. A home is listed using simple zero-knowledge-proof/Zk-SNARKs and zokrates.

Self Driving Car
1/1/2017-8/1/2017
Python is used to develop the projects noted below, except for the last project, which was developed using C++. The project links provided below, document the details of the implementations and provide videos showing the operation of the algorithms where necessary. Projects follow: Road lane lines detect using OpenCV, matplotlib and numpy. Traffic sign classifier using TensorFlow with the LeNet architecture. Train driving behavior using a deep learning Keras model based on NVIDIA's convolutional neural network. Advanced lane finding with camera calibration, distortion correction, perspective transforms, and curvature determination. Vehicle tracking is done using linear SVC classifier, HOG, sliding window and heat maps. Speed and location of moving objects are estimated using Kalman filters with data from radar and lidar.
Android Java Dev
10/1/2014-4/1/2015
Developed several Android Apps using Java. The source repositories for two projects follows: retrieve and display popular movies and retrieve and display the daily weather.
Android Multimedia Testing
Broadcom, Irvine CA
3/1/2012-8/2/2014
Tested the Hawaii/BCM21664 & Java/BCM23550 multimedia functionality over process, voltage and temperature (PVT). Wrote C# automation scripts to control the form factor phone board via USB using the Android Debug Bus (ADB) and Android Debug tools (ADT). Tested the chip by taking pictures, performing a video capture, playing back video and running the Taji and GLBenchmark performance tests. During the testing of 15 split lot parts over 3 voltages and 3 temperatures logged over 4 Gigs of data and 1000’s of data files. The logged data was parsed and easily browsable web based summaries were generated. The summaries consisted of 10,000+ lines of generated HTML. Issues were identified and resolved by working with the software and hardware teams.
Camera To LCD Preview
Broadcom, Irvine CA
12/1/2007-4/1/2008
Wrote assembler and C ARM code to test the Camera to LCD path on the Athena/BCM21553 baseband ASIC without an OS. The code initialized the image sensor (OmniVision), the image signal processor (ISP), the memory pool, the DMA engine and the Samsung LCD. A logic analyzer and scope were used to resolve the Camera and LCD byte ordering issues found during the code bring up.
Camera And LCD Emulation
Broadcom, Irvine CA
10/1/2007-2/1/2008
Wrote assembler and C ARM code to test the LCD and camera functionality of the pre-silicon IP of the Venus/21331 chip on an emulation system (Chip-It). Exercised the LCD DBI B read operation on the emulation system by connecting it to a Xilinx interface board that was connected to the National Instruments PCI IO board (NI-PCI 6534) in a PCI slot of a PC. Wrote Xilinx FPGA VHDL code to provide the proper handshaking signals for the LCD DBI B read operation because the NI board by itself could not provide the fast bi-directional bus protocol required for testing. Verified the LCD DBI write operation by capturing the output on a logic analyzer, parsing the captured results and comparing them to the simulated results.
Functional Testing
Broadcom, Irvine CA
6/1/2010-8/1/2014
Tested the functionality of the Juno/BCM21351 by running almost 200k iterations of the burn-in test running on the ARM processor and worked to resolve the < 1% issues seen. The test was run over various temperature and voltage conditions. Fixed and verified the DSP command queue error that occurred 1 out of 1700 iterations. Identified board memory layout issues and communicated them to the board designers, who fixed the issue on the new revision of the board by directly soldering down the memory chip to the board instead of using a daughter card. The large data set from the runs was inserted into a database and queried for failures. Summary web pages were generated using PHP to query the MySQL database. The web page sorted and ranked the failures so that the ones that occurred most frequently could be diagnosed first.
Baseband Temperature vs Current
Broadcom, Irvine CA
3/1/2013-7/1/2013
Ran the Android Dhrystone and GLBenchmark tests, on the Java baseband chip, at numerous frequencies and measured the die temperature and current consumption. Wrote an Android shell script to run the Dhrystone test in parallel on 4 processors continuously in order to measure the current and temperature. Wrote C# code that polled the on die temperature and measured the battery current, the ARM A7 current and the multimedia current. Generated graphs with the results that the applications engineers used as a basis for the application notes sent to the customers.
Electrical Characterization
Broadcom, Irvine CA
9/1/2010-8/1/2014
Characterized the Juno/BCM21351 & Rhea/BCM21654 interfaces on eMM, SDIO, SIM, PCM, SPI, DMIC and HSI. Wrote PC based C# automation software to characterize the interfaces over PVT by gathering data from a network connected scope. Measured the frequency, clock duty cycle, setup and hold times and slew rates for 15 parts over 3 voltages and 3 temperatures while also varying drive type and strengths. Wrote up test documents and worked with the firmware team to specify and help debug how the interfaces were exercised for the characterization. Collected multiple gigabytes of data and 100,000+ files during testing and summarized the results via spreadsheets and easily browsable web pages.
Gigabit Ethernet Linux Diagnostics
Broadcom, Irvine CA
6/1/2004-4/1/2007
Developed a Linux version of the DOS Gigabit Ethernet diagnostics described below with another engineer. The Linux diagnostics is a combination of the diagnostic code and the Linux driver provided by the driver team. Initially, our team of two built the diagnostics to support a subset of DOS diagnostics for the 5704 chip. After the initial development, I went on to enhance the Linux diagnostics and add support for the full Broadcom NetExtreme-I chip family (over 15 chips). While adding support for the NetExtreme-I family of chips, I also worked on the Linux driver to add new chip support, fix bugs, update documentation and modify the makefile.
Gigabit Ethernet DOS Diagnostics
Broadcom, Irvine CA
11/1/2002-4/1/2007
Maintained the DOS diagnostics and the associated embedded MIPS firmware for testing the NetExtreme-I Gigabit Ethernet Controllers (BCM5700-05/21/52/55/57/…). The code base consists of over 100,000 lines of C and assembler code and is used to aid engineering design/debug, provide manufacturing tests, and screen for chip defects. Made hundreds of modifications, added the false-carrier-detect test and the open/short test. Helped to resolve numerous hardware issues on the PCB, the FPGA emulation environment, and on the final ASIC. Worked on ASIC packaging issues, IEEE compliance, NVRAM access issues, and ATE coverage (ROM loader).
SERDES Diagnostics
Broadcom, Irvine CA
1/1/2001-11/1/2002
Maintained and improved the diagnostic software for the testing of SERDES devices (BCM8011, BCM5760, BCM5790, etc). The board and chip designers built evaluation systems, which contain support circuitry that includes Xilinx FPGAs and a 68HC11 microcontroller, for the testing/verification of the device under test. The diagnostic software consists of C and assembler code that runs on the microcontroller and communicates via a RS232 serial line to a PC running Visual Basic code. Upon start of the project all code had to be customized for each chip. I redesigned the diagnostics to support all devices without requiring code customization by adding a chip identification feature that automatically uses the correct chip-register definition when imported from the chip designers’ spreadsheets.
Canyonlands
AST Research, Irvine CA
2/1/1997-2/1/1998
Modified an existing motherboard design to support Intel’s processor and the new BX chipset. The legacy part of the motherboard includes the PIIX4, an ATI Rage 3D graphics chip, the Intel 82557 Ethernet controller, a microprocessor and a FPGA. Initially as the sole person on the project I entered the schematics, wrote the high speed constraints for the design layout, supervised the layout, coordinated the build and debugged the board while working with a BIOS developer.
RCMP
PMC Sierra, Vancouver BC
9/1/1995-2/1/1997
Wrote the test plan for the ATM Routing Control, Monitoring and Policing (RCMP) IC and designed the hardware and software necessary for verifying the functionality of the IC. The RCMP is an ATM layer device that operates at 622 Mbits/sec on the ingress side of an ATM switch. The test team consists of the principal IC designer, a firmware coder, a PC software coder and myself. The hardware consists of the RCMP IC, a Motorola MC68340 micro controller, a Cypress CY7C374 CPLD and an interface to an ATM physical layer device. The firmware that ran on the MC68340 is a small kernel that monitored the RCMP interrupts and accepts input from the user. The results of the interrupts and the user inputs are communicated to a PC via an RS-232 port. The PC software is an extension of the TCL/TK shell that provides convenient access to the RCMP device via a high level scripting language.
FPGA & DRFM
McDonald Dettwiler Assoc., Vancouer, BC
9/1/1992-9/1/1995
Completed the detail design, layout and debug of the Xilinx 3195A-2 part used in a radar jamming system. The design consisted of counters, comparators, control logic and a register based interface, running at 75 MHz, connected to the TI TMS320C40. Completed the schematic, layout and debug of a 700 MHz Digital Radio Frequency Modulator (DRFM) used in the radar jamming system. The DFRM consists of ADCs, DACs, dual port memories, control logic and a Motorola 56K DSP.