Saturday, December 30, 2017

WowGo 2 Electric Skateboard

Subscribe by Email!
Written: 30 Dec. 2017
Last Updated: 30 Dec. 2016

The WowGo Electric Skateboard is one of the greatest products I've ever had the privilege of owning. It's a thrill to ride, so much fun, and practical too! I've owned it now for 2 months and have probably already put close to 150 or 200 miles on it. When riding downhill at 22+mph, carving back and forth, I actually get the same sensation I feel when snowboarding--except in this case I can do it right outside my house in my local neighborhood, and all-year-round!

I recently moved to a big city and I have been using my WowGo electric skateboard for the last month to ride to and from the subway station to get to work each day. I also use it for city commuting down-town. The ride to the subway station is just over 3 miles but I can complete it in 9~15 minutes, depending on traffic lights.

***Subscribe by Email!***

Monday, October 23, 2017

Which Programming Language Should I Learn?

Subscribe by Email!
Investing time into learning a first (or new) programming language is a seriously-time-consuming endeavor. For me it wasn't something to take lightly, as I knew I'd be investing thousands of hours into any given single language when I began. When people ask which programming languages they should learn or use, a great way to make recommendations is to consider these 3 things:
  1. Popularity
  2. Is it a scripted (interpreted) or compiled language, and how does that affect what I want to do with it?
  3. Which languages are most used in my industry or application?

1) Consider the popularity of languages. The more popular the language, the higher the priority it should be, within reason, since that's what industry uses and that's where you're going to find the most resources, help and support, compatibility with others, and jobs. The TIOBE index is the place to check:
"TIOBE programming community index is a measure of popularity of programming languages, created and maintained by the TIOBE Company based in Eindhoven, the Netherlands.[1] TIOBE stands for 'The Importance of Being Earnest' which is taken from the name of a comedy play written by Oscar Wilde at the end of the nineteenth century.[2]" (

Here's the index for 2017: As shown above, the top 6, in this order, are:
  1. Java
  2. C
  3. C++
  4. C#
  5. Python, and 
  6. JavaScript. 
My top 3 recommendations are Java, C++, and Python, but not necessarily in that order. When it comes to you and your personal needs, goals, and desires, however, you need to choose for yourself! Here's some tips to help you make that decision.

***Subscribe by Email!***

Sunday, October 1, 2017

Arduino sine wave siren code using a lookup table in flash memory (PROGMEM)

Subscribe by Email!
By Gabriel Staples
Posted: 30 Sept. 2017
Last Updated: 30 Sept. 2017

Related Articles:
Other Articles:
(*Articles containing or linking to source code are marked with an asterisk)
Demo Video: 

***Subscribe by Email!***

Saturday, August 26, 2017

How to make a Linux Live USB with a 2nd, Windows-readable partition for storage

Subscribe by Email!
This article is a "Notes to Self" article. That means I wrote it for my own personal reference and use, with myself as the target audience during drafting, but decided to post it here because I believe it is useful to others too, and I want to reach as many people as possible, not just me. 

Ever wanted to have a bootable Linux USB flash drive with a separate, Windows-readable partition for general file storage? Here's how.

By Gabriel Staples
Written: 26-27 May 2016
Posted online: 26 Aug 2017
Updated: 26 Aug 2017

The Gist of it/The super short version:
-for the experienced Linux user
  1. Use gparted on a Linux computer to make 2 FAT32 partitions on the thumb drive. The partition created first must be for storage, while the 2nd one must be for the Linux distro you are putting on the Live USB.
  2. Use UNetbootin on a Linux computer to install your iso file for the Live USB onto the 2nd partition you just made above.
  3. Done. You can now boot from the USB thumb drive, from its 2nd partition, while its 1st partition only is readable and usable by Windows still (as well as by Linux or Mac too of course).

***Subscribe by Email!***

Wednesday, April 12, 2017

Computa Pranksta USB Mouse & Keyboard Device User Manual

Subscribe by Email!
100% SATISFACTION GUARANTEE: If you've already purchased a Computa Pranksta from me and need expert support, PLEASE CONTACT ME VIA EMAIL FIRST AT THE ADDRESS JUST BELOW [or even better: open up a public issue on my GitHub support page here] so I can help you out before you consider leaving a negative review. I'll help you, I promise! 
Furthermore, the difference between a 3.99 and 4.01 star rating on Amazon is roughly 200% or more in sales! Please consider carefully if you're thinking about leaving less than 4 stars. Again if you have any problems with or questions about the product PLEASE SEEK SUPPORT FROM ME VIA A PUBLIC GITHUB ISSUE ABOVE (PREFERRED) OR EMAIL (ALSO FINE) FIRST.

Computa Pranksta Mouse Jiggler now available on Amazon
Click link above or image below to go to Amazon and purchase.

Also available now on Ebay! See my listing, as Ebay seller "electricrcaircraftguy", here.

Computa Pranksta User Manual
For Device Version: v0.90.0 or later
By Gabriel Staples
Written: 12 Apr. 2017
Last Updated: 9 Feb. 2019
Update History (newest on TOP):
-20200908 - added GitHub support page and CAD files for 3D-printed case
-20200214 - copied and pasted my recommended mouse jiggler settings from Amazon
-20190209 - added 2nd YouTube video: Reconfiguring the Computa Pranksta for use as a USB Mouse Jiggler to keep your screensaver off
-20180505 - added "Quick Reference 'Cheat Sheet'" picture
-20180324 - added link to my listing on Ebay too
-20171228 - added list of associated keywords to end
-20170717 - added YouTube video: "How to Use & Configure..."
-20170423 - bug section updated w/some info about Caps Lock Response Mode 10
-20170422 - now available for sale on Amazon! Purchase links added.
-20170421 - added images
-20170416 - added bug notes; minor additions
-20170412 - initial version

[NEW as of Sept. 2020] GitHub page: 

[As recommended on Amazon]
  • Keyboard Typing Mode: 0 (OFF)
  • Keyboard Timing Mode: anything
  • Mouse Move Mode: 2 (randomMouseBuzzAround) or 4 (multiCursor 2)
  • Mouse Timing Mode: 5 (every 30~60 sec) or 6 (every 1~5 min)
  • Caps Lock Response Mode: 0 (OFF)

Quick Reference "Cheat Sheet"
Congratulations on your purchase of the Computa Pranksta USB Mouse and Keyboard device. Don't have one yet? Click the link above to purchase it on Amazon. This device is great for playing tricks on your friends, or just for keeping your computer awake when giving presentations, watching movies, playing certain video games (like Real Flight RC simulator) or when you don't have admin rights to change screensaver and screen lock settings.

This devices does NOT require any software or special drivers on your PC. It simply tells the computer it is a standard Human Interface Device mouse and keyboard. If your computer tries to detect a new device and install a driver, don't worry about it--even if it says it "fails." The device will work anyway.

Video 1/2: How to Use & Configure the Computa Pranksta USB Keyboard & Mouse Prank Device

Video 2/2: Reconfiguring the Computa Pranksta for use as a USB Mouse Jiggler to keep your screensaver off:

***Subscribe by Email!***

Friday, March 31, 2017

Arduino (ATmega328) Direct Register Manipulation for Custom PWM Output (ex: 1us HIGH followed by 99us LOW --> 1% Duty Cycle at 10kHz)

Subscribe by Email!
Here's a quick example of how to make a hardware-based 1us HIGH pulse followed by a 99us LOW pulse (ie: 100us period, or 10kHz, PWM with a 1% duty cycle), via direct timer register manipulation. I've left ample comments for you to read and follow. This example below is therefore quite easy to follow and learn from, but just as it took me dozens of hours originally to learn how to do all this stuff from scratch--and to learn about all the different PWM modes possible as described in the datasheet and elsewhere, expect to spend at least a few hours if you are truly going to read the references and dig into it enough to understand it yourself. Good luck and have fun!

References to Study:
  1. Secrets of Arduino PWM, by Ken Shirriff
  2. ATmega328 Datasheet (660 pg version from 11/2015)
  3. ATmega168/328-Arduino Pin Mapping

Here's some oscilloscope screenshots of the output on Pin 3 produced by an Arduino Nano running the code below.

Rising edge to rising edge: Δx = 100us

***Subscribe by Email!***

Tuesday, January 10, 2017

Custom Firmware/Software Development/Electronics Engineering Work (Hire Me)

Subscribe by Email!
Page Written: 10 Jan 2017
Last Updated: 24 July 2018


Hi! My name is Gabriel Staples. I work in the embedded software and robotics industry.

Occasionally I take on side projects outside of my day job. For instance, I added custom 2.4GHz wireless control to the Cinemoves Powerslider at a time when off-the-shelf commercial solutions for wireless control of the Powerslider did not exist. This feature I provided enabled them to do special shots in the filming of Mission Impossible 5 and other Hollywood movies. 

I also built a fire drone for ABC's Battlebots show in 2016. 

Cinemoves Powerslider mounted on the side
of a Hollywood stunt car
If you’d like to hire me for custom work, begin by sending me an email. Make the subject line "Custom embedded work--name of project". Not sure if I can handle it? ASK! The worst I'll say is I don't have time, we're not a good fit, or it's out of my area of expertise. See below for details.

  Gabriel Staples
  Electric RC Aircraft Guy, LLC
  (Phone number available upon request by email)
   - If you are looking for free advice instead see here.

Related Links:
Hire Me:

If you're looking for some custom firmware/embedded software development and electronics-related engineering work, you've come to the right place.

Bluetooth-enabled touch lamp.
I am a custom electronics and embedded systems software developer. I design and build custom digital circuits, write code, and use micro-controllers to meet your electronics needs.

If you are using an Arduino for your project, and want your engineers to be able to do the same, I am a perfect fit for the job, as this is my go-to tool of choice.

  • From building an Unmanned Aerial System (UAS) “drone” (fire-shooting 10-lb hexacopter) that appeared on ABC’s BattleBots in 2016, and designing and producing a camera controller wireless interface board used in the filming of Mission Impossible 5 and other Hollywood movies, to writing my own quadcopter navigation/path planning algorithm from scratch (demo video 1 / demo video 2 / simulation), I have clearly and consistently demonstrated my passion and enthusiasm for solving tough engineering problems. 
  • My intense self-motivation is what sets me apart. I do not limit myself to just what I have been taught, I teach myself when necessary, then I use this knowledge to solve problems others can't. When you hire me, I share my knowledge with you and your engineers and work with you to make your life easier. When I don't know how to do something, I do extensive research, ask questions and figure it out.

Hollywood camera wireless control board
--helped film Mission Impossible 5 and
other Hollywood films, as well as the
2014 Emmy Awards.
  • If we're not a good fit, I'll say so. 100% satisfaction guaranteed or your money back (details below). 
  • Career supported by a Master of Science degree and vast real-world expertise, with a B.S. in Aeronautical Engineering, graduating Summa Cum Laude from a top university.
  • 5 yrs. full-time R&D experience + 2.5 yrs. part-time, including 3 yrs. full-time UAV/UAS experience + 4.5 yrs. part-time.
  • In my day job I write embedded systems software for self-driving semi trucks at a top San Francisco-based company.
Other projects I have completed are listed below.

***Subscribe by Email!***