Monday, October 26, 2015

The Awesomeness of Owncloud

As I mentioned in my previous post, I've been using Owncloud for several years now. It's been a phenomenal way to control my own data and decouple myself from 3rd party services that change over time. Here's four reasons I use and love Owncloud.

It supports CardDav


This in and of itself would be reason enough to run Owncloud. There are CardDav clients that run on Android, iOS, OS X, Linux, and Windows. Which means you can access your contacts from anywhere, without having to export/import them every time you change your email client or cell phone carrier.

It supports CalDav


Like CardDav, support for CalDav allows you to access your calendar from almost any device. Owncloud also supports shared calendars, which is really useful for families as you can add shared events for everyone to access.

It supports WebDav


I'm going to sound like a broken record, but WebDav support allows you to access your files from almost any device. The web interface allows you to upload and download files even on a shared computer. My wife and I use this all the time to share our photos with each other, family, and friends. We also put all of our music and movies on our server so that we can access it from anywhere. 

It has native sync clients


You can install a native app on your mobile devices or desktop and have owncloud sync your files for you automatically. This allows you to not only share your files across all your devices but you now also have an automatic backup of your data. I've benefited from this several times as I've switched phones over the years as well as when I've switched laptops.

Monday, October 19, 2015

A decade and a half with open source

Over the last 15 years I've been trying to move away from relying on 3rd parties for critical services I use. It started out as a way to learn what standards existed and how they worked in practice. It's one thing to intellectually know what's there, but a whole other thing to use what's there in your everyday life.

In 1999 I started with my own web server, rather than relying on a 3rd party host (like Geocities). I bought a decent desktop computer and installed Slackware and Apache httpd. This has been crucial in my career growth as it allowed me to learn new web technologies as they've come out.

In the early 2000's I decided to run my own mail server. I tried out several and finally landed on qmail. It worked well on Slackware and it supports SMTP Auth. I added IMAP support using Courier IMAP. But I've since switched to Dovecot. qmail also supports integration with SpamAssassin for SPAM detection and filtering. 

In the mid/late 2000's I heard about a new web based mail client called RoundCube. It supported drag and drop like a native email client and I was hooked because it allowed me to remotely access my email with a feature rich client similar to what I had been using via native clients. In the last several years it's added support for plugins which have brought CardDav and CalDav integration.

In 2007 I built my own RSS aggregator (which I have since open sourced) as a way to learn Ruby on Rails. This has been the single greatest learning tool for me. Every time I want to learn a new language or platform I write a client for my aggregator. Google's decommissioning of it's rss client had zero affect on me :)

About four years ago I decided to move from running my services on a standalone desktop box to running them on a server in my own cloud. The big reason is that I needed a server that I could tinker on that won't affect my email, calendar, contact, and file access. So I built my own server and installed XenServer. This has allowed me spin-up and play while also keeping my critical services running rock solid.

About 3 or 4 years ago I ran across Owncloud. I was looking for an alternative to Dropbox because I wasn't happy with Dropbox's model of having to use their software to access my files. Owncloud was revolutionary in allowing me to stop relying on 3rd party services for access to my critical data. After installing Owncloud I controlled my calendar, contacts, and files.

Sometime in the last 3 years I stumbled across GitLab, an open source alternative to Github.  I write a lot of software at home but much of it is very specific to things I want to do and aren't really interesting from an open-source perspective. GitLab allows me to work on private projects and access my source code using a remote git server. When something becomes useful to more than just myself I open source it

Monday, October 12, 2015

Do network stations not care about being relevant

I'm a cable cutter. Not literally. I mean I don't go around the house looking for cables to cut, but I did drop cable T.V. a little more than 6.5 years ago. Not because I think TV is evil, and not because I wanted to be able to say I don't have cable (some people seem to be proud of that). But simply because I was bored of programmed television.

I found myself flipping through channels searching for something interesting to watch and never finding anything I was in the mood for. Or, even worse, finding something in the guide but having to sit through 15 minutes or 30 minutes of another show waiting for the show I wanted to come on.

At the time I was working on the video team at MSNBC working on streaming MSNBC content on the web and mobile devices. My wife and I were also starting to become more and more invested in the convenience of Netflix. Who wants to wait a day for a DVD when you can stream something immediately.

Netflix changed our viewing habits. For the first year or so Netflix streaming for us was about streaming full length movies. Basically an alternative to going out to the movies or to renting a DVD. But eventually we started using Netflix to primarily watching TV shows. I don't think I realized at the time but what I love about Netflix and other video streaming services like Amazon Instant Video is that I'm in control. I decide when and how much I want to watch.

Streaming video on-demand is about being in control of the content. Some days I may not have any time to watch anything, other days I may have enough time to watch a show or two, and sometimes (pre-kid) we'd spend an entire Saturday just relaxing and marathon watching a series.

On-demand video also makes me feel like I have more context between episodes. I'm actually more invested in the characters because I'm choosing to spend more time with them rather then being told when to spend that time (with a scheduled show that may or may not be convenient to my schedule).

All of this is to say that I think current TV programming is only good for live events. Programmed television was made for watching late night TV, Sports, the State of the Union, the debates, or even news. But the days of programmed television for a drame, sitcom, or any other series are over.

So why are the networks only streaming to current cable/satellite customers? It would seem to me that there'd be a whole market of folks just like me who'd be willing to pay $15 a month for on-demand access to network television shows (Hulu anyone?). It seems like the only way for places like NBC, CBS, and etc to complete in the new world order is for them to own their streams and to make them available à la carte.

Do network stations not care about being relevant? 

Monday, October 5, 2015

Learning to Lead: Accountability

In my previous post in the Learning to Lead series I talked about leaders needing to be motivators. In this post I'd like to talk about accountability.

Responsibility vs Accountability


As a leader you're often going to be the situation of being accountable while ultimately not responsible for a creating the solution. This is particularly true for managers where they're accountable for the delivery of a project or feature but not responsible for the implementation.

The danger of being accountable for something but not responsible is that you'll either end up micro-managing or under-managing those responsible for solving the problem. There's a really fine line between micro-management and under-management. One helpful phrase I've heard and used in my career is trust but verify. This means that you'll have to delegate to others and trust them relative to their experience and skill-set but verify that they're on the right track.

There are several helpful tools that can be used to practice trust but verify.

  • Project burn-down reports
  • Agile stories and tasks
  • Architectural design documentation
  • Daily scrum
  • Demo day

Solving the correct problem


Being accountable means ensuring the team is solving the correct problem. This is easier in an agile environment as it's the product managers role in sprint planning to be the voice of the customer. But that doesn't ensure that during a sprint the team isn't randomized by outside work or out of band requests.

Accountability means being able to prioritize and make hard decisions on what the right thing to work on is. Often this means coordinating with both product, management, and other senior leadership to weigh the pro's and con's of new work that comes in.

One easy way to make accountability part of your teams culture is to practice it during your daily scrum. It's up to the engineering lead and other leaders to make sure that as people go through what they're working on today at stand-up that it's the most important work that needs to be completed. If someone says they're about to start something that's lower priority than some other work the team should be calling out the discrepancy and holding each other accountable to working on the correct stories/bugs.

Raising the red flag early


Another area of accountability that I'd like to call out is being willing to raise red flags early enough for them to be acted upon. In the technology industry we make a lot of decisions and set schedules based off of estimates. Once a project is set in motion it's often uncomfortable or unpopular to raise a red flag. As a leader though, you're accountable for the overall health of the project. If your estimates are incorrect or based on incomplete data it's important to raise the red flag as the project is ultimately unhealthy.

When raising this flag the accountable party should be able to explain why the flag is being raised, as well as what it would take to remove the red flag.