Slack Enterprise Grid and BotKit

I have the pleasure of using Slack Enterprise Grid on a daily basis as IBM has adopted it internally, I work there, and there are far too many of us to use a single slack instance. The main downside of Slack Enterprise Grid (apart from having about 15 slack organisations running in your client all the time) is that it returns different data when integrating with the Slack Web API and RTM (Real Time Messaging) systems. We had some bot integration that stopped working as a result, and I ended up moving to BotKit and then using a mixture of the RTM and Web API from Slack to get things to work. I won't remember how I did it so I thought I'd better write it down. Continue reading

Multiple Search Keys in CouchDB

I work quite a bit with CouchDB (Cloudant, a hosted CouchDB solution, is part of Bluemix, IBM's cloud platform - and I work for IBM so I get to use this as much as I like) and today I found a feature I hadn't seen before. I struggled to find the docs, so I thought I'd post my working example here in case anyone else is solving a similar problem: wanting to use more than one set of key ranges when filtering a CouchDB view. Continue reading

One OpenWhisk Action Calls Another

Working with openwhisk, it's easy to create many isolated actions and build them up into sequences; the output of one action is passed to the next action in the sequence. In my case, I wanted one action to spawn potentially many other actions. I had to look up how to do it and here it is so I can look it up more quickly next time! Continue reading

Alexa Project Name Generator on OpenWhisk

I'm having lots of fun with my Amazon echo and echo dots, creating skills for them. Initially I used Amazon's lambda platform since that's a very easy way to get started - but I'm an advocate for IBM and was looking for an excuse to play with OpenWhisk (an open source serverless offering that Bluemix has a hosted version of) anyway so this was a great opportunity!

Configuring Skills

There are a bunch of good resources around for setting up skills, picking the name, configuring the "invocation" which is what to say to make the code happen, and so on. I'll skip this section and instead just share a couple of tutorials that I rely on a lot:

Once your skill is configured, it's time to write the code (note: UK users need to pick English (UK) and not English (US) as otherwise your skill will mysteriously fail in your home region. Guess how I learned that??) Continue reading

cfenv for Easier NodeJS on Cloud Foundry

Now I'm working at IBM I am making extensive use of their Bluemix Platform, which is based on Cloud Foundry. The way that Cloud Foundry is set up is actually very neat, with everything you need contained in JSON structures within environment variables. Parsing out those values can be a pain however, so I thought I'd share the library that's helping me the most with this: cfenv. Continue reading

Using NPM Link to Develop Dependent Projects

Right now I'm working on a javascript project that relies on another module for some of its functionality. I'm making fairly major changes that affect both projects, and since the dependency is pulled in via npm, initially I was committing and pushing to a repo so that npm could pull in the dependency from GitHub - on every update. Well that gets tedious really quickly so I'm now using the npm link command which is pretty handy. I hadn't seen it before so this blog post is basically the cheat sheet I wrote when I started using it... Continue reading

Alexa, When's the Bus?

I got an Amazon Echo for my birthday (from my husband, who took romantic to a new level when he liked my present so much he bought me an Amazon dot a week later so he could use the echo elsewhere in the house!), which is a new gadget for us. Of course I started asking her questions that she couldn't answer ... and you can write your own "skills" so of course I sat down to browse the documentation and ended up creating a working skill for her :) It was a fun process but there were lots of unfamiliar parts to it so I thought I'd blog what I did in case anyone else wants to try out creating skills as well, and in case I ever want to remember some of the stuff I know now!

Continue reading

Switching To Reveal.js for Presentations

UPDATE: I presented at one event using reveal.js and have since rebuilt all my presentations in my original toolchain (rst2pdf). One presentation completely resized itself (I used rem units but that didn't help) so code samples were unreadable/missing. Also each presentation has all the dependencies INSIDE the presentation folder, so any backing up or syncing to dropbox becomes impossible (I ended up tethered to my phone with 250k files to sync ...). I like backups AND I like my Dropbox to work. So, no more reveal.js, it's just not fit for (my) purpose. Continue reading

Easy Lint Check for JavaScript

I'm introducing lint checking on one of my projects, because it didn't have a build process yet and I love this as a great place to start. Oh, and because we managed to commit broken syntax! So I set up a php lint job (I will share my travis config in another post) and tried to work out doing the same thing for JavaScript. Continue reading