Sometimes I post things that are kind of personal, so I make sure to put them in this category. If there is a password on any of these posts, then the password will be my date of birth, in YYYY-MM-DD format. If you know me reasonably well, then you should know that (or just ask me and I’ll tell you).
I’ve just released version 1.8 of both Keyring, and the Keyring Social Importers. This version includes a new service file, and an accompanying importer, which allows you to import content from a Jetpack-powered WordPress site, using the WordPress.com REST API. That means any site hosted on WordPress.com, or any self-hosted site with the Jetpack plugin installed. There are also a few key fixes for the Twitter and LinkedIn services/importers, so it’s a nice update.
The new importer will pull across the entire content of posts, including tags. Similar to the Instapaper importer, it attempts to avoid duplicate content issues by marking pages as noindex if they come from imported content.
This is another piece of the puzzle required for me to create a complete archive of my digital footprints over on Dented Reality, now that I’m blogging here. This post should be imported over there automatically within an hour.
Note that currently the importer doesn’t sideload any media items (will add that soon) or support geo data (again, I’ll add that when I get a chance).
Now that I own my own house, and some of the technologies involved are a bit more stable, I’ve gotten into the idea of home automation a bit more. Here’s a quick run down of my current configuration.
At the center of most things, I have a wink hub (first generation). I configure as much as possible through that, since it simplifies interacting with them if they’re all available in one place.
From there, I have 2 Schlage Connect deadbolts (house and garage doors), which are both programmed with the same set of user codes (has to be done manually). It’s nice to be able to control codes from within the wink app, vs using the on-pad controls.
To control lights, we have 3 rooms converted over to Lutron Caseta light switches (so far, I’d like to do a few more). This makes it easy to control an entire circuit (all 3 rooms are controlling either 3 or 6 bulbs, so they’d be expensive to convert using individual smart bulbs). They’re super easy to install, and you don’t need their hub thing if you have the wink, which is compatible. I also have 3 iHome Smartplugs, which plug into an outlet, and then let you plug in any standard lamp/appliance, and control it. I don’t love the Smartplugs, and have had some trouble with them dropping their connections, but when they work they’re fine.
Separately, I also have 2 LIFX bulbs, which can be controlled directly, so they are in a couple of lamps that could otherwise be controlled via Smartplugs (I got these bulbs from their Kickstarter way back).
To control all of the above, I actually have everything configured in both an Amazon Echo, and a Google Home. Redundancy FTW, and it’s fun to experiment with each platform.
Technically, also connected to the wink hub, we have some Nest Outdoor security cameras, which have been really fun to play with. I’ve even hooked up a system to automatically take snapshots, which is interesting for comparing seasonal shade profiles for gardening purposes.
Apart from those power/control/security devices, we’ve also current got an Apple TV, a Chromecast (integrates really nicely with the Google Home), and I use Automatic in my truck.
I’ve played around a bit with configuring shortcuts and “robots” (automations), but really haven’t found many that are that useful to be honest. Probably the best one is one that just turns on our kitchen light when we open the back door (which opens basically into the kitchen). I think one of the biggest problems is that I don’t have a great system for handling “presence”, which needs to take me and Erika into account. Without that, anything I automate based on my presence is likely to just be an annoyance for her if she happens to be at home when I’m not (or vice versa).
Areas that I’d be curious to look into automating would be thermostat control (long story as to why I haven’t done this already), external temperature/precipitation, combined with irrigation, and possibly window coverings.
Last year, Erika and I planted our first ever vegetable garden. We quickly became obsessed with it, and this year we’ve upgraded from 2 beds with approximately 50 square feet, to a total of 6 beds, with over 285 square feet (more than 5x the growing space)! We’re pretty psyched to see what we can produce this year, and will be trying a bunch of new vegetables, in addition to more of the varieties we liked from last year.
Here in Denver (as with most areas that have hard winters), one of the most important dates for growing is our last frost date. Typically for us, that’s May 2nd. Most of our planting needs to be done relative to that date (either before or after, a certain amount of time). We decided that this weekend was when we would get in the bulk of what we’re growing (cooler season crops), so we had a planting party.
Since I’m a bit OCD, I like to plan things out pretty heavily, and figuring out the logistics of when to plant things and where/how is pretty fun. I now have plans in my head for a calendar-generator, where you can tell it where you are, and what you want to plant, and it’ll generate a calendar for you, telling you when to do everything 🙂
In the meantime, I’m manually creating garden maps and planting schedules, which will have to do for this year at least.
I’ll be sure to post some updates once things are growing, and hopefully overflowing their beds.
I’ve been trying to make small improvements to the Keyring Social Importers package (and People & Places) that I maintain, and have made a number of them over the last few weeks. Here are some details of recent updates which you may have missed:
Added a Nest Camera service and importer. Including recent updates, it will download a snapshot from the specified camera(s) during the hour indicated, auto-tag it using the location of the camera, and also associate it with a Place if People & Places is co-installed.
You can see most of them in action on my site, Dented Reality, which uses them to aggregate most of my online social activity. The People & Places data is not directly exposed yet, but you can see it in the REST API output.
I attended the SaaStr Annual conference in San Francisco last week, and here are some of the notes I took in amongst the different sessions.
The nature of business is shifting towards:
Mobile and multi-device
In addition to knowing who your customers are, you should know who they are not. Who are you willing to be bad for?
If your LTV is 3x your CAC, then you’re in a good place.
It’s important to have a realistic understanding of churn. A “simple” measure of 5% implies that your customers are with you for 20 years.
There are four fundamental areas of Machine Learning which can be combined and used in different configurations
Regular retrospectives, where you identify and fix things, lead to self-healing, constantly improving teams.
Managers should have their own “operating system” — what are the elements they consider important to their operation? 1:1s? Weekly team meetings? Regular reports upstream? All-hands?
NPS was hammered as the preferred metric for customer satisfaction and engagement. Retention also key/correlated with NPS to indicate a long-term opportunity with great PMF.
You should always prioritize your existing users’ happiness. They are already your customer, so they are significantly easier to keep working with than acquiring new ones.
CAC for new users vs upsells/”expansion” sales is dramatically higher. In the order of 8x more expensive to get new. Lowering churn is crucial here to multiply over time. Once churn is controlled, then look at your upswell and expansion process.
Alignment technique: Sit down with your management team and write down the single most important thing for the company to be successful. Now the next most important, and then the third most important. Now compare and eliminate anomalies, get everyone aligned, then communicate that to your teams.
Levers for SaaS companies to influence their success:
Towards the end of last year, I jumped on the Kickstarter bandwagon for a new backpack. They blew their goal away, and it turned out to be a really professional release that went smoothly, and delivered on time. Major kudos to the folks at Peak Design.
I had previously been using a free backpack that was one of the swag items we gave away to some of our VIP clients, but wanted something a bit bigger, and more comfortable. The 20L version of the Everyday Backpack has thus far proven to be exactly that, and much more.
Peeking in the top opening.
Side view, with side panel unzipped. I stuff a bunch of cables into a divider-section.
Other side view. Note different configuration to create a larger space on this side.
Light fleece attached on the outside using the external load straps.
Represent! WordPress pins attached to the should straps.
Let’s start with the very few things that I can fault this bag on. Here are the only ones I could come up with:
I find that the shoulder straps self-adjust/slide out of position on their own sometimes. So basically I’ll put the backpack on, and find that I need to tighten the shoulder straps (pull down on the ends). Not a big deal at all, but a minor annoyance on an otherwise pretty flawless bag.
Perhaps because of how I’m using the dividers, I find myself opening side pockets constantly to get things out. Again, not a big deal, and to be honest, I could probably reduce this by re-organizing the interior a bit, but the reality is that the side pockets are marginally awkward to get into once you put the bag down (e.g. you probably end up laying it flat on a desk or something to do it).
There is a small reflector strip at the bottom/front of the bag, but it doesn’t seem to reflect all that well, so I don’t know how visible it makes you as a cyclist, for example.
The side pockets are relatively small, so you can’t for example fit a full-sized Nalgene bottle in there, but this one from Miir fits pretty perfectly.
Things I Love
With that out of the way, let’s move on to all the things I really like about it!
I really like the size of the 20L. It’s just right to carry everything I could possibly want in a day, without giving me enough room to tote around a bunch of junk that I don’t need.
The materials all seem really high quality, especially the custom hardware (clips etc). The fabric is a weird, futuristic-feeling stuff, and the waterproofing seems to work pretty well (already got snowed/melted on once).
The zipper locking loops, while not useful all the time, are a pretty nifty addition, and it’s impressive how they serve dual-purpose with the external load-straps. Speaking of which…
The external load straps are a great idea, and surprisingly useful. I’ve already used them a few times for carrying a jacket/sweater after needing it in the morning, and then finding myself too hot in the afternoon.
I really love the shoulder straps, and their pivoting joint to the main bag. I find them perfectly comfortable, no matter how much weight I’ve put in the bag.
All the magnets are such a subtly-stylish way of handling closures, and make this thing feel like it’s from the future. Side pockets, base/front panel, interior pocket. Fwap.
At first I thought the top + side handles were overkill, but I’ve come to really appreciate them. They feel sturdy, and are easy to grab from any angle.
The luggage pass-through has already proven really handy, especially when combined with the side pockets (one of which becomes the “top” pocket, when you have the backpack mounted on the handle of a piece of rolling luggage. I travel a fair bit, so it’s good to be able to keep things organized when on the move.
The interior dividers are awesome! I thought they were kind of ridiculous when I was looking at the specs of the bag, and since I’m not a photographer I had assumed that I’d just pull them out and forget about them. Instead, I figured I’d give them a shot, and absolutely love them. They are the main form of organization for me within the bag, and I’ve tinkered around with flipping panels up/down, re-arranging them to create different sized compartments to suit different needs. Absolutely brilliant.
I kept all the external load straps on there, although I’ve mainly used the bottom 2 so far.
I have the key fob carry still attached (with the little disc on my keychain), but only really use it when I travel (normally my keys live in my pocket).
I have the waist strap tucked into the side pockets, and don’t normally use it. Maybe if I find myself riding a bike a lot with the backpack (it’s winter, so that hasn’t happened yet), then I’ll use it more.
I use the chest strap pretty regularly, since I walk a lot with the pack on, and that helps distribute things, and make it more comfortable.
I’ll often carry a 13″ MacBook Pro, adaptor, 9.7″ iPad Pro in a keyboard case, a bunch of cables, and a few notebooks, plus a bunch of smaller things (plugs, memory cards, spare batteries, etc).
Overall, I think this is my favorite daily-carry/work backpack I’ve had thus far, and I’ve had a bunch. This is a great bag, and I’m looking forward to using it for years. Or at least until some other new fancy bag comes along 😉
I have both of these devices at home, and have had them each for a few months (at least now). I got the Amazon Echo first, so have had it for a lot longer. I grabbed a Google Home because they were on sale and I wanted to compare the 2 systems. Here’s an outline of my experience thus far.
Far superior audio quality. The speaker blows the Google Home away.
Microphones/initial detection seem to be better, so you can yell from another room, from around a corner, etc, and Alexa will respond.
Smart Home integration is much better so far. Includes an “internal” concept of devices, so you can create groups of devices natively within the Alexa app, and use them in commands, even if they’re different device types. For example I can group a LIFX light bulb, and a light that’s controlled through Wink, and have it all controlled as a single group via Alexa.
Wink hub integration is nice, and I centralize as much as possible through there.
Developing for Alexa is kind of cool. I built a few test skills using Lambda hosting, and was able to interact with Car2Go and WordPress.com pretty easily.
Radio integration (via TuneIn) is pretty nice, and being able to just “play triple j radio” (Australian station) is awesome.
I use Spotify for all my music, and it gets a little tedious having to say “on Spotify” for everything (because Alexa will default to Amazon Prime music otherwise).
It feels like total magic to walk into my house with music streaming from Spotify to headphones (via my phone), and then say “Alexa, play from Spotify” and it’ll just take over mid-track and keep playing.
Linking it up with a Chromecast allows for some really nice integrations.
No Wink integration yet leaves me pretty sad. It means that basically none of the home automation stuff that I have is accessible directly through the Home. I have to set things up as a shortcut in Wink, then as an IFTTT trigger against that shortcut. Pretty annoying.
I turned to IFTTT pretty quickly to do any of the interesting home automation stuff I wanted to play with, because of the lack of Wink integration. It works reasonably well, but is a little slower than I’d like since it has to get to Google, IFTTT, then (in my case), Wink, and finally control something in my house.
I like the lights/interaction with the Google Home a bit more. The colored dots/animations feel “friendlier”.
The touch-sensitive top of the Home is a nice addition. I have mine on my desk and find myself just tapping it quickly to pause, and sometimes using the spiral/swipe to adjust volume (although that’s a kind of awkward interaction).
I haven’t built anything on it yet, but Google’s API.ai looks really interesting, and provides a pretty nice interface (and learning system) compared to having to write/generate a ton of utterances with Alexa.
I don’t find the microphones/initial detection particularly good. I prefer to say “Hey Google” than “OK Google”, but either way I often find myself repeating it a few times to “get its attention”, and I also seem to see more “false-triggers” on the Google Home than I do on the Echo.
The app prompts me to download separate apps, which I guess provide some level of integration? I tried downloading the TuneIn one, but couldn’t play JJJ radio because it “could not be found”.
Setting Spotify as my default music source is nice, so now if I just ask for a track/artist, it always uses Spotify. I do find that often the first attempt to play music from Spotify doesn’t work though. Assistant will say “ok, playing from Spotify…” then just go quiet. If I repeat myself, it’ll work the next time. I have a feeling it’s related to the way Spotify handles multiple devices on the same account though, which seems to be a little bit funky with the Google Home in particular.
Google seems generally better at answering “random” questions, and seems to come up with something for a lot more queries than Alexa.
The set up process for the Home + Chromecast was a bit nicer than for the Echo.
h/t to Luca’s post that inspired me to write up my own experiences.
These updates make it so that the Twitter, Foursquare and Instagram importers are now dynamically identifying and indexing People and Places, and marking them with a taxonomy within WordPress. I’ve also added a new system for “reprocessing” old posts which Keyring imported, so that you can go back and perform some function on those posts without having to import them again. You’ll find reprocessing tools under Tools > Import > Reprocess Keyring Data.
Reprocessing works by using the locally-stored copy of import data that is saved during the initial import of everything. The system is fully hookable, so you can add other reprocessing routines in via plugin. The core file comes bundled with one that attempts to address an old JSON-data-escaping issue, and I’ve added extensions to the importers listed above which allow you to go back and reprocess your posts for People/Places.
If you’re going to use them, I suggest you run the first one first, then you can run the others in any order you like. Doing the first one first will just make sure that as much of your data as possible is processable.
It’s worth mentioning that if you use these reprocessors, they can take a while (especially if you have a lot of data already), and that they will likely create a lot of new data (in the form of People and Place terms being created in their respective taxonomies). After running all of them over all of my data, I have almost 1,800 People and just over 3,000 Places in my database.
The other tool added in this upgrade is the ability to merge terms, which becomes important with all of this data.
When the importers are dynamically adding People and Places, they only match based on known identifiers. This means that you’re likely to end up with duplicate entries, especially if you’re processing multiple services (e.g. Foursquare and Instagram). Using the merge tool, you can browse through your entries and select 2 or more, then use the Bulk Actions drop-down to select “Merge” and hit “Apply”. Terms will be merged together as intelligently as possible, which basically means that the shortest slug of the group will be kept, and the longest strings for any conflicting fields will be kept. You can of course edit the resulting composite term afterwards and tweak things as you see fit. If you’re looking for a shortcut to identify duplicate entries, try searching for “-2”, which will give you a list of duplicates, then you’ll need to search for something that will bring up each of the dupes, select, merge, repeat. It’s a little bit tedious, but you’ll only need to do it once for each duplicate, and all future imports should match against the composite entry.
Oh, and one last thing — I threw in a quick map on the details page for Places, which provides a nice quick, visual confirmation that it’s the correct location. For now it’s using a very basic OpenStreetMap example, but I might switch it out to Leaflet at some point, which is pretty nice.