A Lean Approach to Ordering Office Supplies

I often feel like an arrogant jerk when I walk into nearly any business and my brain starts figuring out ways that things could be improved by applying basic agile/lean principles to some process or another. I think I feel this way, because I’m obviously not the only person thinking here, so there often could be a very good reason for things being the way they are. That doesn’t mean that I’m not going to implement these types of changes within an organization where I work though. Here at Clear Measure’s Ohio office, I did one such thing.

In previous organizations and other companies I know of, there is often a list somewhere of items that need to be purchased. It often looks something like this:

Spiral Shopping List

We often had questions about items that had never been purchased before. We often didn’t know who wrote the request, so there’s no easy way to ask for more input on the item. Additionally, if someone is running to the store, it’s easy to forget the items that are low, but aren’t on the list.

These issues and more are why I’ve moved this whole system into Trello.

Clear Measure Ohio Office Supplies List

What we love about this list is that we have a list of things we’ve ordered before, so that we can check that list for things we’re low on. It’s easy to make the request, and we can update this from our phones, computers, tablets, etc. It also lets you see who created a new card, so you can ask if there’s not enough detail to know what to order. It’s great for another reason for us as well. Many of our items are ordered online from the Austin office, so a physical piece of paper would be a challenge.

For you state or flag enthusiasts out there, that’s the Ohio flag in the background, so it’s really easy to tell that this is the list for the Hudson, Ohio office. Or as I imagine it’s commonly known by our Austin friends, Icicle Central.

Software Craftsmanship at CodeMash Wednesday

If you’re attending CodeMash 2015, you should join me on Wednesday for my precompiler workshop (even if you attended my workshop last year). We’ll be spending the whole day improving our skills, learning about software craftsmanship, and pairing up on programming exercises designed to help you improve the way you learn and practice your coding skills.

If you’ve never attended a software craftsmanship event before, you really should. The entire goal is making sure that you have fun and are able to continue learning more after you leave the event.

For those lucky few of you staying in the Kalahari (still unlikely, since you would have to bribe someone to have even gotten one), I’ve included a set of directions for how to get straight to the Software Craftsmanship Precompiler.


If you eat breakfast in the dining hall before the workshop, we’re just outside of there.

What to Bring

Bring a laptop if you have one.

Try to have an IDE to write some code in. Choose a language you’re familiar with or want to become more familiar with. It doesn’t matter!

Make sure that you have a testing framework and test runner of some kind. As long as you can write unit tests with it, you’re good.

If you’re not sure how to get these things set up, show up early and talk with us. We’ll help if we have the time and correct expertise or we’ll find someone who does!

2015 Software Craftsmanship Calendar

People have been asking about the 2015 Software Craftsmanship Calendars. I’ve got good news and bad news for those of you who are looking forward to another software craftsmanship calendar to hang on your walls at work, home, or someone else’s wall.

The Good News

I’ve made significant progress on a calendar, and I’ve got enough concepts, jokes, one-liners written, and sketches for the next two calendars! These next couple of calendars are going to be full of awesome content that you’re all going to love.

The Bad News

Due to circumstances outside of my control, there will not be a 2015 Software Craftsmanship Calendar, so you will all have to wait one year before your replacement calendar is available.

The Future

Please keep the space open on your wall. Steve Smith and I are dedicated to making sure that the next Software Craftsmanship Calendar is better than the previous ones. Follow me and Steve on twitter and pay attention next year for updates about the calendar.

Schedule Standups in the Morning

It may not seem like it’s that big of a deal. I know a lot of people make sure to have a daily standup meeting either with just the team or involving the client. Either way, it’s very important to schedule these meetings in the morning. The reason for the level of importance I place on this is the tone of the meeting.

The most important thing to get out of a standup meeting is having everyone on the same page for what’s going to be done that day. You need to know who’s there, who’s working on what, if priorities are changing. It’s your opportunity to know what is going to happen that day (most likely happen).

If you conduct this meeting in the afternoon or near the end of the day, the tone can shift to discussing what did or didn’t get done. That’s all well and good to know, but it detracts from the discussion of the future. Remember, you only get so much time; use that time to make the next step a better one. Focus on where you’re going, not where you’ve been.

Deleting a Remote Git Branch

Another bit of git command line that a lot of people struggle to remember is the syntax to delete a remote branch. If you read my post from a couple of days ago, I mentioned a couple of things about deleting git branches. That’s how you delete them locally. If you want to push that deletion up to the remote repository as well, you need to take one additional step.

The command I use to delete remote branches is this:

git push origin :my-branch-name

It’s that “:” that tells it to delete the branch. Yes, it may seem confusing, but there is a reason for it. I’ll explain below for those who are interested in learning more.

Here is a slightly easier syntax, but I don’t like typing the additional characters.

git push origin --delete my-branch-name

Feel free to use this syntax, it’s newer, but you most likely have support for it. It’s been out for years now.

Here is the reason (other than its being shorter) that I like the first syntax better.

If you want to push our a git branch, you use this command:

git push origin my-branch-name

If you wanted it to have a different name remotely than it has locally, you would do this:

git push origin my-local-name:my-remote-name

Which means that if you wanted to push “nothing” over the remote branch with that name you would do this:

git push origin :my-remote-name

Notice how the command is pushing empty over that branch, which is then interpreted as a “delete” by git. That’s how I make sense of it, plus this is a neat little bit of info about the command.

I hope this helps people adopt and use git more easily. If you’re new to git or GitHub, I recommend that you check out my Pluralsight course, GitHub for Windows Developers. The course takes an easy-to-follow approach to getting you set up using Git, GitHub, and GitHub for Windows.