My first presentation at Perl conference, where I introduced myself to wider Perl community and talked about Google@Home project ( https://github.com/IntelliHome/Google-at-Home ).
1. Me &
Google@Home
Vytas Dauksa
Slides are available at goo.gl/iRUI9C
many thanks to mudler!
2. Agenda
● Intro to G@Home
● How to use it
● What’s done
● Where is it heading
3. About me
● I graduated last year, since then:
o Contributed to Linux Kernel 3.15
o Published DateTimeX::Period module
o Mentored a student at GSoC
o Started speaking in public
o Questioned Perl’s best practises in blogs.perl.org
o Began using Perl for my personal projects
4. About me
● Currently, I am trying to start monthly Perl
technical meetings in Southampton.
13. Why G@Home?
● It’s actively developed
not at a pace of..
14. Why G@Home?
● It’s actively developed
not at a pace of.. but it’s here to stay...
15. Why G@Home?
● It follows the latest Perl trends..
o Transitioned from Perl native OO to Moose to Moo
o Integrated Web + RPC Server, using Mojolicious to
issue command from Web interface and/or other
applications
o Scalable: support for multiple embedded devices,
audio it’s also forwarded to the nodes speakers
o Fully pluggable
o Switchable Database Backend
17. Why not G@Home?
● Still very new, hence little known project
( about 17 months old )
● Only very few plugins exist
● Still not usable for everyday tasks
( heavily under development )
● Too many dependencies
o So it’s hard to install and get started….
23. Available Plugins ( not in core )
● Hailo - learn to answer questions
● Wikipedia - search wikipedia with voice
● Relay - smart plugin that allows you to
control GPIOs.
24. Web Interface
Modern technologies:
● Mojolicious
● Bootstrap 3
● JQuery
● Pre-compiling JS &
CSS for a smoother
experience
26. G@Home Android App
● Exposes Press ‘n Speak functionality,
to control your house with your voice
using the smartphone
Source:
https://github.com/IntelliHome/Google-at-
Home-Remote-Controller
29. It’s easy to make a plugin..
● G@Home calls ‘install’ when loading your
plugin
30. Plugin: filters commands
● Here you can hook filter command for the
parser:
sub install {
shift->Parser->Backend->installPlugin(
{ regex => 'wikipedias+(.*)', #We have one global match here
plugin => "Wikipedia",
plugin_method => "search"
}
);
}
31. Plugins: events
● or subscribe to events
sub install {
$_[0]->app->event->on(
# Handling RPC request
# RPC requests are processed in $tag, on/off
GPIO_MSG =>
sub { shift->IntelliHome->Plugins->{"Relay"}->_command(@_); }
);
}
33. My short term plan
● Spread the word of G@Home
o To involve more people to test and contribute
● Refactor the code
● Document need of each dependency
o So we could easily reduce dependencies
34. My medium term plan
● Release it on CPAN
● Package it up for Debian
● Help maintaining it
35. My long term plan
● Make installer
● Get G@Home pre-installed on Raspbian
● Make code easy to follow for people with
little or no Perl experience
● Make it easy to use for kids younger than
10 years old
36. My long term plan
● Port G@Home to Perl6 ( when Perl6 is
officially released and official Mojolicious
port is available )