If only I were

community and better software

Getting started with Mercurial on Windows

leave a comment »

Microsoft made a big move recently by supporting Mercurial on Codeplex. The company I was working for in 2009 was contemplating moving to a DVCS (Distributed Version Control System) and had we made the move, we would have gone to Mercurial. So I’ve been using Mercurial off and on for the last 8 months and have been pleased with the ease of use and the clean command set.

First get and install TortoiseHghttp://tortoisehg.bitbucket.org/

If you are just starting with Mercurial here are some basic commands that will get you going. For the sake of this article, I’m going to use Orchard as the example repository.

-Orchard source url: https://hg01.codeplex.com/orchard

-Clone repository: hg clone https://hg01.codeplex.com/orchard

-Clone repository (named working directory): hg clone https://hg01.codeplex.com/orchard my_dir

-Pull source from remote: hg pull -u

**Note: ‘-u’ is important since it updates your local working copy after pulling the latest

-Local commit: hg ci -m “some message”

**Note: Remember that you are committing to you local repository, you still need to ‘push’ to your remote repository.

-Push commits to remote: hg push

**Note: this command will likely request your credentials

-Check status of local files: hg status

-View the commit log: hg log

-View the most recent commit: hg tip

If you prefer to use visual tools then just type ‘hgtk’ at your command line and you will see all of the commands that will launch visual Mercurial tools. The following is an example for the visual log.

-View visual log of commits: hgtk log

If you have been using git or bazaar, then switching to Mercurial should be trivial.

What I’ve shown here is just the very beginning set of commands for Mercurial. If you want to dig deeper, then you’ll want to read the Hg Book.

Written by Chris Sutton

February 24, 2010 at 9:56 pm

Posted in Technology

An Iowa City Blogger

with one comment

I met Bill Sorenson at the Iowa Code Camp recently and figured out that he has been blogging on tech topics for quite some time. Go check out his blog here.

Written by Chris Sutton

December 9, 2008 at 10:04 pm

Func<T> based Generic List Initializers

with 5 comments

A couple of weeks ago I was writing some code to initialize List<T> but my technique was very verbose and it seemed to be a distraction from what I was trying to do. Plus it seemed that every one else was writing about getting their func on.

So I looked back at some code that Nick Parker had written:

   1: public class Builder
   2: {
   3:     public static TType Create<TType>(Action<TType> actionOnTType) where TType : new()
   4:     {
   5:         var item = new TType();
   6:         actionOnTType(item);
   7:         return item;
   8:     }
   9: }

And tweaked it to initialize a list:

   1: public class Builder
   2: {
   3:     public static List<TType> CreateList<TType>(long size, Func<TType> initExpression)
   4:     {
   5:         var items = new List<TType>();
   6:         for (long i = 0; i < size; i++)
   7:         {
   8:             TType item = initExpression();
   9:             items.Add(item);
  10:         }
  11:
  12:         return items;
  13:     }
  14: }

Now I can initialize a list like this:

   1: List<Door> doors = Builder.CreateList(100, () => new Door {IsOpen = false});

Just for the record the Func initialization above could handle much more complex scenarios if needed. My usage is very simple.

Another variation on this is to create an extension method that does the same initialization like this:

   1: public static void Init<TType>(this IList<TType> values, int size, Func<TType> initExpression)
   2: {
   3:     for (int i = 0; i < size; i++)
   4:     {
   5:         TType item = initExpression();
   6:         values.Add(item);
   7:     }
   8: }

And here is how you would use the extension method version:

   1: var doors = new List<Door>();
   2: doors.Init(10, () => new Door());

Thanks to Nick Parker for some suggestions as I was working on this.

Something I would like to figure out is how to do this based on IEnumerable instead of IList. If you have ideas regarding implementing this on IEnumerable please add them as comments.

Also, if you want to see where I was using this, pull down the subversion source here: http://subversion.assembla.com/svn/solon-tools/trunk/Puzzles

kick it on DotNetKicks.com

Written by Chris Sutton

December 6, 2008 at 1:19 pm

Posted in Learning, Technology

Tagged with , ,

Learning Python

leave a comment »

I’ve almost learned Python several times in the recent past, but now I’m committing to learn it. Some of my learning resources are The Python Tutorial and Dive Into Python. What are other good online resources?

I’ve installed Python 3 on my machine and also have IronPython setup so I can keep up with Microsoft’s implementation. Another goal with IronPython is to be able to us it in an ASP.NET project.

Written by Chris Sutton

December 6, 2008 at 12:07 am

Posted in Learning, Technology

You can stop putting Change History in source, it’s 2008

with 4 comments

CHANGE HISTORY
========================================================
AUTHOR            LAST MODIFIED  DESCRIPTION
========================================================
v-someone        2008-08-21       Initial Version

It’s official, we are at the end of 2008 and there are lots of good source control tools out there(some of the best are free).

You don’t need to keep putting change history comments in your source if you are using source control. If you add comments when you commit your code this will be handled for you.

Written by Chris Sutton

December 5, 2008 at 10:37 am

Posted in Technology, Thoughts

Solon Spartans Win 2008 2A Football Championship

leave a comment »

On Saturday afternoon the Solon Spartans became back to back 2A football champions. They won with a dominating 60-14 score. Congrats again.

Later Saturday night the Hawkeyes beat the Gophers 55-0, even better it was on the Gophers home turf in the Metrodome.

Saturday was a good day for football teams from Johnson County.

Written by Chris Sutton

November 23, 2008 at 3:49 pm

Posted in Iowa, Life

Tagged with , , , ,

Unity at CRineta

leave a comment »

Jeff Brand from our North Central Microsoft office came to CRineta and gave a very good talk on Unity, Microsoft’s dependency injection container.

From my experience when people talk about IOC/DI they end up skipping basic concepts, but Jeff didn’t. It was really good because he went back to the very beginning and built a live code example along the way. And as he built the code base, he introduced all the core concepts.

I learned a lot and think I’ll introduce Unity into my current project. Structure Map has been on my list to learn for awhile, so I’ll probably use it to compare for usability and features.

Written by Chris Sutton

November 4, 2008 at 11:12 am

Follow

Get every new post delivered to your Inbox.