Giter Club home page Giter Club logo

breakpoint's Introduction

Breakpoint

Heatmaps for sound. At some point we should probably look into setting up a virtual environment for flask development and maintaining a setup.py script, but this will do for now.

##Setup sudo apt-get install python-pip sudo pip install flask flask-oauth flask-security flask-mongoengine

##Usage python app.py

Once we're running production databases/etc the credentials will not be hardcoded and versioned... but for now the worst that can happen is someone maxes out a free mongohq instance/free tier for google APIs so it's logistically easier to keep it this way.

Storyboarding

open app/webpage
modal dialog comes up: "login with facebook/github/etc" if you would like to upload a sound bite (so we can attach bites to users if they choose to not be anonymous)
on exit/login, the map with soundheatmapoverlay is visible

breakpoint's People

Contributors

benmargolin avatar blackownedseattlerestaurants avatar darylsew avatar jennyzw avatar kevinco26 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

jennyzw darylsew

breakpoint's Issues

Deploy on Production Server

We need to deploy on a production server at some point; possibly DigitalOcean & domain cafedaydream.com, possibly a Google provided server.

Audio Analysis

We need to figure out how to compress our audio analysis data into numbers that can produce a clear correspondence between visualization and audio. This is a fairly difficult problem, and very crucial to the app's usefulness, but it should be doable with measures like spectral centroids.

Delete Sound Bites

The entire reason we have a user login system is so people can control what they upload after they've clicked 'Allow'. Creating an interface for selecting and deleting bites might be kind of time consuming but definitely something we want to have.

Logins Could Be Smoother

We should create a warning message for collision signups, and fade the map background when the login box shows up.

Draw Heatmaps

At the core of our application is the way we draw heatmaps, probably the most important part of it. We need to be able to use heatmap.js on a point by point basis, perhaps overriding their time decay function for our own thing. Ideally we'll be able to control gradient, opacity, intensity, and radius of each bite; I can't figure which of these is more important, we should really have all of them.
@jennyzw and @kevinco26 are responsible for this.

Positioning of login buttons changes

If you open up the homepage at default zoom, the 'sign in with g+' and 'login' buttons are perfectly aligned. However, at different zoom levels, they become misaligned. Not a major issue but kind of annoying. See here for ideas perhaps.

View Individual Sound Bites

The ability to listen to individual sound bites would be a big deal. Definitely something to shoot for if we have time but not a high priority.

Heatmaps Display Options

We should have multiple ways to display the heatmap data. Ideas:

  1. Real time map
  2. Accelerated time lapse
  3. User can choose color palette

Data Generation

The point of this app is to crowdsource location-sound data. As things stand, we're not going to have the chance to acquire many real users between now and ship day. However, we can certainly generate almost real data from a bunch of mp3s and locations preferably corresponding to population density, then shoot that directly into the MongoHQ datastore (or whatever we upgrade to for production). Not a huge priority but soon it will be.

Data Upload

Once we've compressed our audio data to core features, we need to upload this data to the Mongo server, ideally with some limitations in place to prevent abuse. There's a bit of work on both the frontend and backend required to enable this.

Maximum Zoom

OperationFailure: database error: Malformed geo query: { $geoWithin: { $box: [ [ null, null ], [ null, null ] ] } }

Happens when we zoom out too much on the map - we should disable zooming out past a certain point (noone needs their map to wrap over a few times..)

Uploading: Save to database

Currently we can upload to the webserver but we need the webserver to save things in our datastore; a schema has been designed but stuff has to be hooked up, which might be really easy or really time consuming.. we'll see.

Upload Limitations

We should place some kind of limitation on how much users can upload so we don't run out of database storage because someone decided to spoof us with 200000 hours of generated audio.

Sign in screen shown by default

If you log on, leave the site & come back or refresh the page, you're presented with the signin screen for a split second before we $('#loginbox').hide() it. This is a little sloppy as far as UX goes and we should address it.

Could make the entire login box only injected into the template in app.py if 'username' in session. Straightforward fix but not a priority.

Divs on top of Divs

See SO Q1 and SO Q2. We need to figure out how to accomplish this with a div (preferably containing an actual thing but that's optional). I'm having some issues getting the style of answer in the 2nd link to work (and ergo the style of the rest of the answers).

Associate Sound Data w Users

Currently anyone can upload stuff; let's restrict uploading to users that are logged in (have to take care of this securely somehow), and associate the sound bite they upload with their username (to support deleting later on).

Changing gradient on custom heatmap.

I figured out how to change the color of a circle (red, green, yellow, etc) by passing in a parameter, but am not successful yet with gradients. I created a couple of gradients for testing, but when I pass the gradients (gradient1, gradient2), it does not change. Just picks up the last color in the gradient. The gradients work standing alone.

Client Querying Datastore

AJAX, Jinja data injection, or the likes is needed to allow the client to query our datastore for map points. Ideally we would support queries by date and location (for time based manipulations + only requesting points that are on the map area being viewed).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.