Category: Tech


No Comments

Or learning a new language – Golang is my latest endeavor to keep my programming skills sharp. At the last Reno Developer meetup Spot presented on Golang and that inspired me to use Go to implement a Slack custom integration for the devreno Slack team. The Reno Developer meetup recently received sponsorship from JetBrains and one of the perks is we are provided with one license key per month to giveaway to members. Armed with newly acquired knowledge I set out to build a Slack integration in Go that allow any team member to run a slash command and see if they have won a prize.

Slash Commands

The name of the command is “raffl” and typing /raffl in any Slack channel:
Screenshot from 2016-04-30 09:45:08

will display the command, press enter one to focus the command, press enter again to run the command. One of three things will happen:

  1. You win a prize
    Screenshot from 2016-04-30 09:58:49
  2. You don’t win a prize
    Screenshot from 2016-04-30 09:54:03
  3. You’ve already won a prize and thus cannot win another
    Screenshot from 2016-04-30 10:01:26

What are the odds? Currently there are 2 prizes, in the form of JetBrains license keys, and there are 100 members of the devreno Slack team. So your chances are 1 in 100 every time you run /raffl in any Slack channel.

Technical Details

Programming in Go

Overall Go is easy to pick up assuming:

  • You’ve programmed in a C like language
  • Are familiar with a managed language
  • Enjoy using the command line
  • Willing to learn several helper utilities to augment your Go experience

I opted to also use the Go plugin for IntelliJ (both are free!) which provides an integration in a familiar IDE.  I found the move and rename refactorting support invaluable as I started to spread my wings with this project.

I also selected the Go BoltDB to persist the app data over the lifetime of use in a deployment.

Slack & Go

The Slack integration consists of a Slash Command and an Outgoing Webhook. This mainly because Slack expects a Slash command to run in less than 3000ms and will report a warning message back to the user if it takes longer. I forked this Slackbot framework for use as a starting point. Plenty of details in the docs for the framework and very well written. The basic flow is:

  • User types “/raffl” in any Slack channel
  • A call is made from Slack to a service running on a remote server (in this case hosted on Heroku)
  • The Slash command is processed immediately and if necessary a deferred command is invoke in Go to run additional logic
  • Deferred commands are invoked via a Goroutine and the response is continued in via Direct Message from @slackbot.

I choose Direct Message for the response target to keep the details of a prize win/loss secret to the requester.

The two main Go files for running this logic are:

  • Controller: Raffle.go main Slack integration
  • Model: Prize.go. contains logic to interact with BoltDB to manage the Prize data store

Be gentle if you review the code, I’m sure there is room for improvement in my use of Go.

Running Go in Slack

I selected Heroku to run the Go service that use invoked from Slack when “/raffle” is run by a user. I found Getting Started With Go on Heroku and the Go tutorial from Heroku (somewhat) useful.




Categories: Coding Learn

Tags: ,

Ignite Reno #14: What in the Wearable?

No Comments

Wearable, what does it mean?

  • personal: clothing, wrist, or in the case of Glass your face
  • immediacy: augment our daily activities
  • convenience: look up to read your e-mail
  • interaction: keyboard and monitor no more
  • an opportunity to enhance contextual experience

[vimeo 114816127 w=500 h=281]

[slideshare id=42065272&w=476&h=400&sc=no]

Sensordrone for Glass

No Comments

Sensordrone for Glass Sensordrone for Glass

Here are a couple Glass vignettes for a functional first cut at the integration. A huge shoutout to TheMastorBaron for the Glass-IntentTunnel project.

The key aspects to the project are :

  • Glass-IntentTunnel – awesome library to tunnel Android Intents over Bluetooth
  • Hacked version of Sensordrone Control – Bluetooth connectivity, data collection and IntentTunnel integration
  • GlassSensor Glassware – Live Card Glassware app that communicates with Android app via Glass-IntentTunnel

Source code in the GitHub Repo.

Project Information Page

“Glass is a trademark of Google Inc.”

Nevada Opera Mobile App by



We have been hard are work on a new HTML5 Mobile Web App for the Nevada Opera. This app is developed using the cloud based mobile web app platform from Features of this app include:

  • Don Giovanni: Overview, synopsis, cast and video for the upcoming Nevada Opera production of this classic Mozart opera.
  • Don G. – A Vampire Tale: A special edition of the opera with a vampire twist.
  • Upcoming Events
  • Nevada Opera history, staff and artists information
  • Mobile Web/HTML5 based

Categories: News Tech

Tags: , , , , ,