A Day in the Life

A day in my life. Thoughts on leadership, management, startups, technology, software, concurrent development, etc... Basically the stuff I think about from 10am to 6pm.


In Response to Seth's Questions

Seth Godin asks two simple questions:

“Is marketing the art of tricking people into buying stuff they don’t need?
Or is it about spreading ideas that people fall in love with?”

I think it should be about spreading ideas that people fall in love with. However, there are many, many marketing devices geared toward convincing me to purchase something I neither want or need. If a marketing device convinces me to buy something that I don’t really need, by tricking or misleading me, then I never trust any products or services created by that company again. “Fool me once...” I tune them out, boycott them, and let my friends know how I feel about them. If a marketing device convinces me to buy something because I misled myself...then I have only myself to blame. Examples of that would be marketing devices that are really selling sex, youth, intelligence, wealth, style, etc... instead of the product or service. Those companies that use honest marketing devices with products/services that deliver, win an advocate and I promote those products to my friends. I am more than willing to become an unpaid, unrecognized evangelist for something I love.

I remember walking around Atlanta during the 1996 Olympics. There was a huge amount of advertising which was great for the spectators because it made the event tickets affordable. (The advertising money was used to reduce the cost of tickets.) But it was very hard on those spectators who were not American. I talked to a few folks who found the amount and type of advertising overwhelming. They had sensory overload. And that is the crux of the problem. Americans are bombarded with marketing devices from commercials, magazine ads, product labels, and even movie props. We’ve learned to filter it down and tune it out. This means we are harder to reach than ever before. Marketers are trying new techniques to break through our blocks. And it’s getting pretty annoying.

I would like to see a change in how products and services are marketed. I would like to see more marketing devices that help me fall in love. Show me how your product or service is going to benefit me. Why do I need it and why do I care? One of the things I love about Amazon is the review section. (I also love One Click far more than my checkbook does.) I will often make a purchasing decision based on the reviewers. This was a great marketing device and since I have read several of Seth’s books, I would say the reviews are a “free prize”. Companies would better serve their customers and their prospects by offering more free prizes and fewer distractions.


It’s a Big World - Outsourcing Video

I just finished watching a Discovery Channel video recommended by Robert Scoble in his blog post ”Video on the other side of outsourcing” called “The Other Side of Outsourcing” by Thomas Friedman.

I really enjoyed it. I’ve worked with so many Indians over the years and it was interesting to get a glimpse into their country of origin. It was also interesting to hear about the cultural struggles they are having, a little about the hiring processes, to see the folks working in the call centers, to see their homes, and to learn a little about their culture. I was really struck by the statistic that 54% of the Indian population is under 25 years old. It’s easy to imagine India becoming an economic powerhouse. And to visualize the cultural upheaval that they will soon be living with. It reminds me of the 60’s and our baby-boomers. They totally changed the direction that America was heading in and as a result – changed the world.

A few days ago I blogged about the rejection of the Visa increase. The video really drives home the complexity of the issues involving the globalization of the high-tech industry. When I’ve dealt with the frustration of outsourcing I had only thought about the American jobs that were lost, I hadn’t realized that American companies are supplying a lot of the equipment and software that the Indian workers are using.

I had come to the conclusion that the only way, as an American, to win in the new economy is to become a country of innovators; we need to create new ideas, technologies, processes, and companies. This video reaffirmed that conclusion. India is a hungry country full of bright young people. Bright young people have minds like sponges. With the amount of money and the projects that are being poured into India it’s only a matter of time before those young people become innovators instead of a well educated inexpensive work force.

Coming back to the US, it’s in our best interest to invest in innovative technologies, companies, and our children. This leads me to think that the current education system which is designed to produce workers will need to be revamped to produce creative thinkers and business leaders. But that is a soap box for another day.

Merry Christmas!


Software: Visa Increase Rejected

As you have probably been reading in several magazines, Congress has voted against increasing the number of high-tech Visa’s. “Plan to add high-tech visas dies in Congress for 2005”. I have to comment on this because this has been a sore point for me for several years now.

First my reference points:
  1. I had a very hard time when the bubble burst finding work (fact). I was often interviewed by people who didn’t have a firm grasp of how to build commercial quality products (opinion). And didn’t have the skills to interview a high tech candidate (opinion).
  2. I’ve worked with Visa holders who were technically amazing (fact).
  3. I’ve worked with Visa holders who were technically incompetent (fact).
  4. I just recommended a test engineer who I think might be a Visa holder. But she is also the best test engineer I have ever worked with (fact).
On one hand I want to say that we should hire US citizens before bringing in foreign workers. Having been unemployed for so long I was really...angry about the number of rejections I got. I suppose I thought that having contributed to the successful delivery of over 13 commercial grade products I wouldn’t have trouble finding work. I was angry at the rejections and in particular I was angry at the engineers who interviewed me for which English was obviously a second language. To me they represented the Visa holders that had a job that should have been mine.

On the other hand, I got a job working closely with an extremely competent engineer who is a Visa holder. He is very good and worth several engineers because he is so good. I certainly enjoyed working with him and I hope to work with him again someday. This forced me to step outside my anger and frustration and try to see what is really going on.

I think that US companies are trying to cut costs where ever they can. Good for them. But many of them opt to cut salaries instead of actually fixing internal process, planning, and strategic problems. Unfortunately for me those cost cutting efforts broadsided me. Yea, I took it personally. I’ve often been the top dog on the software development team and my ego had a very hard time with the rejections. Especially from the folks who told me that I wasn’t strong technically. Arghhhhh! I wouldn’t mind the number of Visa’s increasing if I knew for a fact that the folks that were being brought in were:

  1. Being paid what they are worth. (Competitively being paid)
  2. Good at their jobs and not just a body. (I.e. if you’re going to take a job I could do, you better be better than me!)
I suspect that if US companies had to pay the Visa holders their real market value, then they would be more selective in their hiring process. If they couldn’t play on the Visa holder’s desires to stay in America. Because let’s face it, there is a very large pool of Visa holders that are being exploited. The Visa holders need a company to sponsor them and quite frankly if the Visa holder is such a better candidate than an US citizen then the sponsorship should be absorbed by the company. I think there are companies who justify the lower wages by talking about the sponsorship fees and because they know that the Visa holders can’t or won't fight back.

Joel Spolksy’s article “Hitting the High Notes” is a great article that talks about how much more valuable a great programmer is to a mediocre programmer. Uncommon common sense. If I knew that the majority of the Visa holders with jobs Americans could do were great, then I would say, “Bring them on!” But I’m pretty sure they aren’t. I’ve seen too many companies that think engineers are like cogs and can be easily replaced. I’ve worked with some incredible engineers and they are NEVER easily replaced. I also think that few companies really measure how much their software development costs in relationship to the quality and productivity of each worker. So few companies really know how much value-add a great engineer brings.

In conclusion...American companies should stop trying to patch a sinking boat with exploited foreign workers and start paying attention to the money they waste by poor planning and bad processes. And since I’m sure that that won’t happen, it’s at least nice to see Congress do something that makes it harder for American companies to screw American workers and exploit foreign ones.

Grid Computing: Modular Architecture

After I wrote yesterdays post Software: Module Architecture, I realized that I had more to say about modular architecture and how it relates to the Digipede Network. I could get on a soap box for hours and pontificate about the value of using modular (Lego) architectural concepts. One of my huge pet peeves about the software industry is how people continue to create products not using this methodology.

So how does this relate to the Digipede Network? The Digipede Network was created and built using these concepts. I would like to say that I was a part of that process but I didn’t join the company until just before the first release. My only contributions were to the documentation and the samples. I’ve gushed on Robert Anderson several times because he did things right. I think I’ve embarrassed him a time or two. I’m just so used to coming into a company and seeing totally screwed up software. (I would like to add that WildPackets has done a great job with their software as well. Two companies in a row...could things be improving?) But that’s all the internally facing architecture.

Because I’m externally facing now I am very interested in how the API works within my mental framework of how software should be built. It should be easy to use someone else’s toolkit and the Digipede Framework does that. It passes all my tests. Crafting a task for distribution and remote execution can be done in 20 lines of code. The Task object is derived from a Digipede class that does all the work of setting up the job. The class can be as simple or as sophisticated as you need. And there in lies one of the great advantages to using internal architectural standards. Scalability of complexity, where the user controls the complexity.

I wish I could say that anyone who develops on Windows using .NET or COM should consider the Digipede Network but let’s be realistic-not every application needs to be able to scale-out or distribute computations. But for those that do you will find the Digipede Network easy to install and to work with. If you’re one of the lucky folks whose software is well architected you will find it extremely easy to interface with the Digipede Network. Those of you who are not so fortunate will find that the hard part is refactoring your code. Sorry.

So here’s the gist of how I feel about the Digipede Network – it’s the best designed product I’ve seen in years.



Software: Modular Architecture

I spent today listening to some of the old DotNetRocks podcasts. In particular I found the Mark Miller interviews interesting. Not because I disagree with him, but because I’ve been preaching this methodology for over 11 years now. Part of me is protesting, “Why do we keep going over this!” But the practical part of me realizes that we’ll probably be going over it for the rest of my life.

Mark Miller was talking about the importance of component-based software architecture. (Podcast: “Mark Miller Wraps it Up”) I have always called it Lego programming. I first realized the importance of this methodology while working at KaseWorks building the Kase:VIP for OS/2 product. I heavily pushed two concepts: Lego programming and open architecture. These two methodologies where the critical factors that allowed me to build in functionality that my boss said couldn’t be done.

Take a moment and think about what a Lego is; it’s a self-contained building unit (brick) with standardized interfaces that allow the unit to be attached to another unit. One Lego isn’t all that much fun but when you have a whole bucket of them. Well, then you can build whatever you can imagine.

From a software perspective many engineers cringe if you mention the need for internal architectural standardization. But standardization is extremely powerful. Think about it. The Internet as we know it would not exist, driving our cars would be extremely dangerous, and the doors of our homes would have to be custom made. Standardization creates opportunities. And for those of you lamenting the loss of your creativity...realize that you can use your creativity to build what’s on top of the architectural standards. And that even the standards themselves can be a creative effort.

Now I’m not totally keen on the current definition of components. I don’t think everything needs to be an ActiveX control, COM object, or whatever the latest component object model is. What I do believe in is creating a flexible architecture that the engineering team can take apart and put back together quickly. This allows an engineering department to quickly respond to changing market requirements. The key is not only to build quality software solutions quickly. But to build easily maintainable and enhanceable solutions as well.

For the first few years of my career I totally rejected everything to do with the business-side of software. Many engineers do that. But the problem with this is that most of us work in a business and in some cases what we’re building is a vital determinate of our company’s success or failure. The technical decisions we make today have long-term financial repercussions. You can not afford to ignore a methodology that empowers you and your team to help your company succeed.

If everyone could learn to build software using a flexible, modular architecture (using Lego bricks as a model), a lot of time, money, and creativity would be saved and could be put to better use building even cooler things. Doesn't that sound like more fun?


Grid Computing: Growing Pains

Peter Kelly wrote a post about grid computing that is just great. ”A crisis of identity”. In this post Peter lays out how grid computing is not clearly defined because grid computing is a solution looking for a problem. He actually says, “we’re still trying to figure out what the problem is that we’re trying to solve.” (his emphasis) You should read his post because it’s great. (Did I mention that his post is great?)

What he’s written has got me thinking about the good old days...Some of you may have been around when Microsoft first came out with Windows. If you were geeky enough you would have known that Windows was NOT an operating system. It was an application running on MSDOS that provided a GUI that you could run other applications in. Sure it looked like an OS and was marketed as an OS, but it wasn’t. It has been a migration process to move from Windows the application to Windows the OS. If I remember correctly, which I might not be, Windows XP has been liberated from DOS. (Windows NT was created from scratch a full-blown OS.)

So if you’re wondering what my point is...it’s this - grid platforms look an awful lot like Windows the application. The answers will be found as soon as we figure out what the questions are. And like Windows the application it’s going to take some time, some early adopters, integrators, and a whole lot of work.

Taking a look with my "All Knowing Eye", I suspect that in 10 to 15 years most people will wonder what the big deal was because grid computing will be an integral part of their computing experience. Sort of Google on steriods.

Technorati tags: , ,



Software: Universal MSDN Subscription Transition

Nerd that I am, I actually had a Universal MSDN subscription. Yes it’s true. With the release of all the Visual Studio 2005 flavors, the Universal MSDN was discontinued so I had to choose some flavor of the “Visual Studio Team System roll-based subscription” (See “Transition Your MSDN Subscription”). Huh?

I had to decide between Visual Studio 2005 Team Edition for Software Architects, Software Developers, or Software Testers. I didn’t think it would be that big a deal, Microsoft would surely explain to me clearly what the differences between the three versions are...Nope. I searched everywhere and I called. Nothing. I finally just punted and went for Architect hoping that it would be all inclusive.

I would have been much happier if I had found Rob Caron’s blog posts on this subject earlier. This is the only place I’ve found any information on the subject and he has lots of nice little pictures and great explanations.

A Hitchhiker’s Guide to Visual Studio 2005 Team System, Part I
A Hitchhiker’s Guide to Visual Studio 2005 Team System, Part II
A Hitchhiker’s Guide to Visual Studio 2005 Team System for Microsoft Partners

Software: System Information and Process Explorer

I’ve been bumbling around for the last few weeks trying to find a tool that will tell me exactly what is running on my machine. So far I’ve identified two tools that open up views into what is running and being used on the computer.

System Information (MSInfo32.Exe)

From a debugging perspective System Information is a nice little tool that shows what modules (DLLs and EXEs) are loaded. This is particularly interesting to me right now as I am having some problems that may be the results of not loading the DLLs I think should be loaded. While I don’t think that System Information has everything I need it certainly has more information about the state of my machine than Task Manager. (I’ve also only remembered this tool, like, 10 different times. Wish I could blame it on age...wait...I can.)

To get to the “System Information” window from either Visual Studio 2003 or 2005:
  1. On the menu bar, select ‘Help’ -> ‘About Microsoft Visual Studio’
  2. On the “About Microsoft Visual Studio” window, select the ‘System Info’ button.

The “System Information” window is now open.

Or, you can launch “System Info” from C:\Program Files\Common Files\Microsoft Shared\MSInfo\MSInfo32.exe.

Either way, this is a really fun tool to bop around in. Unlike Task Manager I can see a fully qualified path that tells me exactly which DLLs and EXEs are currently loaded. This tool does not actively update this information; you have to do a ‘Refresh’ but if you have any questions about whether your running what you think you’re running...this is a great place to look.

I found the ‘Office 2003 Applications' section very interesting as I’ve been playing around a lot with Excel. There is also a section called ‘Office Event/Application Fault’ which looks like it might extract Office Events from the Event Manager.

You can find an incomplete product description at ”Description of Windows XP System Information (MSinfo32.exe) Tool”. The System Information Help available from within the product also seems incomplete. But don’t let that stop you.

Process Explorer

Process Explorer is a free utility that can tell you what is currently open: files, directories, DLLs, it even looks like it knows which Registry keys. It is one of the more powerful diagnosis and debugging tools available to you. Download here. It requires Microsoft’s Debugging Tools so if you don’t have that installed already you’ll need to do that. Don’t worry if you don’t know, Process Explorer’s installer will tell you.

Again the documentation wasn’t all that, but if you play around with it you’ll find it so easy to use that you won’t miss the docs...at least not that much.

Here is the .NET point of interest.
  1. Put Process Explorer in DLL mode by selecting Ctrl-D.
  2. Right click on the Header field for the bottom window and select ‘Select Columns’.
  3. This pops up a ‘Select Columns’ property page, select the ‘.NET’ page.
  4. On the ‘.NET’ page check the ‘Assemblies’ box, select ‘OK’

Now in the top window select the executable you’re interested in. I loaded Visual Studio so I want devenv.exe. Go to the bottom window and select a DLL of interest say....System.Drawing.ni.dll and hover over it until the information tag pops up. Notice the version number? Cool. I can now know what version of .NET an application is trying to use.

Digipede: On the Move!

One of the hardest things for a startup to do is get the word out. Jumping up and down on the street corner, waving my arms doesn’t attract the attention of our target market. (Darn!) That’s what makes this week so great for us. We are getting mentioned in some very well read places.

We made Dan’l Lewin’s Christmas wish list. See “Check My List Twice”.

Robert Scoble gave Dan’l’s article a mention: “The coolest companies under the tree use .NET”

And Don Dodge extracted the company list from Dan’l’s article and commented on it here: “Hot start-ups with cool technology”.

And just like in those Ginsu Knife commercials....But Wait There’s More!!!!!!

(Yes it can get better!)

Not only is the blogosphere acknowledging our existence but the current edition of Software Developer’s magazine (available online now and on newsstands when the January edition comes out) has a great product review in it. Look for “Product Review: That Parallel Beat” by Rick Wayne (registration required).

And just when you thought it couldn’t get any better!!!!

For the low, low price of FREE! You too can attend a Digipede webinar. Head on over to www.digipede.net, signup, and see what the buzz is all about!

The next webinar is December 20th, at 10 AM PST. Seating is limited so signup early! (Just kidding, it's the Internet room for everyone!)


Software: How Do I Find a Post’s Address on Blogger?

I’ve wanted to add reference links to previous posts but I had been unable to figure out how the file names were created. Well lucky for me today I accidentally found one way to get the entire list.

  1. Go to www.blogger.com and open up the blog you want to edit.
  2. Select the page tag, ‘Posting’.
  3. Select the sub tag, “Status”.
  4. Push the button, “Republish Entire Blog”
  5. When the text comes up that says, “Your blog published successfully. (Details...)”, select “Details...”

You should now see a complete list of all the html files in your directory. You can use these addresses to refer to old posts in your new posts.

Happy Linking!


Grid Computing: Roll Your Own or Buy

A common question in the software development process is: “What should I build vs. what I should buy?” You’ll often hear engineers shoot down a buy decision because they “can build it themselves.” No doubt they can. If they couldn’t they wouldn’t be software engineers. But you really don’t want your teams building everything in-house. It’s expensive and unless it increases your company’s competitive advantage the expense is not worth the gain. Here are some common build it in-house problems:

  1. The team lacks experience in the technology area so they:
    a. underestimate the time and complexity of the solution
    b. poorly architect the solution
    c. can’t provide on going support and/or maintenance for the solution
    d. add more talent to help

  2. The in-house solutions distracts from core competency, consequently putting key technology solutions behind schedule. This directly affects the bottom line on a continual long-term basis. If you think that you’re going to write something and never touch it again...well that’s not going to happen. So don’t kid yourself.

So why am I telling you this? Because many companies are building their own in-house grid solutions. Unless you plan on being a grid platform company...why are you building your own? Now, one good reason is there is no 3rd party solution available. When this happens creating your own will give your company a competitive advantage. This is a good reason to roll your own.

However, if a 3rd party company has a solution that provides what you need or they are willing to work with you. Buy. Technology is an enabler. It allows companies to provide higher quality customer service faster and to provide new and innovative products. If you allow your technology teams to become distracted by building systems that are money pits with no competitive advantage tied to them, then you are handicapping your company’s ability to respond to market shifts, customer needs, and new revenue opportunities.

Too much of that and you'll need to get your resume cleaned up.

Technorati tags: , ,



Company Leadership: The Power of Team and How to Make One

I’ve read well liked authors and thought that their books were crap. Why? Because the authors didn’t convince me that they knew what they were talking about. This tends to happen with authors who are writing about smart people or complex situations. The characters that a writer creates can not be smarter than the writer. For the situations to be believable the writer must work within the limitations of their own creative state. Individuals are limited.

Writing and creating to please the masses may get you points in some places but in the software industry it will only buy you the status quo and it will eventually put you out of business. We can create as ourselves, create down to common accepted practice, or create up by embracing a team. Put together a group of folks, challenge them into becoming a team, and the creative energies can increase exponentially. The higher the creative juices, the higher the quality of the effort.

Creating a team is a people process. Here is how you do it:

  1. Identify the purpose of the team. When initialing building a team it is vital that you (the team leader) understand why you’re building the team. The reason must make sense and it must have a clear end result or objective. You can not successfully build a team if you do not have a clearly defined goal for them to work towards. Make sure that the goal is something that requires some stretch or challenge. And make sure it’s something that you can explain. Until it is, you can’t sell anyone on it and you can’t build a team.

  2. Understand each individual on your team. No two people are a like. So your first job is to get a basic understanding of the individuals on your team. Few of us are ever lucky enough to pick our entire team. If you do get to pick people, make sure that you select enough team players to create a core. This will make the team building process much smoother. Keep in mind that it is human nature to follow the group. Having a core of team players can kick start the others into joining. You need to know each person’s skill set, experience level, interests (related to the project), communication style, etc... The more you know about them the better you will be able to facilitate action.

  3. Create visibility. Teams happen when people have a common cause that they are emotionally committed to coupled with a sense of responsibility to the others in the group. To let people know how their work affects others you need to create visibility. Each project and team is different so how you create visibility is up to you. But you must do this. If you find that there is someone who just can’t get it. Drop him. If you need him for some specialized expertise - use him as a consultant. Do not keep him on the team. One person can throw off the group dynamics and neutralize the team.

  4. Have the group identify the milestones. You know the goal. You should have some mental picture of what is needed to achieve the goal. Guide your team through the process of identifying the milestones. You may have some reading material or research you can assign them before your milestone meeting. Do that. A team must have control over how they achieve the goal. Your job is to guide them. Don’t micromanage them. Just make sure that they stay within the defined boundaries such as technology limitations, budget, time, etc...

  5. Assign roles. The group exercise should have given you a feel for any people who might need special handling (ego stroking, extra help), as well as identifying people who have more than you expected. Anonymously allow each team member to tell you what role they want to fill. Have them give you first, second, third choices; more if the project warrants that. I tell my teams that if there is something in particular that you want to work on let me know. Otherwise I’m just going to assign you where I think you should be.

    Deciding on which role to assign which team member is a balancing act between the current skills of each member, providing a learning experience, overall team dynamics, the needs of the project, and the needs of the company. A lot to think about. When you’ve decided on roles you will find that there are some key project elements. Nail those down first. Talk to the people associated with the key roles first and get a commit from them. Do this privately. Be ready to negotiate. Get individual, one-on-one buy in from each person. Don’t expect everyone to be happy when you have finished this exercise. That is not likely to happen. But everyone will have been heard and that makes them respected. Respecting someone will often get you more points than liking them.

    If you’ve identified any bad apples eliminate them now. Don’t eliminate someone just because they will be hard to work with or you don’t like them. Eliminate people who failed to emotionally buy into the project and who were disdainful of their peers. If you’re stuck with them, stick them someplace on the project where no one else is dependent on their work, and keep a close eye on them.

  6. Take the team to lunch. Silly right? But take people out to lunch once a week. At your expense. Yes, I am telling you not to expense the lunch. At least not at first. Why? Because if you pay for it, then people will perceive that you care about them and the project. Make sure that the lunch conversations focus on...life. Social bonding during the ritual of eating is wired into us. Start conversations that the others will pick up and then just listen. Ask people about current events, shows, movies, music, or sports. Draw them out. Let them find people that they share common interests with. Your job as the team leader is to create opportunities for the team to become emotionally involved with each other. And that includes you, so make sure that you contribute to the conversations. Team players help each other. But asking for help can be hard, by letting people bond in a casual environment you help them build trust in each other. Making it easier to ask for and receive help.

  7. Meet regularly. A regular weekly status meeting is a good thing for team building. I’ve talked to a lot of managers and employees who absolutely hate meetings and think that they are a waste of time. I disagree. The meeting should be short and structured. Your objective during the meeting is to create visibility into each person’s tasks and accomplishments. Make sure that you have a standard agenda and stick to it. I suggest strongly that you ask each person if there was any really cool problem they solved that week or trick they learned. Celebrate (tactfully and appropriately) accomplishments and milestones. Also find out if there are any problems that are slowing them down and encourage others to assist with sticky problems. Reward any and all behavior that makes the team bonds stronger. A reward can be as simple as buying someone a beer.

Building teams is about taking a group of people who don’t know or care about each other and getting them to a state where they are emotionally bonded to each other, then driving them to some challenging goal. Create opportunities for team members to gain respect for each other, to help each other, to care about each other, and to shine. As the team leader you can only help that happen by creating bonding opportunities. And those opportunities will never bear fruit if you don’t lead by example: by respecting people, caring about people, and helping people.


Company Leadership: Learning to Lead

I was just talking to one of the tenants in our office building about learning to lead. This naturally put me in the mood to share a great technique. Learning to lead others is a process that takes time. It is impossible to read a book and suddenly become the world’s best manager/leader. It takes time. It takes making mistakes.

In 1993 at the ripe old age of 25, I was offered the opportunity to manage the entire OS/2 team at KaseWorks; 20+ people, multiple groups. Holy Shit! I did an internal inventory and decided that I lacked the emotional maturity and leadership skills to perform that job competently. Looking back I believe, career-wise, that I made a mistake. I should have taken the job. But I wasn’t inactive about it. I realized that I had an avenue to get the skills I was lacking. I went back to coaching.

I had been playing softball since I was in 6th grade. (I had been playing baseball but I got cut from my Little League team for the terrible mistake of being a girl. It wasn’t my coach; it was the other coaches. I like to believe they were afraid of me!) I also played softball in college and in the college town league during the summer. It was the townies who started me on my coaching career. We went to a lot of tournaments and the coaching responsibilities rotated. We got paired up but I was still the youngest person on the team so it was scary. Boy, did I make mistakes. But the team was very good at mentoring me! I supposed I was forgiven for many transgressions due to lack of experience and my young age. You don’t get that kind of forgiveness at work.

The end result of my returning to coaching in 1993 was the creation of the Women’s Recreational Softball division in the Hotlanta! Softball league in Atlanta, GA. One of the fundamental rules of the division was that if you join you got on a team. So, much to my surprise, that first year I had to quickly pull together coaching, support staff, and sponsorship for two teams. (Yes, I needed a support staff because I had 6 deaf players join and I needed interpreters). That first year we played against the Women’s Competitive division with the rule that they were supposed to be nice to us. (Most of the teams complied, there are always buttheads.) I walked away from the Rec division after 4 years. When I left it was a stand-alone division with 13 teams. I always coached the ‘left-over’ people. Which was great because not only did I have to teach them the game; they rarely knew anything about team sports. This was one set of skills.

During the time I was coaching the recreational teams, I was also coaching B/C level tournament teams. A totally different set of skills because these women knew how to play ball. My role became more of a leadership strategy role than a teaching mentoring role. Also A LOT of ego juggling.

Through these experiences I have learned that I love to coach. I love to mentor people, see them reach higher then they thought they could. Winning is no longer defined by the score on the scoreboard but by the quality of the game. I have learned to care about the people; to focus on them. It might surprise some of you to know that my teams often do very well. Not because I can teach them the fundamental skills of hockey, (I coach ice hockey now) because I can’t and I don’t. My teams do well because I care about the people. I watch each player and I figure out what she needs to play her best and to have fun. I provide a support structure through my commitment, actions, and strategy that encourages their individual development. I invite guest coaches to help at practices to teach skills I can’t and to provide more one-on-one for the players. I make sure that each player gets to work on something important to them. And because I focus on each individual and I think about team cohesion. My teams do well.

So I suggest that if you want to learn to lead. Lead. Learn by doing. Find something you know and go help a group that wants you and will support you as you learn. Coach a sports team, lead a discussion group, volunteer. But put yourself out there. Take a chance. You will find that you get far more back than you gave.


Software: VS 2005 Code Snippets

As an engineer my first reaction to seeing Microsoft’s code snippets was....Why? I figure that if some piece of code was used more then once, then it needed to go into either a function, method, or possibly a new class. The whole point of encapsulation is to make sure that if the code snippet has a bug in it or needs enhancement...you only need to change it in one place. But if you stop thinking of the snippet as a code snippet but instead as a template snippet, it then makes sense. I definitely see the value of having a quick way to create common language structures, such as switch statements, loops, classes, etc... That ability will save a lot of time both in the initial phase when the code is being written and the testing phase, when the engineer makes sure the code works. (A good way to eliminate those errant semi-colons.)

So even though this engineer didn’t immediately see the value of the code snippet, this marketing person did. I’ve watched Dan use the code snippets during developer demonstrations to speed up sample building. Why retype code that you’ve already demonstrated? Since I have my first public presentation next week, I’ve been busy getting ready. And that includes being able to build the sample code that I’m demonstrating. I don’t like to use technology I don’t understand so I’ve been trying to figure out how code snippets work.

My first question is: “Where do my code snippets live?” After a little experimentation I discovered that the snippets can be dragged into and out of the Toolbox. Cool. But when I closed that project and opened another one, my snippets weren’t in the new project. Not cool. I’m doing something wrong. The reason that I wasn’t seeing them in my second project was because Toolbox works differently these days. Tools are only available if the file opened in the work area can use the tool. To see my snippets I needed to have a .cs file active. To see the GUI tools I needed a Windows Form page (.resx). I don’t like it but then I’m a little old fashion and a little set in my ways, so change can sometimes be hard.

So where are my code snippets stored? I eventually found that my snippets are stored in “\Documents and Settings\%Current User%\Local Settings\Application Data\Microsoft\VisualStudio\8.0\toolbox.tbd”. And that what I am calling a snippet is actually not a snippet. I suspect from the documentation that it’s a custom text control. See ”Visual Studio General Tab, Toolbox”.

So what are code snippets? See ”Visual Studio How to: Manage Code Snippets”. These are a different beast then the custom text controls in Toolbox. Since they are integrated with IntelliSense you can access them directly from your code. Read “Creating and Using IntelliSense Code Snippets” as a starting point for getting a better understanding of this new technology.

For my current project I’m going to stick to the custom text controls but I do think it’s worth looking into Code Snippets.

Books: Harry Potter and Forbes?

If you love the Harry Potter books you’ll love this article about Lucius Malfoy published in Forbes. Forbes? Unbelievable.

Software Thoughts: Structuring the Unstructured

I know that I’m not supposed to click on my Google ads but sometimes they really look interesting. The title of one ad that just caught my eye is “Unstructured Data / UDM” and I had to click on it. When I was product manager at OnDisplay I had a vision of using the eContent product to build applications on. To turn the server into an application server because the greatest strength that the eContent Agent Server had was its ability to turn unstructured data into structured data. It wasn’t magic although it sure looked like it. Trung Dung, one of the OnDisplay founders, had realized that often unstructured data could become structured data with a little human intervention. Trung came up with the idea of allowing humans to build patterns that allowed software to organize the unstructured data. In would go data that the computer couldn’t understand, a pattern was run against the data, out would come the structured data. Wow.

We called eContent a Content Aggregation Server. Some companies used eContent as the foundation for price comparison websites, aggregating the data from unpartnered websites; Travelocity, Trip.com, Ariba, and Granger were all customers.

What eContent was able to do at that moment in time was not what it could ultimately become. There were some major problems that needed to be overcome. First, the Agent Server architecture was not sound. I had been the lead on the server for a short-time, but I was brought on after the work had been started. So I focused my energy on getting it working, not on redesigning it. Making the IPO was more important then redesigning the server for the long haul. (One of those business decisions that affect the technical decisions.) What needed to happen was the server needed to become a true engine. With the ability to plug-in supported input and output formats. The engine simply getting data from the input plug-in, processing it using the agent (the pattern), and outputting the data using the output plug-in.

With this vision coupled with the agents redesigned as XML instead of Javascript I could see a product that could make programmers and IT folks lives easier. Unfortunately, I was not able to realize my vision. Vignette now owns the code and it’s unlikely that I will be the one to fulfill the vision of structuring the unstructured. I do hope that Vignette does though, it will certainly fill a need.

Sign up: Digipede Developer’s Webinar Dec 6th

For all of you who are not in the San Francisco Bay area you can still learn about the Digipede Network by attending Dan’s webinar on Dec 6th at 10am PST.

The webinar is an excellent starting point for learning about the Digipede Network.


Sign up: eBig Presentation Dec 7th

For all of you in the San Francisco Bay area I’m speaking at eBig on Dec. 7 about Windows Grid Computing and the Digipede Network. Signup early so there’s enough pizza. All attendees will receive a Developer’s Edition of the Digipede Network. Spread the word....



In Memorial: Thanks for Everything Idgie

Over the last few months I’ve been struggling with the decision of whether or not to euthanize my dog, Idgie. It’s been a process that has consumed me. How much pain is too much? How do I define quality of life? How do I weigh the needs of my family vs. Idgie’s life? I talked to friends, family, and my vet. I agonized. And then I made a decision. On Wednesday evening at 5:40 pm Idgie moved on. I have always struggled to be the strong, responsible one but I found that I couldn’t take care of two aging animals, two young children, a full-time+ job, coaching and keeping my sanity. She hadn’t been running in over two years; she hadn’t been for a long walk in about one. For the last six months when she has gone down to the street (36 steps), I’ve had to carry her back up. She weighed 70 lbs. She was going blind and deaf. She had extremely bad arthritis in her hips, knees and ankles, and after she lost half a foot to a cancerous tumor, walking was even harder. She had trouble getting back into the house after going to the bathroom because she couldn’t jump 4 inches. Part of me feels as if I betrayed her trust. That I didn’t fulfill my part of the bargain. That maybe I could have done more. But part of my mind believes that I did the right thing. That she is out of pain now and running in some heavenly field with other dogs. Chasing squirrels and chipmunks. Having fun. Young again...