Digitizer Pen and Paper (Early Access)

Scroll down for more info.

Screenshots


Image Not Found

Note example 1

Image Not Found

Note example 2

Image Not Found

Note example 3

Image Not Found

Changing page template

Image Not Found

Changing page colors

Image Not Found

Template examples

Image Not Found

Creating a new note

Image Not Found

Creating a new notebook

Image Not Found

Tool information page

Image Not Found

Cursor information page

Image Not Found

Changing user settings

Description

An Android notetaking app with Active Pen support (S-Pen compatible). This app started as a capstone project for my Computer Science master's program at CSUF.

The project aims to solve three users interface design flaws of handwriting apps on the Android platform that lead to inefficient notetaking. The project report declares these three design flaws:

  • There are too many steps required to perform the task of switching writing tool and tool color.
  • Limited page panning results in a cumbersome writing experience at the edges of the screen.
  • Users forget to switch to the desired writing tool and tool color after using a previous tool.

The solutions to their respective problems are:

  • Reduce the numbers of steps required to switch writing tool or tool color.
  • Allow users unrestricted page panning to eliminate cumbersome writing at the screen edges.
  • Render an optional cursor on screen that indicates to the user at all times the selected writing tool or tool color.

The design of the app focuses on implementing these solutions. Until further notice, this app will be available as an Early Access app on the Google Play Store.

Features

  • Active pen input:
    • Pen hover and palm rejection
    • Eraser-nub recognition
    • Functional barrel button
  • Hovering tool cursor and overlay:
    • Hovering cursor shows which color is selected
    • It also shows the currently active tool
    • Circular cursor previews the stroke size while hovering
    • Available cursors: basic cursor, icon cursor, and label cursor
  • Tool picker:
    • Pen tool
    • Marker tool
    • Highlighter tool
    • Eraser tool
    • One-click interface
  • Color picker:
    • 12 primary colors
    • One-click interface
  • Size picker:
    • 99 sizes for each tool
    • Tool overlay previews stroke size
    • One-click interface
  • Tool-specific profiles:
    • Each tool remembers its color
    • Each tool remembers its stroke size
  • Pages:
    • Navigate previous and next pages
    • Insert new pages
  • Page templates:
    • Wide ruled notebook paper A
    • College ruled notebook paper A
    • Narrow ruled notebook paper A
    • Wide ruled notebook paper B
    • College ruled notebook paper B
    • Narrow ruled notebook paper B
    • 4x4 squares per inch graph paper
    • 5x5 squares per inch graph paper
    • 4x4 dots per inch dot-grid paper
    • 5x5 dots per inch dot-grid paper
    • Plain printer paper
  • Page colors:
    • 12 primary colors for page background
    • 12 primary colors for template lines
  • Notebook management:
    • Create a notebook
    • Rename a notebook
    • Delete a notebook
  • Note management:
    • Create a note
    • Rename a note
    • Move a note
    • Delete a note
  • Sound and haptics:
    • Button press vibrations
    • Writing tool haptic feedback
    • Erasing tool haptic feedback

Requirements

  • Android Lollipop 5.1 or newer

Download

Floating Point Calculator for Android (IEEE 754)

Scroll down for more info.

Screenshots

Image Not Found

"3.14159" converted to 32-bits (Nexus 9)

Image Not Found

"3.14159" converted to 64-bits (Nexus 9)

Image Not Found

"3.14159" converted to 32-bits (Pixel 2 XL)

Image Not Found

"3.14159" copied to the clipboard (Pixel 2 XL)

Image Not Found

64-bit mode, output cleared (Pixel 2 XL)

Image Not Found

"3.14159" pasted from clipboard for 64-bit conversion (Pixel 2 XL)

Image Not Found

"3.14159" converted to 64-bits (Pixel 2 XL)

Image Not Found

"71" converted to 64-bits (Pixel 2 XL)

Image Not Found

Hint overlay shows the result of toggling bit 16 out of 32 bits (Pixel 2 XL)

Image Not Found

"71.5" converted to hexadecimal in 32-bits (Pixel 2 XL)

Videos

New Version of Floating Point Calculator

Old Version of Floating Point Calculator

Description

This calculator converts 32-bit and 64-bit binary strings into their floating point values (i.e. decimal values such as "3.14159..."). It can also convert the decimal number to a 32-bit and 64-bit binary string.

For example, the floating point (decimal) value of Pi is:

  • 3.14159

The binary representation of Pi is therefore:

  • 01000000 01001001 00001111 11010000

This calculator supports two-way conversions. To clarify what that means, here is an example of a two-way conversion:

  • Float to Binary (3.14159 = 01000000 01001001 00001111 11010000)
  • Binary to Float (01000000 01001001 00001111 11010000 = 3.14159)

This app is designed to help computer science and computer architecture students easily understand how a floating point value is calculated. For example: the binary string is color coded to help students differentiate between the sign, the exponent, and the mantissa. Another example: by long-pressing on an individual bit, this will activate an overlay that shows the user what happens when that specific bit is toggled on or off (try it out!).

This converter also supports other numerical systems or representations including: floating point, binary, hexadecimal, octal, signed integer, and unsigned integer numbers.

Features

  • Floating point precisions:
    • 32-bit
    • 64-bit
  • IEEE 754 bidirectional conversions:
    • Float to binary
      Binary to float
    • Float to hexadecimal
      Hexadecimal to float
    • Float to octal
      Octal to float
  • Other bidirectional conversions:
    • Binary to hexadecimal
      Hexadecimal to binary
    • Binary to octal
      Octal to binary
    • Hexadecimal to octal
      Octal to hexadecimal
  • One-way conversions:
    • Float to signed integer
    • Float to unsigned integer
    • Binary to signed integer
    • Binary to unsigned integer
  • Instant output:
    • No need to press enter, values are calculated automatically
  • Copy and paste:
    • Access the built-in clipboard to make it easier to perform copy and paste operations
  • Calculation hints:
    • By long-pressing a bit, the hint will show how intermediate values are calculated
  • Color coded bits:
    • Bits are color coded by a red sign bit, green exponent bits, & blue mantissa bits
  • Error calculation:
    • The calculator will calculate the bit scheme that most closely represents the "entered" value
    • The "actual" value shows the exact value of any given bit representation by the computer
    • The "difference" will calculate the "error" between "actual" and "entered" values
    • If the "accuracy" is 100%, than the "entered" value is represented exactly by the bit conversion
    • The green background span on the "actual" value represents which digits match with the "entered" value
    • The red background span on the "actual" value represents which digits do not with the "entered" value

Requirements

  • Android Lollipop 5.1 or newer

Download

Change Log

v2.1.6

  • Improved
    • Accuracy percentage now displays in 4 decimal points.

v2.1.0

  • Added
    • Hex, oct, and binary converter
    • Fail-safe to prevent crashes from starting with corrupted values
    • 3D button option
    • Invisible bits option
    • Sound and haptics options
  • Removed
    • Dark/light bits option
  • Improved
    • Look and feel
    • Loading screen
  • Squashed Bugs
    • On Chrome OS, bit hints overlay might not close properly
    • Cursor shouldn't blink when value is 0
    • Sound effects trigger when not supposed to
    • Bit hints overlay might appear during start-up

v2.0.1

  • Squashed Bugs
    • When using the numbpad/keypad, toggling the plus/minus (+/-) will not update the bitpad which results in the wrong binary value displayed on the bitpad. For example: switching +0.5 to -0.5 via the keypad results in 00111111000000000000000000000000 (previously the same value) instead of 10111111000000000000000000000000. On the other hand, toggling 00111111000000000000000000000000 to 10111111000000000000000000000000 (i.e. the left-most bit) via the bitpad results in -0.5 (previously +0.5).

v2.0.0

  • Added
    • 64-bit mode
    • Hint overlay
    • Compact layout
    • App remembers last session
    • Toggle font size
    • Strip leading/trailing zeroes
    • Copy and paste NaN/Inf
    • New settings
  • Improved
    • Layout and user interface
    • Results output
    • Preview pasted values
    • Space delimit copied values
    • Performance improvements
    • Calculator behavior adjustments
  • Squashed Bugs
    • Sometimes unable to perform horizontal swipe gesture
    • Crashes when inserting digit where the minus sign is

v1.6.0

  • New Features
    • "Copy Bits" button changed to "Copy" button on large screens, which provides an option to copy either the bits or the decimal value.
  • Squashed Bugs
    • Changed the appearance of the buttons on large screens.

v1.5.0

  • New Features
    • Added options for copying the decimal value as a float, signed integer, or unsigned integer.
    • Added option to show all converted values and copy them.
    • Added option to automatically hide the scrollbar.
    • Other minor visual changes.

v1.4.0

  • New Features
    • Changed layout on small and large screens.
    • Added "copy hex" and "copy octal" on small screens.
    • Added user settings to customize calculator's appearance and behavior.
    • Removed redundant menu buttons.
    • Other minor visual changes.
  • Squashed Bugs
    • Paste may crash app if decimal value contains the following letters: f, F, d, D, e, E
    • Other minor bug fixes

v1.3.0

  • New Features
    • Decimal pane scrollable.
    • Copy/paste and clear buttons added on small screens.
    • "About this app" page added.
  • Squashed Bugs
    • Backspace/delete removes one extra character when released.
    • Dot character not insert if value was zero.
    • Binary string crashes app if 32 bits not specified.
    • Paste decimal action does not strip spaces which crashes app.
    • Pasted decimals not fully traversable by cursor
    • Keypad crashes app if value was Infinity or NaN

v1.2.0

  • New Features
    • Layout for half-byte blocks changed.
    • Buttons moved and resized on small screens.
    • Custom scrollbar added on small screens.
    • Buttons moved and auto-sized to fit on large screens.
    • Copy/paste and clear buttons added on large screens.
    • Cursor will stop blinking if value is 0.
  • Squashed Bugs
    • Paste button crashes app when clipboard is empty.
    • Sign button crashes app when cursor is on the minus sign.
    • Values like 0.00 fails to reset to 0.

v1.1.0

  • New Features
    • Users can now paste values from the clipboard. Works for both base 2 and base 10 values.
  • Squashed Bugs
    • Fixed a bug where backspace/delete crashes the app (i.e. when the last remaining digit is removed and all that is left are periods, signs, spaces, or empty strings).

v1.0.0

  • Initial Features
    • 32-bit precision available (swipe right)
    • 64-bit precision COMING SOON (swipe left)
    • Binary input (swipe down)
    • Decimal input (swipe up)
    • Dedicated keypad (no more erroneous characters)
    • Change any part of the decimal by moving the green cursor <left> and <right>
    • Color coded binary string to familiarize students with the sign, exponent, and mantissa
    • Ads do not obstruct the screen (phones only)
    • Copy the binary string or the decimal string with the menu button
    • Large tablet screens have more room for binary and decimal keypads

Joystick Mouse Adapter

Scroll down for more info.

Screenshots

Image Not Found

Joystick Mouse Adapter example

Image Not Found

Basic Controls, Part 1

Image Not Found

Basic Controls, Part 2

Image Not Found

Reassign functions to Buttons

Image Not Found

Advanced Controls, Part 1

Image Not Found

Advanced Controls, Part 2

Image Not Found

User Options, Part 1

Image Not Found

User Options, Part 2

Videos

Mouse Emulation with a Game Controller in a Video Game on Android

Mouse Emulation with a Game Controller in a Game of Sudoku on Android

Mouse Emulation with a Game Controller in a Calculator App on Android

Description

Developed for the GPD XD Plus and tested on various Bluetooth gamepads. This app turns the joystick on your gamepad or game controller into a PC mouse. This is especially useful for those who connect their Android-based emulation machines (e.g. GPD XD+) to an external screen via HDMI out or screencasting.

The Joystick Mouse adapter works similar to the way the joystick on the GPD Win 1 and GPD Win 2 works in mouse mode.

Features

  • Perform short and long clicks.
  • Variable mouse pointer speed based on joystick input.
  • Perform actions such as: go home, go back, recent apps.
  • Control volume, expand notification tray, launch power dialog.
  • Scroll pages and navigate menus with D-Pad.
  • Change mouse pointer style.
  • Change mouse pointer color.
  • Adjust mouse speed.
  • Assign and configure button functions

Requirements

  • Android Nougat 7.0 or newer
  • Android compatible game controller

Download

Change Log

v1.1.2

  • Squashed Bugs
    • Fixed a minor bug where the hyperlink to the app's website was (still) wrong.

v1.1.1

  • New Features
    • Mouse cursor will now become invisible after switching to Gamepad Mode.
  • Squashed Bugs
    • Fixed a bug where pressing the X button during Gamepad Mode will switch back to Mouse Mode.
    • Updated hyperlink to point to the correct link for Joystick Mouse Adapter.

v1.0.1

  • Squashed Bugs
    • Apps show as unlicensed after purchasing.

v1.1.0

  • New Features
    • Users can now re-assign functions to different buttons.
  • Other Changes
    • Due to compatibility issues, this app will no longer install on Lollipop and Marshmallow devices).

v1.0.1

  • Squashed Bugs
    • Apps show as unlicensed after purchasing.

v1.0.0

  • Initial Features
    • Perform short and long clicks.
    • Variable mouse pointer speed based on joystick input.
    • Perform actions such as: go home, go back, recent apps.
    • Control volume, expand notification tray, launch power dialog.
    • Scroll pages and navigate menus with D-Pad.
    • Change mouse pointer style.
    • Change mouse pointer color.
    • Adjust mouse speed.

Guide Lights for the ZTE Axon 7

Scroll down for more info.

Screenshots

Image Not Found

Mockup on ZTE Axon 7 (Portrait)

Image Not Found

Mockup on ZTE Axon 7 (Landscape)

Image Not Found

Minimal appearance

Image Not Found

Narrow appearance

Image Not Found

Wide appearance, no transparency

Image Not Found

Medium transparency

Image Not Found

Options 1

Image Not Found

Options 2

Image Not Found

Landscape overlay

Image Not Found

Reverse landscape overlay

Videos

Using Guide Lights on the ZTE Axon 7

Description

An Android service that adds an overlay of the 'Recent apps', 'Home', and 'Back' buttons to the ZTE Axon 7 Android smartphone. This app was designed for the ZTE Axon 7, but it works perfectly on other Android devices.

This app solves a design flaw on the ZTE Axon 7's capacitive buttons. Most Android buttons light up so they are visible at night. Those buttons are usually spaced out from each other which prevents accidental input (for example: accidentally pressing 'home' instead of 'back'). The Axon 7's buttons are very close together and they are impossible to see at night because they do not light up. My software adds icons next to these buttons so that the user can get a good feel of where the buttons are in the dark.

I call this app "Guide Lights" instead of "Navigation Bar" because my intention was to use this app as 'inert icons' instead of 'functional buttons'. My reasoning for this is that I do not want the buttons to block touch input where the overlay is obstructing. However, I know a lot of users prefer actual buttons so I included the option to enable button functionality.

Features

  • Button layouts:
    • Change button order
  • Touch behavior:
    • Perform action
    • Temporarily hide overlay
    • Temporarily hide overlay, do nothing
  • Appearance:
    • Minimal
    • Narrow
    • Wide
    • Transparent overlay
  • Fade animation:
    • On
    • Off
  • Transparency:
    • Low
    • Medium
    • High
    • Off
  • Hide duration:
    • 2 seconds
    • 5 seconds
    • 10 seconds
    • 30 seconds
    • 60 seconds
  • Status bar offset:
    • Offset overlay so it does not obstruct status bar
  • Return timer:
    • An on-screen counter to tell user when hidden overlay returns (coming soon)
  • Gestures:
    • Swipe gesture (coming soon)
  • Sensor options:
    • Shake device to hide the overlay
  • Other sensors:
    • Proximity (coming soon)
    • Light sensor behaviors (coming soon)

Requirements

  • Android Nougat 7.1 or newer

Download

Change Log

v1.0.1

  • All Changes
    • Fixed a bug where the icons did not display correctly when appearance is set to "minimal".
    • The "narrow" appearance option now gives the bar rounded instead of sharp corners.

v1.0.0

  • Initial Features
    • Button layouts: change button order
    • Touch behavior: perform action, temporarily hide overlay, do nothing
    • Appearance: minimal, narrow, wide, or transparent overlay
    • Animation: fade animation on or off
    • Transparency: low, medium, high, off
    • Hide duration: 2, 5, 10, 30, 60 seconds
    • Status bar offset: offset overlay so it does not obstruct status bar
    • Sensor options: shake device to hide the overlay

Forest Fire Simulator

Scroll down for more info.

Screenshots


Videos

Gameplay Video

Description

A 2D top-down simulation of a Forest Fire. It is a real-time, interactive simulation with replay features and a map editor.

You start with a randomly generated map of trees. Then you can set a virtual fire on any tree and watch how the fire propogates through the nearby trees. You can also generate rain and wind weather effects. Rain reduces the spread rate of the forest fire. Wind will affect the path of the fire, depending on the direction of the wind.

The map editor and generator allows you to create new maps. You can either manually place trees on the map or generate them randomly. You can also delete sections of trees and specify the size of the map.

The replay feature allows you to rewind to a specific point during the simulation or return back to the most recent point. When you rewind, you can change the outcome of the fire propogation by choosing different spots to propogate the spread of the forest fire. If you're impatient, you can increase the simulation speed. If you want to pay closer attention to how the fire spreads, you can decrease the simulation speed.

Features

  • Random map generator:
    • Set map size
    • Set tree density
  • Map editor:
    • Insert trees
    • Delete trees
  • Replay system:
    • Rewind events
    • Change outcomes
  • Adjustable simulation speeds:
    • Slow down
    • Speed up
    • Pause
  • Real-time mechanics:
    • Simulation is run in real-time
  • Weather interactions:
    • Rain effects
    • Wind effects

Requirements

  • Java Virtual Machine, v7 minimum

Histogram Maker

Scroll down for more info.

Screenshots

Image Not Found

Step 1: enter the values

Image Not Found

Step 2: specify tick intervals

Image Not Found

Step 3a: pick color and gap size

Image Not Found

Step 3b: alternatively, click on square for color palette

Image Not Found

Step 4: change the graph labels

Image Not Found

Step 5: generate the graph, resize, and save

Image Not Found

Resized graph

Videos

Using Histogram Maker

Description

A quick and easy-to-use application that generates histograms from a data set. It has several options to customize the histogram's appearance, such as gap distance between bins or the color of the bins. Histograms can be saved as JPEG files.

Features

  • Data input:
    • Import data file
    • Manual data entry
  • Tick options:
    • Tick intervals
    • Minimum tick value
  • Bin color picker:
    • Use RGB sliders
    • Color palette
  • Bin gradients:
    • Solid color or gradient color
    • Gradient color
  • Bing gap distance:
    • Change the gap size
  • Graph labels:
    • X and Y labels
    • Graph title
  • Other options:
    • Horizontal guide lines
    • Bin frequency labels
  • Resize image:
    • Resize the graph by dragging on the corners
  • Save image:
    • Save file by right clicking on the histogram

Requirements

  • Java Virtual Machine, v7 minimum

StatLogic

Scroll down for more info.

Screenshots

Image Not Found

Z-test, entering sample

Image Not Found

Z-test, results

Image Not Found

Output window

Image Not Found

Descriptive statistics

Image Not Found

Standard score

Description

A basic statistical calculator that performs calculations for t-tests, z-tests, confidence intervals, descriptive statistics, and standard scores.

Features

  • Hypothesis tests:
    • 1-sample Z-tests
    • 1-sample t-tests
  • Confidence intervals:
    • t distributions
    • Normal distributions
  • Standard score:
    • Quick way to calculate Z-score
  • Save and Load:
    • Save output into a file
    • Load data files to perform calculations from
  • Descriptive statistics:
    • Mean
    • Median
    • Mode
    • Quartiles
    • Min
    • Max
    • Variance
    • Standard deviation
  • Data sort:
    • Ascending numerical order

Requirements

  • Java Virtual Machine, v7 minimum

Floating Point Calculator for PC (IEEE 754)

Scroll down for more info.

Screenshots

Image Not Found

16-bit conversion

Image Not Found

32-bit conversion

Image Not Found

64-bit conversion

Image Not Found

Formatting options

Description

A Java-based floating-point calculator that supports two-way 32-bit and 64-bit precision conversions between decimal values and their equivalent binary representations. This was a team project with co-developer Latrice Sebastian.

Features

  • Floating point precision:
    • Single Precision
    • Double precision
  • Conversions:
    • Float-to-binary
    • Binary-to-float
  • Instant output:
    • No need to press enter
    • Values updated dynamically
  • Formatted output:
    • Hide trailing zero bits
    • Remove space delimiters

Disclosure

  • Half precision:
    • never listed as a features because it was buggy and did always produce the correct result.
  • Single and double precision:
    • (2019) discovered that single and double precision are not always accurate after further testing. This is due to unaccounted loss of precision during the manual calculations for certains numbers. Development for this app has stopped for the time being but I have made an Android version of this calculator which simply uses built-in Java functions to obtain these values which have higher accuracy than this version.

Requirements

  • Java Virtual Machine, v7 minimum

Sketch and Label

Scroll down for more info.

Screenshots

Image Not Found

Sketch of a car

Image Not Found

Sketch of a tank

Image Not Found

Sketch of an airplane

Videos

Sketch and Image Classification of a Car and a Tank

Sketch and Image Classification of an Airplane

Description

Requires a compatible Samsung device with S-Pen features.

An Android image recognition app that can determine what the user has sketched on the Android app. Trained and integrated the app’s neural network via transfer learning on the MobileNet architecture.

Features

  • Image classification:
    • Car, tank, airplane
  • Saves sketches:
    • Last sketch is saved in the file system
  • Eraser input:
    • Erase with the stylus eraser

Requirements

  • Any Samsung Galaxy device with an S-Pen
  • Android Lollipop 5.1 or newer

Download

  • Coming soon to Google Play Store

Raspberry Pi Door Sensor and Alarm System

Scroll down for more info.

Screenshots

Image Not Found

Caption

Image Not Found

Caption

Image Not Found

Caption

Videos

Image Not Found

Caption

Image Not Found

Caption

Description

A project for Advanced Computer Networking in which my partner and I implemented a basic IoT door alarm system with a Raspberry Pi 3 Model B.

Features

  • Client alarm:
    • Sounds an alarm upon server notification
  • Client sensor:
    • Detects an opened door with Reed sensor
  • Server-side script:
    • Python script to communicate between alarm and sensor

Requirements

  • Linux/unix system (alarm client)
  • Raspberry Pi (sensor client)
  • Ubuntu Server (messaging server)

Download

  • Technical documentation (coming soon)
  • Slide presentation (coming soon)
  • Source code (coming soon)