.                          .    
                            .                   .        .        •  
       ▄▄███▄   ▪   ▄▄▄▄·     ▄▄███▄ ▄▄▄▄▄▄ .▄  ▄▄██▄  ▪   ▄▄▄      
     .▀ ▪  ▐█▌ ▄█▀▄ ▐█ ▀█    ▀    ▀██ ▀▄  ▀·██ ▐█  ▄ █·██ ▐█  ▀ ▪   
   ▪    █▄▄█▀ ▐██ ▐ ▐█▀▀█▄  ▪  ▐█▀▀█▄ ▐▀▀  ▄██▀██▐█▀▀▄ ▐█·▄█ ▪▀█▄   
       ▐█▀ ▀█▐██▌.▐▌██▄▪▐█▌  . █▌▪• ██▐█▄▄▄▌██▌▐▀▐█• █▌▐█▌▐█▄▪ ▐██ .
      .▀  . ▀▄▀██▄▀▪·▀▀▀▀▀    .▀     ▀▪▀███ ▀▀▀ ·.▀  ▀█▀▀▀·▀████▀   
     -~-~-~-~-~-~ hardware hacker and design deliriant ~-~-~-~-~-~-
╔══════════════════[ Projects ][ About ][ Contact ]═══════════════════╗
║                                                                     ║▐ 
║                                                                     ║▐
║                                                                     ║▐
║                                                                     ║▐
║                                                                     ║▐
║                                                                     ║▐
║                                                                     ║▐
║                                                                     ║▐
║                                                                     ║▐
║                                                                     ║▐
║                                                                     ║▐
╟┐                                                                   ┌╢▐
╠╪══════: WiiAssist: Repurposing WiiMotes for Assistive Tech :═══════╪╣▐
╟┘                                                                   └╢▐
The research project, nicknamed WiiAssist, focused on           ║▐
║     adding more operating system user interfaces for people         ║▐
║     without fine motor control in their arms or hands. This was     ║▐
║     accomplished by developing a system where head tracking was     ║▐
║     used to simulate the functions of a mouse. Head tracking        ║▐
║     was accomplished by using the x and y positioning of an         ║▐
║     infrared LED returned by two Wiimotes to calculate the          ║▐
║     LED's coordinates in a 3-Dimensional space. The x and y         ║▐
║     coordinates of the LED yields a mouse position on the users     ║▐
║     monitor and allowed them to move the cursor around with         ║▐
║     their head.                                                     ║▐
║                                                                     ║▐
║     DEFCON 17 Talk - Hacking the WiiMote to Help People With        ║▐
║     Disabilities:                                                   ║▐
║                                                                     ║▐
║     
║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ For this project, I worked on the Wiimote to PC ║▐ ║ interaction. I used the c library, wiiuse, to convert the ║▐ ║ Bluetooth messages into basic functions that provided my ║▐ ║ algorithms with the information needed in order to ║▐ ║ calculate a 3-Dimensional position for the infrared LED ║▐ ║ attached to the user. After that, it was a matter of making ║▐ ║ my outputs compatible with the Windows API in order to ║▐ ║ control the cursor and simulate a physical mouse. Below are ║▐ ║ a few diagrams that help explain the process. ║▐ ║ ║▐ ║ We were also featured on G4's 'Attack of the Show': ║▐ ║ ║▐ ║
║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ Calculations Overview ║▐ ║ ║▐ ║ This was our test setup. Notice the two WiiMotes set up to ║▐ ║ the side of the monitor one on the left, and the other on ║▐ ║ the right. These were used as cameras to keep track of an ║▐ ║ infrared source attached to the user (shown in the second ║▐ ║ picture), and they would relay the coordinates to the ║▐ ║ computer. ║▐ ║ ║▐ ║
║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║
║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ WiiMotes are capable of reporting only 2-Dimensions for a ║▐ ║ remote IR source, so by using two WiiMotes, we were able to ║▐ ║ capture the third dimension, as shown below. It is also ║▐ ║ important to point out that the WiiMote is capable of of ║▐ ║ measuring the intensity of the LED and determine a third ║▐ ║ dimension that way, but the results are much less reliable ║▐ ║ than using two remotes. ║▐ ║ ║▐ ║ The image below gives a good mock-up of the typical setup ║▐ ║ for our system, including measurements. The blue areas are ║▐ ║ the areas that the WiiMote can see, and the darker blue ║▐ ║ area is where both WiiMote view ranges overlap, so the user ║▐ ║ must be within that area to be detected by both remotes in ║▐ ║ order to produce a 3-Dimensional coordinate. Since the ║▐ ║ WiiMote's resolution is 1024 by 768, we are able to scale ║▐ ║ this and convert it into a measurement from 0 to 45 degrees ║▐ ║ in order to detect where the infrared source is, since the ║▐ ║ WiiMote's range is only 45 degrees. Below is the geometry ║▐ ║ used to calculate the 3-Dimensional coordinate, and the ║▐ ║ symbols should match up with second and third images. ║▐ ║ ║▐ ║
║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║
║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║
║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ ║▐ ║ x_2 = (width) / ((tan(θ_2) / tan(θ_1)) + 1) ║▐ ║ ║▐ ║ To find x1, subtract x2 from the width: ║▐ ║ ║▐ ║ x_1 = width - x_2 ║▐ ║ ║▐ ║ Lastly, to get the distance x away from the left edge of ║▐ ║ the monitor: ║▐ ║ ║▐ ║ x = x_1 - (width-screensize) / 2 ║▐ ║ z = x_1 * tan(θ_1) ║▐ ║ y = x_1 * tan(θ_y) ║▐ ║ ║▐ ║ Windows API Communication ║▐ ║ ║▐ ║ In order to simulate the mouse movement, every time the ║▐ ║ user's coordinates updated, we would send that data to the ║▐ ║ Windows API using the SENDINPUT function. An example of how ║▐ ║ this is done (from our code) is below. ║▐ ║ ║▐ ║ INPUT *key; ║▐ ║ key = (INPUT*)malloc(sizeof(INPUT)); ║▐ ║ key->type = INPUT_MOUSE; ║▐ ║ key->mi.dx = pointArray[0].x; ║▐ ║ key->mi.dy = pointArray[0].y; ║▐ ║ key->mi.mouseData = 0; ║▐ ║ key->mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE); ║▐ ║ key->mi.time = 0; ║▐ ║ key->mi.dwExtraInfo = 0; ║▐ ║ SendInput(1,key,sizeof(INPUT)); ║▐ ║ free(key); ║▐ ║ ║▐ ║ Lastly, in order to avoid jittery movement from the user, ║▐ ║ since it is difficult to keep one's head completely still, ║▐ ║ we implemented a could filters into our algorithm. One ║▐ ║ filter used was a window filter to check the current ║▐ ║ coordinate against the previous ones and see if it differed ║▐ ║ greatly, which would most likely mean the user was ║▐ ║ intentionally trying to move the cursor. Little ║▐ ║ unintentional movement could be filtered out, since it ║▐ ║ would still have coordinates very similar to previous ║▐ ║ movements. ║▐ ║ ║▐ ║ There were many other ideas for this project that were not ║▐ ║ implemented, including the use of the third dimensional ║▐ ║ coordinate to zoom in and out, a better detection setup for ║▐ ║ the user to move around in, and a way to add clicking. We ║▐ ║ were able to achieve clicking with the use of the a WiiFit ║▐ ║ board. The user could either sit on the board or operate it ║▐ ║ with their feet, and leaning to the right would right ║▐ ║ click, and left would left click. Unfortunately, as the ║▐ ║ user moved right or left, this would often affect the ║▐ ║ position of the user's head and that made clicking ║▐ ║ difficult, so a better way to click was needed. ║▐
╟┐                                                                   ┌╢▐
╠╪═══════════════════════════: Projects :════════════════════════════╪╣▐
╟┘                                                                   └╢▐
║     DEF CON 31 Hardware Hacking Village CTF .............. 2023     ║▐
║     THOTCON 0xC Electronic Conference Badge .............. 2023     ║▐
║     DEF CON 30 Hardware Hacking Village CTF .............. 2022     ║▐
║     ParFive: a Daily Golf-Themed Word Game ............... 2022     ║▐
║     THOTCON 0xB Electronic Conference Badge .............. 2022     ║▐
║     DEF CON Hardware Hacking Village CTF ................. 2021     ║▐
║     SAOwner: Electronic Badge i2c Interposer ............. 2019     ║▐
║     Pintwood Derby: Team Cheetah Strikes Again ........... 2019     ║▐
║     Commuter - Game and Controller ....................... 2018     ║▐
║     crAPU: crappy Audio Processing Unit SAO for DC26 ..... 2018     ║▐
║     Pintwood Derby: the Cheetah Car ...................... 2018     ║▐
║     RAND: IDEO Chicago Installation ...................... 2017     ║▐
║     Ox Vox: DEF CON 25 and BSidesPDX Badge Hack .......... 2017     ║▐
║     Upgrading the Oxygen Concentrator Inferface .......... 2017     ║▐
║     Giving Furby a New Voice Box ......................... 2017     ║▐
║     Cigar Mic: DEF CON 24 Badge Hack ..................... 2016     ║▐
║     Personal Logo Design ................................. 2014     ║▐
║     9-Degrees of Freedom Wireless IMU .................... 2014     ║▐
║     BitSynth: Controlled Quantization Synth .............. 2013     ║▐
║     Psychomasker: Audio Compression Visualization App .... 2013     ║▐
║     Bike Design Using Webcode ............................ 2013     ║▐
║     Canal Construction Logo Design ....................... 2013     ║▐
║     Record Player Design Using Webcode ................... 2013     ║▐
║     Subzero: Refrigerator Subwoofer ...................... 2013     ║▐
║     Shark Attack Game for iPad ........................... 2013     ║▐
║     Gardner Nested All-Pass Filter Reverb Plugin ......... 2013     ║▐
║     Slam Mixer Audio Mixer App for iPad .................. 2013     ║▐
║     Roland Space Echo Audio Plugin ....................... 2013     ║▐
║     MIDIogame Controller: Creating Music From Gameplay ... 2012     ║▐
║     Car Charger Technical Illustration ................... 2012     ║▐
║     eVORG Logo Designs ................................... 2012     ║▐
║     Newark Bike Project Designs .......................... 2012     ║▐
║     DEFCON 19 Bot Badge .................................. 2010     ║▐
║     WiiAssist: 3D Head Tracking with Wiimotes ............ 2009     ║▐
║     Off-the-Shelf Open Source Security System ............ 2009     ║▐
╟┐                                                                   ┌╢▐
╠╪═════════════════════════════: About :═════════════════════════════╪╣▐
╟┘                                                                   └╢▐
Part hardware hacker, part creative technologist, and part      ║▐
║     human-centered designer thriving at the cross-section of        ║▐
║     engineering and design.                                         ║▐
║                                                                     ║▐
║     Led to engineering through my love for music, art, and          ║▐
║     math, I hold degrees in electrical, computer, and music         ║▐
║     engineering. Following a stint in academia, I joined IDEO       ║▐
║     as a senior electrical engineer where I contributed             ║▐
║     creative problem solving and prototyping fluency to a           ║▐
║     breadth of projects ranging from vehicles of the future, to     ║▐
║     life-changing medical equipment, to innovative children's       ║▐
║     toys. Most recently, I was at Delve and now Sundberg-Ferar,     ║▐
║     diving deeper into engineering for production, and working      ║▐
║     on bringing ideas and prototypes to reality.                    ║▐
║                                                                     ║▐
║     Outside of work, I enjoy creating rotoscopes and                ║▐
║     illustrations, reverse engineering electronic toys, and         ║▐
║     taking a break from screens by running, biking, and camping     ║▐
║     in the great outdoors.                                          ║▐
╟┐                                                                   ┌╢▐
╠╪═══════════════════════════: Education :═══════════════════════════╪╣▐
╟┘                                                                   └╢▐
║   -=≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ MS in Music Engineering ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡=-   ║▐
║     School .... University of Miami, Miami, FL                      ║▐
║     Grad year . 2014                                                ║▐
║                                                                     ║▐
║   -=≡≡≡≡≡≡≡≡ MS in Electrical and Computer Engineering ≡≡≡≡≡≡≡≡=-   ║▐
║     School .... University of Delaware, Newark, DE                  ║▐
║     Grad year . 2012                                                ║▐
║                                                                     ║▐
║   -=≡≡≡≡≡≡≡≡≡≡≡≡≡≡ BEE in Electrical Engineering ≡≡≡≡≡≡≡≡≡≡≡≡≡≡=-   ║▐
║     School .... University of Delaware, Newark, DE                  ║▐
║     Grad year . 2011                                                ║▐
╟┐                                                                   ┌╢▐
╠╪══════════════════════════: Experience :═══════════════════════════╪╣▐
╟┘                                                                   └╢▐
║   -=≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ Senior Electrical Engineer ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡=-   ║▐
║     Company ... Sundberg-Ferar, Detroit, MI                         ║▐
║     Key roles . Launched and led Electrical Engineering offering    ║▐
║               . Developed embedded hardware and software products   ║▐
║               . Managed projects and client relationships           ║▐
║               . Designed from prototype through manufacturing       ║▐
║     Years ..... May '22 - Present                                   ║▐
║                                                                     ║▐
║   -=≡≡≡≡≡≡≡≡≡≡≡≡≡≡ Senior II Electrical Engineer ≡≡≡≡≡≡≡≡≡≡≡≡≡≡=-   ║▐
║     Company ... Bresslergroup / Delve, Philadelphia, PA             ║▐
║     Key roles . Developed embedded hardware for diagnostic devices  ║▐
║               . Developed embedded firmware with precision-timing   ║▐
║               . Designed for manufacturing                          ║▐
║     Years ..... Nov '20 - Apr '22                                   ║▐
║                                                                     ║▐
║   -=≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ Senior Electrical Engineer ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡=-   ║▐
║     Company ... IDEO, Chicago, IL                                   ║▐
║     Key roles . Specialized in rapid hardware prototyping           ║▐
║               . Developed embedded and front-end software           ║▐
║               . Designed human-centered solutions for clients       ║▐
║     Years ..... Sep '14 - Oct '20                                   ║▐
║                                                                     ║▐
║   -=≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ User Experience Intern ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡=-   ║▐
║     Company ... Shure, Niles, IL                                    ║▐
║     Years ..... Summer '13 & Summer '14                             ║▐
║                                                                     ║▐
║   -=≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ Graduate Research Assistant ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡=-   ║▐
║     Company ... Univ. of Miami, Music Eng Dept, Miami, FL           ║▐
║     Years ..... Aug '12 - May '14                                   ║▐
║                                                                     ║▐
║   -=≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ Co-Founder and Shop Manager ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡=-   ║▐
║     Company ... Newark Bike Project, Newark, DE                     ║▐
║     Years ..... Oct '11 - Aug '12                                   ║▐
║                                                                     ║▐
║   -=≡≡≡≡≡≡≡≡≡≡≡≡ Undergrad/Grad Research Assistant ≡≡≡≡≡≡≡≡≡≡≡≡=-   ║▐
║     Company ... Univ. of Delaware, Elec/Comp Eng Dept, Newark, DE   ║▐
║     Years ..... Feb '09 & Aug '12                                   ║▐
╟┐                                                                   ┌╢▐
╠╪════════════════════════════: Skills :═════════════════════════════╪╣▐
╟┘                                                                   └╢▐
║                   -=≡≡≡≡≡≡≡ Engineering ≡≡≡≡≡≡≡=-                   ║▐
║     Hardware Hacking     3D CAD Modeling  Embedded Dev & Design     ║▐
║     Reverse Engineering    Prototyping    Human-Centered Design     ║▐
║     Digital Synth Design   PCB Design    Human-Comp Interaction     ║▐
║                                                                     ║▐
║                   -=≡≡≡≡≡≡≡≡ Languages ≡≡≡≡≡≡≡≡=-                   ║▐
║     C, C++, Obj-C           HTML, CSS             Spanish (int)     ║▐
║     Basic Assembly         Javascript            Japanese (beg)     ║▐
║     Matlab                   Python                                 ║▐
║                                                                     ║▐
║                   -=≡≡≡≡≡≡≡≡ Software ≡≡≡≡≡≡≡≡≡=-                   ║▐
║     Adobe Creative Cloud Autodesk Fusion          Microsoft 365     ║▐
║                                                                     ║▐
║                   -=≡≡≡≡≡≡≡≡≡≡ Other ≡≡≡≡≡≡≡≡≡≡=-                   ║▐
║     Screen Printing       Bike Mechanic        Furby Technician     ║▐
║     Sketching             Illustrating                              ║▐
╟┐                                                                   ┌╢▐
╠╪═══════════════════════: Honors and Awards :═══════════════════════╪╣▐
╟┘                                                                   └╢▐
║     2nd Place NorthSec CTF ............................... 2022     ║▐
║     1st Place DerbyMUD CTF, Derbycon 9.0 ................. 2019     ║▐
║     1st Place Digerati's Atlas CTF, THOTCON 0xA .......... 2019     ║▐
║     2nd Place Badge CTF, THOTCON 0x9 ..................... 2018     ║▐
║     2nd Place Music Hack Day Miami ....................... 2014     ║▐
╟┐                                                                   ┌╢▐
╠╪════════════════════════════: Contact :════════════════════════════╪╣▐
╟┘                                                                   └╢▐
║     Email .................................... website@<domain>     ║▐
║     Blog ............................................. reset.io     ║▐
║     Github ......................................... mediumrehr     ║▐
║     Codepen ......................................... robrehrig     ║▐
╟┐                                                                   ┌╢▐
╠╪════════════════════════════: Greetz :═════════════════════════════╪╣▐
╟┘                                                                   └╢▐
║                   .:  Malörtware & cold_root  :.                    ║▐
║                                                                     ║▐
╚═════════════════════════════════════════════════════════════════════╝▐
 ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀