Code Monkey home page Code Monkey logo

hallo's Introduction

Hallo

Hallo is a side project to see if I can make a Bonjour-like program for an old laptop.

Philosophy

An alarm clock can never really be a personal assistant. To make sure it stays a fancy alarm clock, Hallo operates on the philosophy that once the user starts the program, they should very rarely be forced to directly interact with it. Therefore, unlike Bonjour, Hallo doesn't feature any manner of voice recognition.

Preparing for install

You will have to install the portaudio development headers for any audio output to work. This should be quite easy on Linux. Precompiled headers are available for Windows from various sources.

If you want to build from source, you have to go get gocui (go get github.com/jroimartin/gocui). Glide DOES NOT WORK for gocui.

Additionally, you will need access to the following APIs:

  • Bing Maps (I know, but Google Maps costs money)
  • Darksky
  • Google Calendar

hallo's People

Contributors

sscheele avatar

Watchers

James Cloos avatar  avatar

hallo's Issues

Alarm integration: Calendar

Integrate a calendar into the alarm.

  • Users can add calendar events to change the alarm
  • Alarm will alert you of events after it is deactivated

Update Maps regularly

Bing Maps appears to be using current traffic data to estimate arrival times. To get accurate alarms, it may be wise to update the traffic at the intervals determined by the following function: min(10 minutes, c*(.9)^(time in traffic - time without traffic), n*(.9)(time until departure)). Thus, as traffic accumulates (and as the time to go off gets closer), the time is updated more frequently until the alarm goes off.

Script-based alarm

It would be awesome to have an alarm that can change itself based on the output of a script.

  • Change ring time based on script output
  • Do or don't go off based on script output
  • Run script at configurable intervals

Alarm Integration: Google Maps

Have the alarm alert you to traffic conditions when deactivated.

  • Option to sound alarm n minutes before you have to leave to get to a location at time t

Alarm

Implement an alarm

Command-line switches

Implement command-line switches that allow the user to

  • Specify path to config file
  • Decide whether to use the UI or stdout to echo data to the screen (good for debugging)
  • Print attribution message (necessary to comply with API rules)

Fix Bing Maps

I think the requests to Bing Maps aren't being formed correctly, since they're different inside the program than in the API.

Use the json package for getting trip length

The maps/helper.go:getTripLen() function does work, but isn't particularly elegant. Rather than rolling my own string parsing, I should use the Golang JSON package and throw away what I don't need after parsing.

Add save file

It would be nice to be able to close the program and then be able to load it into the same state in which you left it. Add either a separate save function or integrate it into the existing config file.

-h flag breaks UI

The -h flag is causing flag to print help messages without my permission, which in turn f*cks up the whole UI.

Clock

Implement a working clock to show while idle. Sync periodically.

Use a JSON's Decode rather than Unmarshall

json.Decode is preferable to json.Unmarshall, especially in my context. Use json.Decode(resp) rather than json.Unmarshall(ioutil.ReadAll(resp.Body)) when reading from the APIs

Add config file

Add the option to read settings from a TOML configuration file. This library can be used to handle TOML. The following options should be configurable:

  • Number of calendar events to read
  • Audio file to use for alarm
  • 12 hour or 24 hour clock
  • Default setting for creating alarms from calendar events (no, yes, auto, ask)
  • Default setting for time to leave beforehand in order to get somewhere on time (ie, wake me up x mintues before I have to leave)
  • Show events n days into the future
  • Refresh calendar every n minutes
  • Refresh maps-based alarms every n minutes
  • Refresh maps-based alarms every n minutes within k minutes of alarm going off (to ensure maximum resolution)
  • Default location (latitude and longitude required, used for both weather and as a default origin for maps)

Alarm Integration: Weather

Integrate up-to-date weather information.

  • Alarm can change based on weather (let you sleep in on a rainy or snowy
  • Alarm will give weather after deactivation

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.