Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
My Voice Controlled Smart Mirror: A Postmortem (chrisuehlinger.com)
147 points by Uehreka on Dec 6, 2016 | hide | past | favorite | 64 comments


A bit surprised no one mentioned the (quite large) open source project one of the first Magic Mirror developers created and it is really good:

https://magicmirror.builders/


After I built this, I discovered a bunch of these things. I hadn't seen that one, it looks really neat! One of the benefits of my approach (for me) was that I already had an Echo and a Kindle Fire (that I wasn't using). If you have a bunch of tech lying around, this approach can be more cost effective than buying a big screen.


Oh totally not knocking your project, this was a fantastic writeup! Thanks for doing it! I was just a bit surprised that no one else in this thread mentioned that one as it has been around for awhile and is relatively well established in "home automation" circles that I tend to frequent.


i understand i'm nitpicking, but maybe someone should tell the author what "mortem" means? i was expecting something dead, a failure story. pick another worn out phrase ;)


I've seen "postmortem" used frequently for project wrap-up meetings. I try to suggest "postpartum" as an alternative.

Occasionally I've been shot down because "postpartum" is linked to postpartum depression, and so it's not a very positive term to use. Instead we keep using the apparently more-positive "postmortem".


Yeah, using "postmortem" as project wrap-up is definitely inaccurate, unless the project failed.

We use the term "retrospective" to discuss things like lessons learned etc.


Because death is so much more positive when you're talking about development.


Same


why not debrief?


What about a good ol' retrospective?!


In some corners of our industry, postmortem is a standard term for analysis of a project after it has been shipped and work on it has been finished.

EDIT:

s/In our industry/In some corners of our industry/


That's a retrospective -- a post mortem usually refers to talking about an incident where something went catastrophically wrong.


I think Agile has already hijacked the word "retrospective" to mean something else - a meeting, not a publication.

For better or worse, that's how the word "postmortem" is used in some corners of programming world. I've become familiar with it in gamedev circles, something like 10 to 15 years ago.


I'm surprised at this length of thread within a tech context. I believe a similar thread occurred, but with context of scriptwriting, just a day or three ago. That conversation was all about how scriptwriting isn't reasonable or sensible enough and how things should be changed...


It seems to be a standard term in game development at least: http://www.gamasutra.com/features/postmortem/

You're right that in our corner of the industry it typically refers to particular incidents, though.

It seems pointless to argue which one is more correct, though.

For the record, here's Wikipedia's take: https://en.wikipedia.org/wiki/Postmortem_documentation

Key quote:

> A project post-mortem is a process, usually performed at the conclusion of a project, to determine and analyze elements of the project that were successful or unsuccessful.

(emphasis added)


as "mortem" means death (from the latin "mors"), that is why it's typically used to signal an analysis of a failure, ie, the project is "dead". ah but language evolves in a chaotic way... see also the new definition of "literally"


Sure, but traditionally in many parts of the industry projects have a limited lifetime and the release is generally the end (i.e. death) of the project. This is especially true in the games industry where until MMOs, DLC and perpetual "early access" came along most projects wouldn't outlive the release date except maybe for a very short support phase.

So it's less about language evolution than about different connotations of the word "death". The end of a project is its natural death, the failure of a project is a premature death.

Using the term postmortem for an end-of-life retrospective may seem morbid, but it's no more inaccurate than using it for an incident debrief -- because if you want to be that pedantic, a failure that doesn't result in the end of a project is not a "death" either.


True. On the other hand, I could care less.

https://xkcd.com/1576/

(see also https://xkcd.com/1108/)

;).


No, "I could care less" is never acceptable.

https://www.youtube.com/watch?v=om7O0MFkmpw


didn't know that. now, what does that say about (some corners of) our industry? :)


Not necessarily. See https://en.wikipedia.org/wiki/Postmortem_documentation for an explanation of how postmortem commonly refers to a breakdown of what went on during a project, to learn for the future. In the past, I particularly enjoyed the postmortem stories in Gamasutra, the game developers website.


Hahaha, I felt a little weird using the term "Postmortem" myself, but as other commenters pointed out, it is a standard usage. "Retrospective" felt too grandiose... I suppose I could've used the term "Review"?


i must admit, i was unaware that this is used so commonly. that changes things, of course. and i don't really know what to suggest as an alternative... review is ok. or, "a look back"? "lessons learned"? "experiences from building..."? or perhaps drop it altogether, "My Voice Controlled Smart Mirror" sounds sexy enough ;)

naming is hard.

anyway, just to be clear, this is irrelevant :) nice work!


Postmortems are often done in software development after a project is complete. They're used to reflect on what went right and what went wrong and help ensure you learn as much as you can from the project you just completed. The name does not indicate that the project was a failure.


That's what the word "review" is good for.


Review might also be a good term. However, the number of commenters saying they've seen this term used in the way I described suggests that it is the commonly used term in some segment of the software industry.


This! I came here expecting an expose about how it was really just a stupid waste of money and actually was kind of creepy or something.


We called it AAR (after action reports) in the military. Had to fight with b-school people to move away from the term post-mortems.


IMHO, the preferred terms here are "AAR" (After Action Review: https://en.wikipedia.org/wiki/After-action_review), and "BAR" (Before Action Review).


Is there any free-software voice recognition that one could use in case one doesn't trust the Amazon Echo not to send everything you say to the NSA?


Mozilla is working on an open source speech-to-text engine, which might be interesting for you: https://connected.mozilla.org/2016/11/28/the-next-phase-for-...


I didnt want to get a echo because of this. One of my friends pointed out that I have no issue carrying around a cell phone with a mic and camera that can and likely is used for exactly this. Now I have an echo and I can turn on nature sounds at night without having to get up and go to my computer.


Yeah. I'm pretty paranoid, but I already have Google Now, Siri, and Cortana in my house via phones and laptops, so bringing in Alexa really isn't much of a stretch.


If you're really paranoid but need to have at least one of these things, you could make a reasonable argument that using as many of them as possible will increase the size of conspiracy necessary for certain types of attacks against you (eg. wrongful conviction).


All of the offline projects I've see use http://cmusphinx.sourceforge.net/, which...isn't that great. It works, but definitely takes a bit of finagling to get right. Even then it's pretty simple

I have recently heard about http://kaldi-asr.org/ but I've yet to try it out.


If you're open to using C#, the Microsoft speech API is pretty good (with a few caveats). I had a very targeted use-case, so I had to create a small grammar, and finding documentation was awful. It was nearly flawless for native English speakers, but my French co-worker had to practice his Pittsburgh accent to get it to work for him.


Is that offline? I also only run linux, and it looks like that only runs on windows. But thanks for the suggest.



You can install Alexa on a raspberry pi and make it so the mic only turns on when a button is pressed.


Or use your own hotword detection that you (or someone you trust) built.


I second the question - ignoring the privacy issues, I don't like the fact sound recognition is done over the cloud. It can be (and in the past has been) done locally, and at minimum this saves you the half-a-second to few seconds of lag created by the roundtrip to some server out there.


I've started integrating annyang into my mirror:

https://talater.com/


Which uses the browsers inbuild speech recognition, so if it runs locally or not depends on the browser. As far as I know, out of the box it only runs in Chrome, which uses Google's cloud services for it. Firefox has it behind an about:config flag and uses Pocketsphinx internally.


Kaldi has a deep learning speech-to-text model now:

http://kaldi-asr.org/models.html

Or you could use Sphinx

https://github.com/cmusphinx/pocketsphinx


I'm not a web dev, just "know enough to be dangerous", so I have to ask: the functionality that we see is just browsing HN, but he mentions using the API to fetch data and that this is cumbersome. Why not just do simple wget calls (or equivalent)?


So that approach would be called "web scraping", and was the only way to build HN-based apps and sites before they gave us an API. Many apps still do this.

The API is a little cumbersome (it's totally RESTful, which means you sometimes have to make tons of HTTP requests to get enough data for a particular view), but it's much more reliable. I don't have to worry that HN might change the structure of their markup and break my app.

(Bear in mind, that's not HN's markup on the page, it's new markup that I wrote using the data from HN's API.)


It doesn't look like it's just browsing HN, I think that's a custom view via the API.


I love the "cool" factor of this; it just looks cool.

Chris's addition of voice controls is equally cool.

The appeal to average people is cool; the hacking together of so many tools is cool.

I'm curious where stuff like this heads...


At first sight, yes, but do we really need to be able to read Hacker News on (voice) command? Or even the weather for that matter. To me it feels like a "We were promised flying cars and we got 140 characters" kind of future.


Yeah, I know what you mean. I like to rip people who actually build real stuff from behind the glow of my computer. Why can't they simply build Jarvis and be done with it? I could do that if I wanted to.

Do I need to explain sarcasm? Probably.

Anyway, the challenge is to do better, not to criticize.


So unless we feel motivated to construct a 'better' smart mirror, we're not able to point out that we think the very idea is silly? I mean, I appreciate the effort, and it's really a cool build, but rather pointless in the end. Is that not a valid point of discussion?


Don't limit your imagination to a mirror.

The OP wanted to build and learn. Might be kid's stuff or pointless to you. He shipped his version 1.0. That's more than most.


In building new intents and views for the mirror, it's kind of trial and error as to what will be actually useful and what won't.

The weather intent has been genuinely useful. I can wake up in the morning, say "Alexa, ask XANA about the weather", and get back a chart that shows the exact info I want. I use this pretty organically (I don't just force myself to use it) every day, and I've found myself using my weather app less. I just find it to be a lower friction interface.

The Hacker News intents were a cool proof of concept, and I was hoping they would help me waste less time on HN by getting a summary of the important stuff without access to the full site. While I still like it and use it from time to time, it isn't as viscerally useful as the weather intent.


Nice! When I posted my comment yesterday I wasn't expecting to see it on a mirror!


I'm always fascinated by people's fascination with smart mirrors. I don't get it myself, but I like their enthusiasm.


For me, the mirror aspect is a neat addition, but really I just like having an always-on screen that displays data at my slightest whim. It's a lower friction way of getting weather data than pulling out my phone and opening an app.

Other things I've thought about implementing or partially implemented:

- A CPU or memory graph for my servers (or real time Google Analytics data). - A graph of my WiFi's connection speed so I can tell when Comcast is dropping the ball. - A graph of the travel time with traffic for my commute so I can make decisions about when to leave for work.


Just for another perspective, I intentionally left voice commands off of my mirror because the last thing I wanted was another thing to interact with, mere feet away from my laptop, phone, tablet, etc.

Instead, I treat mine exactly like a clock. Had it up more than a year, still love it, but beyond glancing at it to see how the weather is or when my train comes, I never interact with it or give it a second thought.


Yea I spend, on average, maybe 5 seconds tops looking at myself in the mirror every day. Why would you build so much functionality into a display that only exists in one, usually very humid sometimes smelly room, and the only way to interact with it is to stand there shouting into the steamy air?


Check out the video in the post: I have the mirror in my bedroom, within view of my bed and my reading chair. And even if I only interact with it a couple times per day, I find it pretty useful.

I certainly wouldn't recommend putting this in a bathroom :) Some part of the system would eventually get water damage and Alexa would make more mistakes listening over fan/shower/faucet noise.


Well I'd say it's meant for a bedroom or living room mirror, not the bathroom mirror. Now in my house there's only two mirrors, one inside the wardrobe and the other in the bathroom, so I wouldn't get much of a Smart Mirror TM, but a few friends do have living room mirrors, so for them it could have a better use case than mine.


Well, there's the "mirrors and copulation are abominable, because they increase the number of men" angle ...

(Borges, of course: https://en.wikipedia.org/wiki/Tlön,_Uqbar,_Orbis_Tertius , probably piling on the known historical puritan dislike of mirrors because of sinful vanity.)


Is the screen always on, or does it wake up on command? If so, how? If not, does it produce visible light in the room when not displaying?

Amazing result, well done & thank you for sharing!


It's always on. This means that when the lights are out, there's a faint black rectangle (with the time in the upper right corner) shining on my wall. It was a little annoying at first, but now I don't notice it. It doesn't keep me from falling asleep.

I couldn't find an API in Fire OS to change the user's screen brightness, and I don't know that one exists. I'd love to have it be brighter during the day to compete better with sunlight, but alas.


Never used FireOS, but I assume you'd just use the Android windowsmanager. Code (from my smart mirror, which I posted here a year ago and no one cared) here, line 190: https://github.com/ineptech/mirror/blob/master/src/com/inept...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: