Showing posts with label foss. Show all posts
Showing posts with label foss. Show all posts

Wednesday, November 25, 2009

Reflections of a Newbie Youth Soccer Coach

This past weekend, my sons' youth soccer seasons ended. My oldest practiced and played in a division for 5- and 6-year-old kids, and I assisted his head coach. My youngest practiced in a division for 3- and 4-year-old kids, and I was the head coach of his team. I wanted to write up some thoughts about the seasons from a coach's point of view. As you read these, if they sound more like parenting advice, there's a reason for that: many times over the course of the season, I noticed (and noted to others) parallels between coaching to parenting. I found that many of the basic principles commonly applied in one role remain valid and useful in the other. Mind you, I'm certainly no expert coach. Not by a long shot. (For that matter, I'm no expert parent, either.) But these are some of my observations, and I'm hoping that perhaps something here resonates with other folks who — like me at when this year began — have never coached at all.

Teams are best built atop friendship

An observation I made at during the Spring soccer season was that by the middle of the season, the players on the team I was helping to coach (which, as in the Fall season, consisted of 5- and 6-year-old boys and girls) still didn't know each others' names. This bothered me deeply, because at a minimum it meant that the players couldn't communicate effective to or about each other. But it also meant that somewhere between showing how to dribble a soccer ball and how to perform a proper throw-in, we as coaches had overlooked the simple fact that children are social beings. My son has a distinct “cautious observer" personality type. Until he's comfortable around his peers, he'd rather just watch to see if it's safe to engage. Not even knowing your peers' names does not encourage comfortability.

This season, we as coaches worked to remedy this problem up front. A helpful parent took a team photo, and we labeled it with each child's name, had Wal-mart print up enough copies for everyone, and distributed them. During practices we often encouraged the players to cheer for each other by name. The result was noticeable (to me, at least). There was much more of a team spirit on the field and off, and sometimes it was actually difficult to get my son away from the fields because he was having so much fun playing stuff other than soccer with his friends after practices and games.

What's my point? People matter — more so than winning, more so than ball control skills, more so than anything else at all. (Unfortunately, I fail to remember this critical truth myself sometimes — both on and off the field of play — much to my own embarrassment and the detriment of valued relationships.)

"Fundamentals" begins with "fun"

The assistant coaches on my youngest boy's team were amazing. One of them was introduced to me as a guy with a ton of soccer-related creds. Quite honestly, I was a bit intimated by this fact. But if there's one thing that he and the other coach taught me this year, it was that if the kids aren't having fun, it doesn't matter how well they can kick and throw a ball. What good is teaching good dribbling if at season's end the kids say, "Soccer's a drag — count me out"? For kids at this age, fun is closely tied to many things:

  • avoiding repetition — no child can tolerate doing the same thing for long periods of time. Mix it up a bit, Coach.
  • avoiding down-time — It only takes a few moments of waiting in line before a young child times out. You can almost watch as their attention span threshold is reached, and then away their little minds go, off to La-la Land. If you can, avoid line waits and repetition by splitting the team into smaller groups at various stations of differing activities.
  • simple rewards, oft-given — I was introduced last season to these little 1" iron-on motivational patches with pictures of soccer balls in various colors, stars, etc. We gave each kid that showed up at practice and stayed for the duration one of these patches. Kids respond positively to the promise of even simple rewards like that, or the promise of playing a favorite game at the end of practice. As it turns out, they don't mind trying harder when trying harder is fun.
  • team spirit — This season the teams were allowed to choose their own team names. My oldest boy's team chose the "Soccer Monsters". I wasn't so thrilled by the name, but nonetheless spent a few evenings designing a team logo just for kicks. The other coaches and parents loved it, and by the end of the season that logo showed up on 3" iron-on embroidered patches, stickers, a vinyl signboard for the parental cheering section, and even a sheet cake! Everyone loved the "brand" we built around the Soccer Monster name. And repeatedly the coaches and parents reinforced not just the value of individual contributors, but also the value of the team as a whole. The stereotype of the coach's kid who gets all the attention was completely absent — every child took his or her turn on the bench in every game; every child got a chance to play every position on the field over the course of the season; and every child gracefully dealt (most of the time) with being asked to do something that wasn't their favorite thing because it would benefit the team.

I owe a deep debt of gratitude to the other coaches and parents who routinely helped to make soccer fun for my kids and their peers.

Never underestimate a child's potential

If you had told me what I would be seeing some of my 5- and 6-year-old players doing at game time at the beginning of the season, I would have laughed in disbelief. While many other teams were playing "bunch ball" (all the kids swarming around the ball like so many angry bees), ours entered even their first games with an understanding of the various positions, their roles in those positions, and the importance of performing in their roles instead of just roaming around the field without a purpose. By season's end, I was finding that the kids could handle some game play maneuvers that I thought were pretty complex, such as one defender falling back to help the goalie when the other needed to head off an approaching attacker. I found myself often saying in disbelief things like "But these kids are only six years old!" and "But this is his/her first season of soccer!"

One of the other teams had a kid who, despite being one of the smallest players in the division, had amazing ball control and the sweetest little slide tackle you ever saw. And you didn't see many, because I think he's the only kid who attempted them in this age group. Every time he did (our team played against his team twice) I smiled a huge smile and thought (or said aloud) "That's awesome!" His dad was his coach, too, but when asked him about his kid's skill, he indicated that it was self-developed. Call me naïve, but that's amazing to me.

Now maybe these are just exceptionally talented children. But I have to believe that the key to this phenomenon is to never stop asking more of the players. At any given moment, a particular player is going to have a great grasp of some concepts and skills, a pretty good approach to others, be relatively weak at still more, and have never been introduced to the rest. Keep a sliding window of instruction with those kids so that they are always trying stuff they are likely to fail at along with the stuff that they do with grace and ease. What other self-developed skills are hiding inside our children just waiting for us to affirm them into the mainstream? What other skills are they ready to learn but can't because we underestimate their chances of success? This leads me to my next point.

Failure can be the best instruction

Instruction is extremely important. There is always something else to learn, develop, or improve, so ideally instruction never stops. The Harrisburg Youth Soccer program is a decidedly instructional league, favoring instruction to competition in an attempt to develop well-rounded players who love the game enough to play competitively at older ages (when they can emotionally handle serious competition). But instruction without the freedom to try and fail is stifling.

If every time one of my sons reaches for a glass of water on the table I criticize how fast he's reaching, whether he's planning to use one or both hands, whether he looks to be picking up the glass or sliding it between all the other obstructions on the table surface, and so on — if I micromanage his every move, he learns exactly one thing: the way Dad wants stuff done. Not taught in those moments is the most valuable lesson of all: why Dad prefers that approach. My son doesn't understand that it's Dad's experience with the physics of our Universe that leads him to prefer a particular approach to drinking from a glass. And he never will until he experiences some of that physics himself.

Now, I'm not saying that there's no value in that type of instruction. Certainly the opposite extreme of never sharing your own experiences with kids and leaving them to learn solely from their own experiences is just an abdication of parental responsibility — inefficient, unloving, and sometimes downright dangerous. But an absolutely critical aspect to any learning situation is experience, and specifically experience failing. Kids don't need protection from everyday failures because everyday failures teach some of the strongest lessons more quickly and more thoroughly than constant hand-holding ever can. Kids need a safe place to experience those failures, reassurance that in failing at a task they haven't failed as people, and encouragement to get up and try again.

By the end of our soccer season, the majority of our kids knew how to perform nearly any action that would likely be asked of them during a game. Early in the season, we hand-held. We did our jobs as coaches and taught them the finely detailed mechanics of these actions. But as the season progressed, we gradually shifted to a model of letting the kids make their own decisions and deal with the consequences. And if one of them messed up and did something incorrectly, both the player and the attempt were affirmed as valuable.

In the free software world, this is similar to way that new project members are often brought on board. First, a would-be project member submit patches for the software — technical descriptions of how the software should be changed to add a feature or fix a bug. The patches are reviewed by existing project members for accuracy and efficient, for attention to the rules of the project, and so on. If the patch meets the standards, it is committed (by an existing member) as a change to the software itself. If it doesn't, the patch is sent back with recommendations on doing it better. Over time, a talented developer will submit better and better patches the first time around, earning the trust of his or her mentors. And at some magical point, the mentors realize that it's no longer worthwhile for them to pay both the cost of reviewing the work and of then actually committing it on behalf of the patch submitter when instead they could let the submitter commit his or her changes first and then receive review afterwards. As coaches, our goal should be to progressively transition each child from a model of pre-emptive review (at significant cost in valuable time) and into one of post-facto review (which is far more efficient and allows the kids to celebrate victories they've earned for themselves).

Wednesday, November 4, 2009

ApacheCon: Where Subversion, Apache, and 100% Cotton intersect

Today during the opening ceremonies of the U.S. ApacheCon 2009 conference, Hyrum Wright (President of the Subversion Corporation) and Brian Behlendorf (a representative of both Apache and CollabNet's Board of Directors) made a joint announcement that the Subversion project was immediately seeking acceptance in the incubation process at the Apache Software Foundation.

Thanks to CollabNet's generosity (and my wife Amy's general coolness about my occasional business-related travel), I was able to be present for this historical event. Also, I was fortunate to have been given the opportunity to design the official commemorative T-shirt of the event:

It's not the cleanest thing I've ever done graphically. I really, really like the striped front. But I was tasked with conveying an awful lot of information (the 10-year anniversary of the ASF, Subversion's fit into the mix of other Apache projects, CollabNet's history as founder and primary corporate sponsor of the project, and so on), and the resulting busy-ness of the back's design unfortunately conveys that fact. Still, not too shabby for short-deadline (like, three days) work.

Tuesday, November 3, 2009

SubConf/Munich 2009

As I compose this, I'm 38,000 feet above sea level and somewhere between Charlotte and Denver, en route (ultimately) to this year's U.S. Apachecon event. Seems it was just yesterday that I was flying home from my last conference event. Perhaps that's because it was just a few days ago that I passed through Customs in Charlotte after the lengthy flight home from Munich, Germany. I'd been in Munich for the third SubConf Subversion user conference. I've had the pleasure of attending the prior two years as well, and this year's event was again a enjoyable one.

After helping to coach Gavin's soccer team to an 8-1 victory last Saturday, I hurried home, grabbed my bags, and was off to the airport. My direct flight from Charlotte to Munich landed Sunday morning around 8:30am local time. A couple of train rides and a short walk later, I was checking into the B & B Hotel, where (I was told) "all the cool kids" — that is, some fellow Subversion developers — were staying. I spent Sunday afternoon getting settled into the hotel and resting, then met up with Hyrum Wright for the express purposes of reprising last year's trip to Berni's Nudelbrett and to plan how we'd invest our time on Monday.

Hyrum and I decided on a trip to Salzburg, Austria for our Monday outing. It was two hours away by train, so we caught the earliest one we could manage. While in Salzburg, we visited the Hohensalzburg Fortress (an 11th-century fortress that overlooks the city), the Residenz State Rooms, Mozart's birthplace, and some other spots in the city. Afterwards, we took a bus out to the town of Grönig, where we rode the Untersberg Cable Car up into the mountains. Wow! Suspended above the earth by a wire the thickness of my forearm, watching as rocky crags passed underneath, I was overwhelmed by the novelty of it all. This was not a normal day in the life of Mike Pilato, to say the least. Our train back to Munich got us in town in time for dinner, which we took at one of the city's many beerhouses. (Thankfully, the locals don't take it too personally when we tourists opts for Coke and Fanta.)

I returned to the hotel around 10:00pm, where two things were waiting for me: a group of Subversion developer colleagues, and a nasty surprise from the SubConf event organizers. It seems that an employee of Polarion who was slated to present an all-day Subversion workshop the following day (Tuesday) fell ill, and then made the poor decision to use email — nice, asynchronous, non-interrupting, unacknowledged email — as his medium for telling the event organizers that he had to bail on the workshop. By the time they realized that they had no one to present the workshop, the organizers had to scramble for assistance. They found me online and asked if I could present the workshop instead. I was completely unprepared to do so, but offered to help as best as I could.

Fortunately, things took a turn for the better when I then went down to the lobby to meet up with my colleagues. While I was bemoaning this situation and my lack of preparedness, the angel Michael — no, not that one; Michael Diers (from Elego) — offered to assist me for the first half of the day-long workshop and to take over entirely in the latter half. And as if that wasn't great enough, I was then presented with the finished results of the T-shirt I designed for the conference:

Tuesday's workshop went pretty well, actually, thanks largely to Michael's familiarity with the topic and ready-on-hand materials. After lunch I was finally able to meet up with several other Subversion developers in a room the conference organizers had arranged for us to occupy for hackathon purposes. We worked for a few hours before heading over to participate as a panel in a Developer Roundtable event — an hour and a half of face-to-face interaction with Subversion users and administrators interested in learning more about Subversion's upcoming features or in solving particular Subversion problems they were having. I love these events for the fact that they serve to remind me that at the other side of every bug report or feature request is another human being who isn't just trying to make work for us as developers but is merely trying to get stuff done.

Wednesday morning, I delivered my keynote presentation, The Subversion Legacy (So Far...). I took the attendees on a brief walk through Subversion's history, beginning with its instantiation as an open-source project by CollabNet and continuing through to the current day, and focusing on aspects of the community and of key events and decisions which have contributed to Subversion's success. Despite the language challenge (most of the attendees were more comfortable communicating in German), I got positive feedback. And with that completed, I was in the clear in terms of obligations to the conference, and joked that I was now able to return to my typical 40% stress level.

I spent the rest of Wednesday and most of Thursday working on Subversion itself in the hackathon room with the other developers. We had occasional breaks to take in presentations by our peers, but mostly spent the time trying to improve the very software that the conference existed to celebrate. Thursday night those of us that remained went to dinner in Munich, sharing a final last few minutes together. A casual onlooker would never guess that we live scattered across the globe, only occasionally seeing each other in person. (In fact, I met one of my CollabNet colleagues for the first time on this trip!)

I traveled to the airport Friday morning with Greg Stein, hopped onto my plane bound for Charlotte, and was fortunate to sleep two-thirds of the flight away. I was greeted in Charlotte on Friday afternoon by my incredible, amazing wife and children. The opening theme of my keynote was about gratitude, and gratitude for good friends and a loving family served as the bookend to that week-long trip to Germany.

Monday, August 3, 2009

SubConf 2009 is in my future

I'm in the process of booking travel and lodging for my October trip to Munich. Yep, it's almost time for the annual SubConf Subversion conference, again. This year, I get to do something new: the keynote! In addition to that, I and some other Subversion developers will be hosting another Subversion roundtable discussion. We did this at last year's conference, and — at least according to the conference organizers — it was a wildly successful opportunity for Subversion's users to talk directly with the folks that write the software they use. If you are a Subversion user or developer who'll be in or around Munich on October 26th, I hope you'll consider joining us for this roundtable discussion. And of course, if you can attend the full conference (October 27-29), I'm sure you'll find it immensely beneficial to you and your organization's understanding, appreciation, and use of Subversion.

Speaking of that keynote presentation, I'd like to offer you the opportunity to help me out with it. (Did you like how I made that sound like it was actually you that would benefit from this?) Check out my post on the Submerged blog about this topic: http://blogs.open.collab.net/svn/2009/08/how-has-subversion-changed-your-world.html

Wednesday, July 29, 2009

Encouraging openness at Intuit

Yesterday, Intuit (the company that brings you such well-known software products as Quicken, TurboTax, and QuickBooks) announced the launch of code.intuit.com, their new open source community for "developers interested in creating connected online applications for small businesses". While the company isn't opening up any of its own software right now, the goal of the new community is to rally folks around its Intuit Partner Platform. I can't boast any experience with this platform, but from what I've read and seen about its various key components, it looks pretty slick!

You might be wondering why — given my lack of personal experience with these products and platforms — I'm writing about this at all. What's the connection between code.intuit.com and me? Two words: "open source". The Intuit folks were discerning enough to recognize that while they wanted to create and nurture a true, viable open source community, this was a new venture for them. So they've assembled an advisory board consisting of open source veterans to help guide them as they develop their new community. I am a grateful recipient of the invitation to participate (along with Jay Sullivan of Mozilla, Michael Coté of Redmonk, and Jason van Zyl of Apache Maven) on that initial advisory board.

I'm really looking forward to being a part of this, not so much for what I can bring to the table but for what I can learn from the others in the process. It will be interesting for me to see how the experiences I've had with the Subversion and other open source software projects — and even with my employer's own community site — will apply here. One thing's for sure: I definitely need to re-read Karl Fogel's Producing Open Source Software book!

For more information, read the full Intuit public announcement at http://ippblog.intuit.com/blog/2009/07/announcing-codeintuitcom-ipp-open-source-community.html.

Wednesday, May 13, 2009

ViewVC 1.1.0 (finally) released.

Today, I finally got around to releasing ViewVC 1.1.0.

I know. And you're right — that's not the most uplifting lead-off line ever written for a technical blog. Sounds mostly positive (new release?!), with a hint of exasperation, and all shrouded in a mysterious cloud of why-should-i-care. Sorry about that. But allow me to explain.

ViewVC 1.1.0 represents — maybe misrepresents — three years of development on features introduced since 1.0.0 came out. I'm pretty pleased with the features, many of which were contributed by and/or willingly tested by volunteers. Here's an overview, taken from the official release announcement:

  • Extensible path-based authorization w/ Subversion authz support
  • Subversion versioned properties display
  • Unified markup and annotation views
  • Unified, hassle-free Pygments-based syntax highlighting
  • Subversion svn:mime-type property value honoring
  • Support for full content diffs
  • Standalone server improvements
  • Commits database management and query enhancements
  • Support for per-root configuration overrides
  • Optional email address obfuscation/mangling
  • Pagination improvements
  • ... plus many bug fixes and additional enhancements!

"That's it? After three years' time, that's all we get?!"

It's okay. I've asked myself that a hundred times, too. It's a bummer, but I think I'm learning another hard lesson about open source projects: when a piece of software reaches a certain level of maturity, the developers-to-users ratio tends toward nil.

Before I ever started working on ViewCVS (which was what ViewVC was called at the time), it was already a well-established, widely used piece of software. CollabNet used it to display version control repositories in its CollabNet Enterprise Edition software suite. SourceForge.net was doing the same. It seemed that everybody had a copy of ViewCVS. The software was ubiquitous, worked well, and CVS wasn't changing significantly. And ViewCVS's developer participation reflected this plateau of innovation, too — I think there might have been two or three folks active at the time, mostly just fixing the occasional bug.

Seven years ago, I was tasked by CollabNet to add support for Subversion to ViewCVS. Subversion hadn't even released its 1.0 version at the time. Subversion was still this young, exciting, rapidly developing new entry into the version control world. I (with the help of others) did get Subversion support added to ViewCVS, and along the way I inherited primary maintainer-ship of the project. The project was renamed to ViewVC later to reflect the fact that it was no longer CVS-only, and I began focusing on fixing outstanding bugs and tracking changes in Subversion's new releases.

Fast-forward a few years. Now Subversion's rate of change — at least, in terms of what's of interest to a repository browser tool — is starting to plateau, too. And ViewVC's contribution rate is again reflecting that. Fewer active committers (< 2), investing less time (< 1 day/month), and with fewer volunteer contributions.

It's lonely here.

But it doesn't have to be. There still remain opportunities for improvement in ViewVC. Off the top of my head, I'd say adding support for other version control systems — Mercurial, Git, etc. — is a place where your expertise and effort would be not only appreciated, but required, if only because I don't use those systems myself. Scalability and performance improvements are always welcome. And I'd love to see ViewVC's MySQL integration expanded — why not use the database as a glorious cache of information that takes too long to harvest at runtime from the VC system?

So, while I might casually kick myself in the backside for finally and barely eeking out a new release of ViewVC, I do so understanding now that this may just be the way things go for mature software, thankful for ViewVC's many users, and happy to be working on free code.

Take ViewVC 1.1.0 for a spin. Kick the tires. Send feedback — positive and negative — to the mailing lists. I might be slow to respond, but "I'm not dead!", and neither is ViewVC.

.o O ( "I think I'll go for a walk … I feel happy." )

Saturday, September 13, 2008

Mission accomplished. Well, mostly.

My wife's computer is now running Ubuntu Linux 8.04 (hardy heron). She no longer has any dependency on Microsoft software. I didn't think it was possible, but I might have fallen just a little bit more in love with her.

Actually, the sad truth is that for now I'm the one that still has a couple of Windows dependencies. (Those would be easily remedied by a conversion to Apple products, but that's never struck me as worthwhile maneuver.) I maintain a personal wiki page that tracks the pieces of software I need to be available (and not awful) on Linux before my dependency is broken, and over the years progress has been steadily made in that space. So, if you're a FOSS junky and you work on multi-track audio software, multi-track video editing software, DVD authoring software, or a good Microsoft Money/Quicken clone, you have my undivided attention!