Here’s an application that I can’t believe doesn’t exist and I would love to see. I call it the conditional smart clock. Basically, an alarm clock that allows you to set some simple conditions to determine when it rings. Say I’m an avid runner (i’m not), the clock would allow me to specify that I want to be woken up at 6am <i>unless</i> it's raining in which case I would like to sleep in until 8. Or I wanna get up early for a surf unless the local beach is closed in which case getting up early will be pointless. Obviously not perfect - but having the ability to do this with some level of accuracy would be helpful. Amazingly brief desktop search has only shown hyper-specific examples including one for a school district in Colorado that keeps track of school closures etc. Been trying to teach my Google Assistant to recognize this in the faint hope that human overseers will pick it up and think its a good idea :-) but to no avail. Seriously if you are a developer, I haven’t met anyone who I've told who doesn't think this is a good idea - can you please develop something like this so I can start using this (fwiw I’m a data person, whose skills would mostly be in back end development for which an app like this doesn’t necessarily have much use)
Seems to me like a better way to do this is an alarm clock that can be triggered by another program, and then you can use IFTTT type functionality to decide when to trigger the alarm clock.<p>So, use composable tools instead of building a custom alarm clock that can do weird stuff.
This would be possible with something like Tasker on Android - although no batteries included, and you'd have to supply much of the data yourself. The request is a pretty big scope for a managed solution - weather might be relatively easy, while pulling in beach or school closures for arbitrary locations would be near impossible (is there an API already that tracks these?)
Sounds like something that could be done as a cron job, at least on Debian-based distros.<p>Update: It would be a script that checks the condition and then wakes you up.
From another backend person, maybe it’s easier to implement this with a set of rules when not to trigger the alarm:<p>- your calendar has a day-long event called out-of-office<p>- school’s RSS feed has a new element matching “clos(ed|ure)”<p>Similar with weather, etc.
You think like me, I also want more automation. You could write apps for your smartphone, smartwatch or smartspeaker to do this or hire someone to write those apps for you.
Smart contracts for Ethereum seem to be addressing something like this. In order to have a smart contract based on some external condition you need a reliable way to learn about that external condition. This is not trivial, especially since the conditions can be anything that happens in the world. Some of the kinds of data you'd like to have access to may not be published anywhere by anyone (e.g., a school may only announce closures on public radio). If the Internet of Things ever really becomes standardized and takes off it could be a source for some of this kind of information (assuming the privacy and security problems are solved, which currently does not look likely). You could instrument your own home to get some data (local weather, keep track of who is at home). Finding an easy way to write parsers that pull data from web sites could be another source of data. I suspect there are several tools for doing that, although it relies on the web site never changing its format (at all, one space added could potentially throw the parser off). Parsing web sites to get data is not very difficult, I've often seen it done to get fitness tracker data from services that don't have an API. Building parsers for _everything_ anyone might want to use as input to an algorithm would be a lot of work though, which is probably why it doesn't exist. Some things like this must exist for Ethereum smart contracts though, so that might be a good place to start looking. Once you have the data, the rest is pretty simple and could be done with a scripting language on a Raspberry Pi. Note that this opens some security risks (anyone who can manipulate the external data can alter your alarm clock. Your alarm clock may also become a target since it aggregates data of interest to you.) People would want barriers around their data (so you probably can't have your alarm clock wake you when your boss wakes up). Given that a lot of the data you want to use seems to be local, the incentive is low for someone to build you your conditional alarm clock since it could only be sold in the local area. Voice assistants can handle somewhat vague questions and return an answer, but I'm not sure you could rely on the answer being what you expect (e.g., is that closure for Rockville High School in Montana or Rockville High School in Arizona?) This is really one of the main problems that makes computers frustrating to use, data has to be precisely specified and computers/algorithms don't really understand human context. It's not an impossible problem, especially if you are creating an app for your local area for only you to use, but solving it for everyone starts getting close to requiring a general purpose artificial intelligence along with instrumenting the entire world to supply data in a standardized format. Even a simple question like "is it raining" is not so simple. Is it raining at your house? Is it raining along the path you want to run on? Is it going to rain by the time you get outside? Is the weather service that accurate? Is a light mist ok? Is a wet fog ok? Is snow the equivalent of rain? Is it only going to rain for 3 minutes out of the hour you'll be outside and is that ok? The world is messy and imprecise and computers/algorithms are brittle and fragile. A lot depends on how accurate you want it to be as well, is being woken too early 5 times a year ok? How about missing the start of a few meetings? The more accuracy you want the harder it will be to build. The rich hire servants to do this kind of thing for them. A further complication is that some things are just not entirely predictable so you are limited to only what you can measure reliably (and reliability is it's own set of problems).