Developer Log - alyoshenka/neo GitHub Wiki

This will be used to keep track of my progress throughout the completion of this project

Initial Project Preparation and Decisions

Project Setup

January: 12 hrs

start 1/2

Following the tutorial here

  • Issue: can't connect using different topic name
  • Solution: change device policy (it was only allowing pub/sub with "sdk/test/python"

success! I can turn an LED on and off using the MQTT test client

time: 2 hrs

Proposal redo: 2 hrs

playing around with mqtt: 1 hr

logged 1/14: 5 hrs

  • Working on issue #10
    • time: 2 hrs
  • Other stuff
    • gathering example vids: 1 hr
    • meeting with potential teammate: 1 hr
    • discussing with teammate; reviewing stock ticker: 1 hr
  • Revamping drawing library: repo
    • nested git repos? stock ticker should build on drawing library. probably too much stuff to make this a gist. I think I'm just gonna start it over.
    • add python project and set up linting + tests with Actions: 1 hr
    • you can draw a board!: 1 hr image

logged 1/27: 7 hrs

February: 14 hrs


  • lots of pylint and import errors: 1 hr
  • redoing data transformation for writing symbols: 1 hr


  • make code easier to understand: 1 hr
  • install and configure pylint: 1 hr


  • add CL arguments for message display: 1 hr
  • working on GH Actions error that is causing tests to fail: 1 hr
    • local pylint + pytest solved by removing from src/
    • only run CI pytests in tests/ directory
    • add with import sys; sys.path.append('src/') to tests/
  • CI tests pass: 1 hr
    • couldn't merge branch because I was updating branch protection rules for the wrong repo...whoops

logged 2/3: 7 hrs


  • did a bit more cleaning up: enabled scrolling speeds and padding if it scrolls itself out of data: 1 hr


  • reorganize mqtt connection code a bit and work on linter: 1 hr
    • probably doesn't work because aws_iot is not included in repo
  • research git submodules to include aws_iot in the project without manually adding all the code to my repo
  • figured out linting error: was downloading pylint twice (once directly, once in requirements): 1 hr
  • get all changes merged in and resolve merge conflicts and clean up branches: 1 hr
  • get linter to work: 1 hr
    • solution
    • also added a .bashrc alias to run my linting command on lint
  • added pytest locally: 1 hr
    • need to configure secrets to get workflow to pass
  • set up local secrets: 1 hr
    • linting is good. tests fail, but are set up (almost) correctly
    • env vars need to match case. duh.

logged 2/10: 7 hrs


  • added an AWS MQTT test: 1 hr


  • start a (simple) react app and start looking into AWS authentication: 1 hr
  • AWS Amplify tutorial: 1 hr
  • Different AWS Amplify tutorial: 1 hr

March: ? hrs

logged 3/5: 4 hrs


  • Got stuck on that tutorial and started looking for other ones: 1 hr
  • Working on AWS Amplify tutorial - trying to attach policy: 2 hrs
    • Success!
    • Solution: needed to add wss://* and */mqtt to aws_pubsub_endpoint


  • Migrating example code to repo: 1 hr
  • Diagnosing ConnectionDisrupted errors: 1 hr
    • Solution: aws configure != sudo aws configure (run the latter)
    • IAM > Users > Allow user to IoTAttachPolicy
    • sudo aws iot attach-policy --policy-name 'policy' --target 'region:cognito' --output json
  • Set up repo secrets and push to GH: 1 hr
  • Read about designing MQTT topics: 1 hr
  • Design IoT topics and abstract MQTT connection code: 1 hr


  • Design IoT topics (same as above, just in Python): 1 hr

logged 3/10: 9 hrs


  • Design IoT topics on Pi; debug errors to push: 1 hr


  • Working on designing IoT topics to get a response after publishing a command: 2 hrs
  • Setting up CI; adding some tests; setting up branch protection: 1 hr
  • Writing tests and dealing with Cognito/auth issues in Jest: 1 hr
  • Set up linting workflow: 1 hr
  • Fixing merge conflicts, messing around with React: 1 hr
  • Messing around with React, debugging useState issues: 1 hr
  • trying to figure out why it won't connect to Amplify: 3 hrs
    • Pi can still pubsub
    • still no idea
    • updated packages
    • checked that current PubSub version has no errors
      • potential issue with v5
    • solution: delete all aws-amplify files in node_modules and reinstall

logged 3/24: 11 hrs


  • working on Cognito test: 1 hr
    • Can still get connection status and cognito id without withAuthenticator
    • web app running or not doesn't affect it
    • still struggling, tabling for now


  • Make it so webpage can run board operations: 1 hr

    • Allow all users to run neopixeltest with sudo without password
    • Add alias to neopixeltest in .bashrc
    • it kind of works, but not great (yet)
    • still need to input sudo password on first go
  • Working with sudo permissions to run neopixeltest: 1 hr

    • solution: allow command to flash LEDs (using sudo) to individual user, not all users
    • I can trigger an LED animation from a webpage, that's pretty darn cool!
  • Design a data topic: 1 hr

  • req/res to get available Pi operations: 1 hr


  • webpage design, more repo organization: 1 hr