Getting videos offline, automatically, on my phone

There's several video shows that I like to follow: Zero Punctuation and Extra Credits, for example. I like to get the newest episode automatically. Up until a few months ago, I was content to have them pulled into Google Reader, and then to watch them as time permitted. It worked okay, but they would tend to pile up. Sometimes I'd try to watch them on my mobile, but the buffering meant I wouldn't get too many in on a bus ride.

Then I discovered Spool. Spool allows you to record videos and have them downloaded to your phone for later watching. Oh happy day! My pattern then became:

  1. Every day, go to Google Reader.

  2. Click "Add to Spool" for each video entry.

  3. Watch at my leisure.

This past weekend, I realized something. RSS is designed to be automated. (Duh). So I wrote myself a plugin for FlexGet that takes the URL from an RSS feed and sends it off to Spool. Now the videos just show up in My Spool as they are posted!

So yeah, it's available on GitHub: https://github.com/egerlach/flexget-plugins Go ahead and download, fork, and submit Pull Requests. It seems to only work right now if you copy it into the FlexGet main plugins directory... I can't seem to get it to work at ~/.flexget/plugins. That's the next step. (UPDATE: It now works in ~/.flexget/plugins! I just couldn't have it in ~/.flexget/plugins/output is all)

The only problem now is that on Tuesday, YouTube asked Spool to not record their videos and make them available offline. This is annoying, because now the shows I watch from YouTube I can't get offline. I'll just have to write another plugin for that...

Exercising victorious! Next week, sleeping!

Merry Christmas everyone!

I have good news! I have successfully built a habit of exercising over the last 46 days. It was supposed to be 45 days, but I forgot to tweet on day 45, so I didn't notice that I had passed the 45 day mark until after I had exercised on day 46.

The habit is pretty well ingrained at this stage. Starting around day 25, it became more of a compulsion. Now I barely think about it before starting. I call this a huge success. In fact, today Alex and I agreed that we'd sleep in. I got up at 9 to feed the cats, and it was hard for me not to start exercising at that time.

Given how well it went, I'm going to start a new habit on January 2nd, getting to bed on time. Here's how it's going to work:

  • I will have an alarm set on my phone for 10 pm.

  • When the alarm goes off, I will get to bed as quickly as possible. If I'm not at home, that means I start going home immediately.

  • Before 6PM on a given day, I can exempt myself from the alarm by tweeting on @egerlachhabits. If I do that, I must turn the alarm off and set an alarm for 6 pm the next day to remind me to turn it back on.

So, here's the full plan:

  1. Timeline: January 2nd until February 15th.

  2. Trigger: 10 pm alarm on my phone

  3. Habit: Get to bed as quickly as possible.

  4. Obstacles

    • "I just need to finish this"

    • "I'm in the middle of watching this"

    • "Alex won't be going to be for a bit"

    • "Five more minutes won't matter"

    • "I really need to get this done for tomorrow"

    • "I don't need to be up early tomorrow"

  5. Support structure: Primarily, it will be my wife. She's the one whom I'm with every night. I will be tweeting about this on @egerlachhabits, though, so if you want to follow and ask me why I'm not in bed yet, I'd appreciate it.

  6. Feedback: This will be a tough point, because I won't get much. It will be the absence of negative feedback (being tired in the morning) that will be the most beneficial. I will be building on this habit though, and that's where the positive feedback will come in. I think I'll restrict myself to playing Scrabble for when I'm in bed. That will work.

This is going to be a tougher one for me. I'm really good at procrastinating going to bed, and there's no inherent, immediate positive feedback. I'm going to have to build my own positive feedback. But I think I'll be able to manage it. Follow @egerlachhabits on twitter if you want to find out how it's going.

Habits: Exercising starting Monday

So back in June I wanted to start exercising as my first habit development. I was all gung-ho, but there was one obstacle I didn't foresee. I had to undergo two surgeries over the course of July and August, leaving me unable to exercise for three weeks total. That destroyed my drive to exercise.

Now I'm done that, and through my crazy Halloween season, so I'm going to start up exercising again! I've picked Monday as my start date. Those of you who know me well might know why. I just wanted to announce to the world that I'm starting up again, and if you want to keep me to task, follow @egerlachhabits on Twitter and let me have it if I don't tweet saying I've exercised each and every morning!

How to get your NFP unstuck when it's in Limbo

I was recently contacted by a friend in a predicament. One of their friends sits on the board of a not-for-profit corporation which has recently landed itself in limbo. More than half their directors resigned en-mass.

For those who aren't aware, the Board of Directors of an organisation is the highest body of a corporation, and answers only to the general meeting--the collective of the members. The Board of Directors needs to have a certain number present--a quorum--in order to conduct business. This number can be defined by law or by the corporation's by-laws. In this case, the by-laws of the corporation required the Board to have five of eight Directors present in order to have quorum. With five directors resigned, this Board could conduct no business.

In order to elect more directors the corporation must call a general meeting. But in order to call a general meeting, the corporation needs a quorum of directors. Quite the pickle!

What you have to do to fix this depends on the jurisdiction in which you are incorporated.

As a Federal Corporation:

This is easy. Section 132 sub-section (2) of the Canada Not-for-Profit Corporations Act allows the remaining directors to call a special meeting to elect new directors.

As an Ontario Corporation:

The only way out I could find for Ontario corporations is a little more complicated. Section 295 of the Corporations Act of Ontario allows a members petition to call a general meeting. It requires 10% of the members of the corporation to sign it, and then the directors have to call a meeting within 21 days. However, if they don't (or in this case can't) then any one of the members whose signature is on the petition may call the meeting. So it takes a bit longer, but it can be done.

The good news is, the laws of Canada and Ontario both allow a not-for-profit corporation to get unstuck if it gets stuck. It's pretty rare to have that many directors resign at once, but in volunteer organisations (which are almost always not-for-profit corporations), it's more likely. Good to know there's a way out.

Domain-Driven Design, meet Interaction-Driven Design?

I've been reading Domain-Driven Design by Eric Evans as a result of being part of a Lean Book Club (thanks to Darcy for introducing me to the club). I'm only on chapter 6, but it's a good book so far. The main thrust of the book is explaining how a well-developed, well-maintained model of your domain allows you to build better software and how a "ubiquitous language" shared by developers and domain experts is necessary to make sure that model means the same to everyone. The book has already given me some insights into why some of the projects I've been involved with in the past (either as developer or as domain expert) have succeeded or been failures.

As a result a bunch of the book so far deals with talking with domain experts and how to crunch the knowledge you get from them into a useful domain model and ubiquitous language. Much of the rest of what I've read so far deals with how to take that model and build your software around it, continuing to develop the model along the way. Eric says: Use the model at the core of your whole development. I'm really looking forward to the rest of the book and to see how Eric brings all this together.

But then, I was having lunch with someone, and we started talking about user interaction. Specifically how some designers only think in static terms, and don't think about interaction. My mind had been thinking about this Domain-Driven Design stuff, and so I was looking at all software development through a "domain model"-oriented lens. But during this conversation I swung my perspective, and started thinking about how a good designer might interact with good developers.

Interaction-Driven Design?

Is there a similar process in developing a set of interactions and a "ubiquitous language" with designers as there is with domain experts? If a domain model is the result of interactions between developers and domain experts, what's the analogous result of interactions between designers and developers? I'm not sure about exactly what the answers to these questions are, but I'm pretty sure there's a comparison to be drawn.

What's interesting to me is that there might be some consequences that arise if both domain-driven and interaction-driven design need to be used simultaneously. In many cases I can think of, business software is defined by the domain experts, and then used by them. There are cases however where the domain experts have to define the software and then have interaction designers make that domain model accessible to other users. In these cases, you might have to continue the model and ubiquitous language up from the domain experts through the developers to the designers, and then you may have to do more knowledge crunching up there, and then bring it back down to the domain experts. This means you have three parties iterating you model instead of just two.

It may be the case that all three parties can sit down in a room and work it out together, but I worry that you might lose the "implement-ability" of your model if the developers don't sit in the middle. One of the tenets of domain-driven design as Eric Evans sees it is that the model sits at the heart of the software. I imagine that you might lose that without the developers in the middle... but in the middle the developers' jobs get more than twice as hard.

This is a really interesting problem to me, and I don't have any answers right now. Anyone else have thoughts?