Explaining the SVK Workflow

As I’m beginning to talk to people about the SVK version control tool more, I’m noticing that the concept of mirroring isn’t as obvious to some people as it was to me when I started messing around with it (or maybe I just choose not to remember how unobvious it was), so I thought I would take some time to try to explain some of the concepts at an extremely high (and hopefully easier to understand) level.

Sometimes the best way to explain a concept is with a picture, so I threw together this small data flow diagram that shows the flow of data through the SVK system and what commands cause this data transfer to happen.

SVK WorkFlow

The basic high level workflow of an SVK session looks like this:

  1. Create A Mirror
    You mirror the repository using the svk mirror command. For me, I find it easiest to create my mirrors at the topmost level (for example, a mirror of the bieberlabs trunk might be at //bieberlabs/trunk).
  2. Synchronize Your Mirror
    This brings down the revisions that you do not have yet in your main (and remote) repository to your newly established mirrored path.
  3. Create a Local Branch To Do Your Work
    Many times I see that people default to checking out from the actual mirror (in the above example, //bieberlabs/trunk). This will work, but you lose the whole beneifit of SVK. If you check out of a mirror, every commit you make will be synchronized back to the main repository. This is not desired behavior most of the time. So, create a local branch first. I like to create a top level directory in the repository called //local that I put my local branches in, just so I know where to find them.
  4. Periodically synchronize your mirror and merge those changes into your local branch
    This is where all of the power is. You now have a local branch that you can keep completely up to date with the repository that others are doing work in. Using the svk smerge command, you can merge changes from //bieberlabs//trunk to //local/mychange as you synchronize your mirror. This allows you to always be working on the current code. You can commit your work and not effect anyone else working in the repository until you are ready to merge into the mirror.
  5. Once you have merged changes to your local branch, update your workarea
    A common misunderstanding when you smerge into your local branch is that the changes appear magically in your workarea. This is not the case. Remember, when you are smerging you are working in the repository. You still have to update your workarea (and possibly resolve conflicts) from the repository in order to reflect your changes.
  6. Merge your branch back into the mirror
    Once you have finished your change, tested and committed (probably multiple times), you can now smerge your branch back into the mirror. When you perform this merge, the changes will be moved to the source repository and subsequently synced to your mirror (the line in the diagram is red to signify this). Once this happens, all of your changes are visible to everyone else, in one commit.

Here’s the nice thing about working like this. When merging back and forth, you are not searching for ranges of revision numbers to merge. SVK remembers each merge done, so you can use your local branch forever, because you can constantly keep it up to date. This gets rid of the “make a branch, change the branch, merge the branch , delete the branch” cycle and allows you to have one place to work all of the time.

I hope that this really high level view gives a better understanding of the workflow surrounding using SVK and illustrates very simply the advantages of the tool.

For a step by step walk through the tool, you can go through the SVK tutorials.

SourceForge to Offer Subversion Service

Sourceforge has announced that the work is under way to offer Subversion as a service on the site.

An excerpt from the strategic projects document follows:

Subversion Service: The research, analysis, and support gear-up needed to implement a Subversion service at SourceForge.net is now in progress. As with all SourceForge.net services, extensive analysis and testing must be performed to verify suitable levels of stability and scalability before a service can be rolled-out. We are expecting the initial phases of this effort to last several weeks, to be followed by the implementation of a testing environment which will be used for a live beta test by specific selected projects. Pending successful scalability testing, service details will be finalized and service will be offered to all projects. (Last updated: 2005-03-02 Pacific)

Subversion Wins 2004 Jolt Award

Subversion has won the 2004 Jolt award in the “Change and Configuration Management Tools” category. The announcement can be found here.

Over the past year or so, many large projects have moved over from CVS to Subversion, including the Apache, Samba and Mono projects. A full list can be found on their testimonial page.

It’s very cool to see the tool get its “props”. The team has done a great job in building a great tool. Congratulations to the Subversion team!

SVK 0.30 Install for Windows Available

An installer for SVK 0.30 for Windows is available here. This is not a standalone .EXE file, but an installer for the SVK tool.

Some caveats from looking at it briefly this morning:

  • Make sure you have Subversion installed. I thought I had installed it already on my Windows XP machine – but I was wrong.
  • I was unable to authenticate with my SSL WebDAV server through SVK. I had to execute an svn ls https://blah.blah.blah in order to authenticate properly. Once I did this, I was able to create a mirror and sync to it.

I’m not sure if this is the “official” version of the Windows install, but it is one that is available for those who want to start running 0.30.

The Long Tail

Browsing kottke.org this morning, I came across the term “Long Tail business”. Curious, I started searching around to find out what the term meant.

The term first appeared (I think) in Wired Magazine in an article by Chris Anderson called, well, The Long Tail. The idea is that while traditional media has been based on “hits”, that sites like Amazon, iTunes and NetFlix are finding high profitiability and lower margins by offering “niche” products along side the typical “hit” products.

Essentially the idea, in my mind, boils down to this. There some demand for everything. Businesses like the ones mentioned above are seeing a lot of demand for niche products that aren’t necessarily mainstream hits, but because they have been made available, people are buying them.

Chris presents the following graph as a picture of the Long Tail:

The large red spike to the left is the mainstream demand. The yellow signifies the niche markets. The theory is that the yellow line goes infinitely to the right, and while the demand for these products may not be as high as the ones on the left, there will always be demand for them somewhere, because they are there. Services like iTunes can service these niche markets because the cost of “stocking” the product is a matter of disk space and bandwidth, while Amazon services the niche products differently with a used bookstore network (and therefore doesn’t necessarily have to stock the product). The ability to address these niche markets without dramatically increasing stocking costs means more sales, because no matter what it is, someone will want to buy it. Linking niche products to mainstream products via “Those who bought this also bought …” type of recommendations increases the visibility of these products.

The theory is very interesting but I’m sure I’m not doing it justice. For an explanation that actually makes sense, I would recommend reading the original article and then hitting Chris Andersons blog.

Pour Your Heart Into It: How Starbucks Built a Company One Cup At A Time

Pour Your Heart into It : How Starbucks Built a Company One Cup at a Time The last post talked about my opinion of the three things I find extremely important for a company to do in order to succeed. It was initiated by the treatment that I had received the previous day at Starbucks and a posting by Jason Kottke. The timing could not have been better for Tom The Architect to recommend I read the book Pour Your Heart into It : How Starbucks Built a Company One Cup at a Time, the inspring story by Starbucks CEO Howard Schultz on how he built the Starbucks brand and business on – you guessed it – the three things mentioned in my previous posting.

The book begins talking about Howards childhood and the origins of his drive to succeed being based on his fathers unhappiness and hardships supporting his family. We go through college with Howard and his first job, as a salesman, on to his first exposure to Starbucks corporation, a coffee roasting company dedicated to bringing fine coffees to its customers. Howard is completely caught up in the passion that the company owners have, and persue them to hire him as an employee. Finally, after a lot of convincing on Howards part, they hired him.

We then go to Milan, where Howard is first exposed to the espresso bar. He is captivated by the environment which these bars create and takes an idea back to the Starbucks owners to begin opening espresso bars in the Seattle area to recreate the environment he encountered in Milan. The owners of the company are resistant to the idea, fearing it will comprimise the standards they have set for themselves in being the finest coffee roasters in the Seattle area.

Finally, Howard decides to leave Starbucks and start his own company running his own authentic espresso bars in the Seattle area. His Il Giornale stores are highly successful. By the time Howard has 3 stores (to Starbucks 6), the owners of Starbucks decide to put the company up for sale and Il Giornale buys the company, changing it’s name to Starbucks.

The remainder of the book chronicles the building of the Starbucks we know today and the journey from small entrepreneurial company to a large, multi-national, professionally managed one. The most amazing thing about the story was the adherance to the core values that the company was founded on and the unwavering belief that customers and the employees drive business success. The company is living proof that success (financial and otherwise) is a by-product of doing the right things for your customers. It is also is a very good example of how valueable a mission statement that articulates the values of the company can be as a “measuring stick” to help you make decisions.

Reading this book was a breath of fresh air for me. I highly recommend it as not only a fascinating story in general, but for the lessons in leadership that it offers. Howard Schultz is very honest about both the things he feels he did right and mistakes he thinks he’s made. He shares the heartbreak of being turned down for venture capitol, and the elation of succeeding in the business of his dreams. He explains some of the real challenging times he has had as CEO of Starbucks, the issues encountered when a company grows really quickly and the ways in which these issues were handled. He outlines his creation of a “leadership pipeline” and his long journey towards being able to let go of the details and finding people he trusted to take care of them as the company grew. Finally, he talks about the delicate balance between values and Wall Street, and the stress that the shareholders can bring to a business.

This is probably the best “business” book I’ve read in quite a while. It has everything you could possibly want in a book about leadership, vision, and values. I highly recommend it if you are looking for a truly inspiring story.

Reaching “Norm” Status – The Ultimate in Customer Service

An interesting thing happened to me in the local Starbucks the other day. I reached “Norm” status.

“Norm” status is what I call the point when dealing with a vendor (like a Starbucks, a local restaurant, a local bar, or even a web site) when you walk into the establishment and your order is started before you are asked what you are there for. They know you well enough to give you what you need with no effort on your part.

I coined the name from the TV show Cheers, where Norm would walk into the bar, everyone would yell “Norm!”, and by the time he sat down he had his beer in front of him – and his stool was always open and ready for him.

“Norm” status is the ultimate in customer service. It’s the point in the vendor/customer relationship where the customer feels they are important enough to pay attention to and they don’t have to work to get exactly what they want.

In a conversation with Tom the Architect yesterday talking about good web sites, I realized that one of the reasons I like Amazon.com so much is that I have reached “Norm” status with them. As soon as I log in, they tell me what they recommend. If I need to find something, I can find it in a matter of minutes. I never spend more then ten minutes on Amazon without finding exactly what I need and the status of where my order is with them. I never walk away disappointed or with unmet expectations – and I rarely log out without having placed an order for exactly what I want, and knowing approximately when I’ll get it.

“Norm” status is the ultimate in customer service. It is personalization at its finest and it makes the customer feel important. The more the customer feels important and gets what he wants (or at least knows he can’t get it), the more he or she will return because you’ve treated them well.

After reading Jason Kottke’s My Business Influences I started thinking about the things that I think make businesses great. I came up with three things:

  • Values – Running business according to your values rather than making revenue the primary value. This is a lot of what Jason was talking about
  • “Norm” status – Making the customer feel wanted and important. Personalization of experience and the customer walking out of your business thinking you “know” them is very important to repeat business
  • Integrating into the customers life, rather than making them work to integrate you. Amazon does this really well. Not only do they become part of my buying life because they treat me well, but because of their service enabled system, I have the ability to reuse their store at the application level. I can integrate them into things like WordPress that I use in every day life. Because they integrate into my every day life so invisibly, I automatically default to using them because they are there – not because I have to think “Gee, maybe I’ll check Amazon”. This integration into my every day life and tools creates opportunity for them to receive referral business from me when I find a book or product I like and want to recommend it to others. This effects their overall revenue numbers.

I believe these three principles are a few of the keys to a businesses success. The core values must be centered around the customer. The customer has to feel important. Finally, you have to be present in their lives without them having to think about it, by integrating into the things they do every day.

These three things should be what goals are built around. Revenue should never be the primary goal of a business, because in my opinion it is a natural side effect, or by-product, of satisfying these three core principles.

Now … if you’ll excuse me, I can use a Venti-triple-shot-skim-no-whip-mocha now.

GoogleWhacking

As I was browsing around today looking for email subscription plugins for WordPress I came across a post on skippy.net about a term called GoogleWhacking. I had never heard the term before so I did some research.

Apparently GoogleWhacking is a word or set of words without quotes that returns exactly one result.

Now that I know this I’m going to try and forget it. I can’t imagine the amount of time one could spend trying to find one of these terms.

My Business Influences (kottke.org)

Jason Kottke has a great article called My business influences on his web site kottke.org.

Jason has currently made the move to work for himself full time running his web site. This posting is a good one, talking about a base principle in running business – letting your values drive the business instead of the other way around.

It’s a really great and thought provoking article on the subject.