Phone LosersSensei Doug Gets Dishonored
Julian J. has completely dishonored Sensei Doug's entire family by being the sponsor of today's show. Listen to this show if you'd like to hear me to do the same joke repeatedly for 98 minutes straight.

June 09, 2016

Hacker Public RadioHPR2050: Developing Black & White Film
Intro to the film and the chemicals used
Mixing chemicals with water
Load developing tank with film
Live recording of the developing process itself.

Phone LosersGetting Myself Squared Away
Today's show is sponsored by High School Graduate and features tons of square dancing. You can't go wrong with a podcast about square dancing.

June 08, 2016

Hacker Public RadioHPR2049: My Raspberry Pi Home ServerKnightwise talks about how he uses his Raspberry Pi to get things done, and keep his connection to the Internet secure and private when he's away from home. He also discusses a number of command line tools that he uses on the Pi which help to keep the workflow simple and clutter-free.
BYOBU
IRSSI
CenterIM
RTV
NewsBeuter
WordGrinder
mpsYT
Ranger
nmon
Transmission CLI
Tor

Hacker Public RadioHPR2048: The Hubot chat-botHubot
Intro
Hubot is a chat-bot written by the folks at GitHub. It is a node.js application written in CoffeeScript.
Hubot has a variety of adapters that allow it to connect to a variety of chat platforms. These range from IRC to Slack. So, the platform
you are interested in probably already has an adapter available for it.
Hubot uses individual CoffeeScript scripts to provide chat-bot functionality. There are a slew of existing scripts available in the npm. Just search for hubot-scripts.
You can also write your own in order to make sure that Hubot provides the functionality that you need.
Install
Hubot is available as an npm package. So, you will need to install node.js and npm on your system. I will leave this as an exercise for the listener.
I will however, throw out a tip for those of you using a Raspberry Pi for this. The node.js platform should be deployed on an ARM system using the armhf (ARM hard float) architecture. The nod
e.js stack needed to run Hubot will not properly install if you are using the armel (ARM soft float) architecture.
Once you have node.js and npm installed, you can install hubot and its dependencies with the following command.
npm install -g hubot yo generator-hubot coffee-script
You create your own instance of hubot by using yeoman generator. You need to do this as a non-root user. When you create your bot, you will give it a name and
specify the adapter to use. These can be specified as command line flags, or the generator will prompt you for this information.
Owner
Name
Description
Adapter
Interactive
yo hubot
Providing the answers
yo hubot --name mybot --description "My Helpful Robot" --adapter shell --defaults
Running
Once hubot is installed, you can run it with the following. I will use the shell adapter, which provides an interactive shell from which to trigger hubot scripts.
./bin/hubot --adapter shell
Our Hubot instance is now active and ready to receive commands. We will start with a simple ping command.
mybot> mybot ping
mybot> PONG
We can see the available commands by asking Hubot for help
mybot> mybot help
mybot adapter - Reply with the adapter
mybot animate me - The same thing as `image me`, except adds a few parameters to try to return an animated GIF instead.
mybot echo - Reply back with
mybot help - Displays all of the help commands that Hubot knows about.
mybot help - Displays all help commands that match .
mybot image me - The Original. Queries Google Images for and returns a random top result.
mybot map me - Returns a map view of the area returned by `query`.
mybot mustache me - Adds a mustache to the specified URL or query result.
mybot ping - Reply with pong
mybot pug bomb N - get N pugs
mybot pug me - Receive a pug
mybot the rules - Make sure hubot still knows the rules.
mybot time - Reply with current time
mybot translate me - Searches for a translation for the and then prints that bad boy out.
mybot translate me from into - Translates from into . Both and are optional
ship it - Display a motivation squirrel
We will try a couple more.
mybot> mybot echo "Hello world"
"Hello world"
mybot> mybot the rules
0. A robot may not harm humanity, or, by inaction, allow humanity to come to harm.
1. A robot may not injure a human being or, through inaction, allow a human being to come to harm.
2. A robot must obey any orders given to it by human beings, except where such orders would conflict with the First Law.
3. A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.
Adding Scripts
npm scripts
npm install hubot-simpsons
Add hubot-simpsons to the array in the external-scripts.json file.
mybot> mybot simpsons quote
mybot> Disco Stuâ¦ likes disco.
Writing scripts
https://github.com/github/hubot/blob/master/docs/scripting.md
You can add your own custom scripts by adding them to the scripts directory. An examples.coffee script was included when Hubot was installed. It includes a variety of examples of things Hubot can do. I will illustrate by paring this down to a simple single script that responds to requests to open doors. Our simple script will open most doors, but will politely refuse to open the 'pod bay' doors.
The script uses the respond method on the robot module. This method takes a regex patten to respond to. It returns a result that contains a match array when the pattern has been detected. In our script we capture the group between 'onen the' and 'doors'. We then use this to determine which response to provide. The response is triggered with the robots reply method.
module.exports = (robot) ->
robot.respond /open the (.*) doors/i, (res) ->
doorType = res.match[1]
if doorType is "pod bay"
res.reply "I'm afraid I can't let you do that."
else
res.reply "Opening #{doorType} doors"
Restart Hubot by...
Now we can use our new, useful Hubot script.
mybot> mybot open the french doors
mybot> Shell: Opening french doors
mybot> mybot open the pod bay doors
mybot> Shell: I'm afraid I can't let you do that.
Aliases
A rose by any other name... If you would like your Hubot to respond to another name, you can assign your Hubot aliases to respond to. I really like this feature and I assign the '!' as my Hubot alias. This allows me to invoke Hubot with a single character.
mybot> ! open the pod bay doors
mybot> Shell: I'm afraid I can't let you do that.
Adapters
Obviously the shell adapter is not very useful aside from allowing us to play with or develop Hubot scripts. Hubot comes with several adapters that allow it to integrate with existing chat systems. These include: * IRC * XMPP * Campfire * HipChat * Slack * IRC * IRC
Conclusion
I hope this gives you a sense of what Hubot can do and how you can utilize it. Personally, I use Hubot in a variety of ways ranging from silly entertainment to useful communication tool. Using the eight-ball script, I can see if I will have a good day.
mybot> mybot eight-ball Will I have a good day?
mybot> Shell: Most certainly!
mybot> :-)
Using a modified version of of the sms script, I can send text messages to my family members who are not available online.
mybot> mybot sms trinity See you on the other side!
mybot> Shell: Sent sms to 3125550690
mybot> :-)

Phone LosersNo Girls Allowed
Kelli S. is the sponsor of today's show, where we call up members of a Men's Club and present them with various wacky situations. This is the 2nd part of Friday's live show.

June 06, 2016

Hacker Public RadioHPR2047: Neo Fetch 1.5I was reading Linux Voice I heard Dave Morriss talking about shows and made a sort one about Neofetch 1.5. Its a command that displays system information.

Phone LosersBob Murphy
Stan Trucker is the person you should blame for today's show, filled with calls to dog park members, pizza customers and a few more bridge calls. Stan apologizes in advance for this show, but assures you that better things will happen later this week.

June 02, 2016

Hacker Public RadioHPR2045: Some other Bash tipsSome other Bash tips
Expansion
As we saw in the last episode 1951 (and others in this sub-series) there are eight types of expansion applied to the command line in the following order:
Brace expansion (we looked at this subject in episode 1884)
Tilde expansion (seen in episode 1903)
Parameter and variable expansion (this was covered in episode 1648)
Command substitution (seen in episode 1903)
Arithmetic expansion (seen in episode 1951)
Process substitution
Word splitting
Pathname expansion
We will look at process substitution and word splitting in this episode but since there is a lot to cover in these subjects, we'll save pathname expansion for the next episode.
I have written out a moderately long set of notes about this subject and these are available here http://hackerpublicradio.org/eps/hpr2045/full_shownotes.html.
Links
HPR episode 1648 &quot;Bash parameter manipulation&quot;: http://hackerpublicradio.org/eps.php?id=1648
HPR episode 1843 &quot;Some Bash tips&quot;: http://hackerpublicradio.org/eps.php?id=1843
HPR episode 1884 &quot;Some more Bash tips&quot;: http://hackerpublicradio.org/eps.php?id=1884
HPR episode 1903 &quot;Some further Bash tips&quot;: http://hackerpublicradio.org/eps.php?id=1903
HPR episode 1951 &quot;Some additional Bash tips&quot;: http://hackerpublicradio.org/eps.php?id=1951
&quot;Introduction to sed&quot; series on HPR:
Part 1: http://hackerpublicradio.org/eps.php?id=1976
Part 2: http://hackerpublicradio.org/eps.php?id=1986
Part 3: http://hackerpublicradio.org/eps.php?id=1997
Part 4: http://hackerpublicradio.org/eps.php?id=2011
Wikipedia article on the &quot;Named pipe&quot;: https://en.wikipedia.org/wiki/Named_pipe
Wikipedia article on the &quot;IFS&quot; variable: https://en.wikipedia.org/wiki/Internal_field_separator
Advanced Bash-Scripting Guide: Section 9.1 Bash Internal Variables (including IFS): http://www.tldp.org/LDP/abs/html/internalvariables.html

June 01, 2016

Hacker Public RadioHPR2044: Bring on the Power!It this episode NYbill talks about power supplies used for electronics work.
Picture for the episode:
http://media.gunmonkeynet.net/u/nybill/m/my-two-power-supplies/

Phone LosersWho's A Good Boy?
Honey Baby is the responsible party for today's atrocities against dog parks and dog owners. Honey Baby is the person whose ears perk up when we excitedly ask WHO'S A GOOD BOY?? Honey Baby is the sponsor of today's show, where we call a bunch of people from a dog park member list. Yes, apparently there are dog parks with member lists.

Hacker Public RadioHPR2043: My First Beer PodcastHey. It's MeToo here again. On this episode, were diverging from my last podcast of coffee and switching topics to, wait for it. Wait for it. BEER.
Now, you might think to yourself, "What the heck! Beer?" I know. I know. It's so plebeian, right?
Well. I too, use to think like that. What with the shades of Budweiser, Michelob, Iron Horse, Iroquois, Genesee, etc... All squaw piss. Right?
I was raised on wines & cocktails. But, over recent years, especially after listening to many of you guys' podcast on beer-making and drinking, I became interested in wanting to try some of these artisan beers you all have spoken of. But, being overseas in a foreign country, my chances of such are like a snowball's chance in hell. Or so I thought.
Then came one night when I was on my way to teach a class at one of the local universities, and passed by a newly opened bar with the humorous name of "Nobody Knows Bar." Where, when I glanced in the window and to my amazement, were many of the very beers you all had been talking so much about. Wow! Here was my chance to partake. So, I went to class and afterwards stopped in to the bar.
So, I tried a beer. It just happened to be an IPA. Now, don't get me wrong. Many, many years ago I had tried an IPA and found it far from my liking. So, my first choice wouldn't have been an IPA normally. Again you ask, "Why did you choose an IPA this time?" Well, the reason was bartender recommended it.
And again to my amazement (to coin a phrase), it was great. I guess the reason for enjoying it over before is that, as like everyone, my taste buds had changed. And truthfully speaking, I've come to like IPAs over many others.
So, to no longer digress. Let me tell you what I chose and my opinions on the beer.
The beer? A 12oz. 8.2% Alc. by vol., glass bottled Lagunitas Brewery's Lagunitas Unlimited Release Maximus IPA Maximus Ale. I love the labeling. It reads: "Life is uncertain. Don't dip." Also, "If some is good, more is better." And one final one, "Instant gratification isn't fast enough." What a lark!
Enough diddle dallying. On to the tasting: The nose on this beer is crisp and light. The first mouthing brings a floral, fruity semi-sweet taste. The fruitiness continues into the aftertaste with an added semi-dryness. And yet, despite the alcohol content, doesn't ring your clock. The longer after flavor is strongest on the underside of the back of the tongue. Very pleasant.
So. There you have it. My first beer tasting. I hope you found it telling. And maybe you too will try a bottle. I highly recommend it. I will continue these tasting over the course of time. Now don't get me wrong. I'm no sot. And I still like my coffees, but I have now found a new "like" and it's artisan beers.
Until next time. This is MeToo signing out and wishing you happy trails and happy beers.

Phone LosersHeartless Condo Owners
In today's show you'll hear shocking revelations, caused by our sponsor FOD87, where you'll find out that all condo owners are racist and heartless and don't have a problem with children eating soup made from their own tears.

May 26, 2016

Hacker Public RadioHPR2040: Why I Use LinuxMy first objective in making this show is to actually record a show, which is something I've never done.
My second objective was to say something interesting about why I use Linux, how I found it and why I think I keep using it.
I found Linux by word of mouth. It was a bit of a hassle to use back then and I wouldn't have stuck with it if the system didn't meet my needs better than everything else that was available to me. Cost was very important at first, but as time has gone by, it's been the tools and the usability of the system that have made me stay with it.
Despite their differences, Apple and Microsoft both try hard to be big, to have lots of users (buyers). They try to be everything to everyone. I think that happens with some Linux distributions too, but Linux is not one thing in the way that Windows is one thing. This means that at least some distributions can be less focused on keeping up with the latest, flashiest things. Linux just works for what I need it to do. I miss it when I'm not using it.
Most of the work I do besides household bookkeeping is programming for the web. The tools I use most often are: Vim, git, grep, Filezilla, the LAMP stack, Meteor, Firefox, Chromium. Many of these tools are afterthoughts in other systems, whereas they seem like native inhabitants in a Linux distribution.

May 25, 2016

Hacker Public RadioHPR2039: Blather Configuration Part 0: Initial SetupIn this episode I walk you through the process of getting the Blather GNU/Linux speech recognition program running for the first time.
Arch: On Arch Linux this is really easy. Jezra made a package build for the AUR so you can just install it that way.
Debian: I wrote an installation script for Debian-based systems that installs the dependencies to build pocketsphinx, plus a few extra packages that I use continually when I'm running blather (xvkbd, xdotool, espeak, wmctrl, elinks, xclip, curl). It builds/installs the Sphinx stuff, pulls the blather source code, and puts some configuration files and a startup script in place for you. This should take care of pretty much all of the heavy lifting.
I refer frequently to Jezra's usage notes on the Blather source code page at gitlab, so if you're trying to install this as I talk, you might want to follow along over there.
The trickiest bit in the initial run is the creation and placement of the language files. I normally use a bash script for this, but on this first episode of the series I'm going to use the web-based lmtool to create the language files, just the way Jezra says to do on his usage page. He also includes my automated language updater script in the blather source code, though, so going forward I will be talking about how to use that script instead of the web-based tool.
Blather Launch Script
I use a bash script to launch Blather because I want to set several environmental variables: location of the pocketsphinx gstreamer libraries, default browser, default text-to-speech engine, and so forth. Having these environmental variables set means that I can use easy-to-remember shortcuts in my blather commands config file. Here is my launch script:
#!/bin/bash
# tell it where the Gstreamer libraries are
export GST_PLUGIN_PATH=/usr/local/lib/gstreamer-0.10
# set some shortcuts to use in the commands file
#export VOICE="/usr/bin/festival --tts"
export VOICE="/usr/bin/espeak"
export CONFIGDIR="/home/$(whoami)/.config/blather"
export KEYPRESS="xvkbd -xsendevent -secure -text"
export BROWSER="chromium-browser"
# add blather script directory to the user's PATH
export PATH="$HOME/bin:/home/$(whoami)/.config/blather/scripts:$PATH"
# start blather in continuous mode with the GTK GUI
# and a history of 20 recent commands
python2 /home/$(whoami)/code/blather/Blather.py -c -i g -H 20
Links
Blather source code
Blather Installation Script for Debian
Jezra's website
Sphinx Speech Recognition Library
Sphinx knowledge base tool
Learn about the $2 Microphone that I use for blather: HPR Episode 1812
Credits
Music bumpers are from Kimiko Ishizaka's The Open Goldberg Variations: http://www.opengoldbergvariations.org/, used by permission of their CC0 1.0 Universal (CC0 1.0) Public Domain Dedication license.