<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Marty Haught</title>
    <link>http://martyhaught.com/rss/</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>My blog covering software design.</description>
    
    
        <item>
          <title>Event Organizing 101</title>
          <description>&lt;p&gt;I&amp;#8217;ve been speaking at both conferences and user groups about building community and improving what we already have in the Ruby community.  At Ruby Midwest, I am giving a sub 30 minute version of this talk and had to cut out a good number of slides.  In this process I realized several of these slides might do better as a blog post on the basics of event organizing. While this is not meant to be exhaustive it does try to cover the basics on putting together your first event.&lt;/p&gt; &lt;p&gt;To be more clear, this advice is mostly for ongoing local events such as user groups, hackfests, code retreats and the like.  I won&amp;#8217;t go into why you should organize, just the how.&lt;/p&gt;
&lt;h4&gt;Network&lt;/h4&gt;
&lt;p&gt;The first piece of organizing will focus on your network or connection to the local community.  Hopefully you know your community somewhat.  If for some reason you don&amp;#8217;t, you&amp;#8217;ll want to do this immediately.  Get out and see what&amp;#8217;s happening out there.  Attend events, talk to people that are active in the tech community, see what they have to say.  I&amp;#8217;ve heard this a few times where someone started a new type of meetup only to find an existing one after the fact on a different night of the week.  Instead of duplicating effort, exploring the option of combining efforts is much smarter and will lead to a healthier event long term.&lt;/p&gt;
&lt;p&gt;Communicate your idea to your network. See if there&amp;#8217;s any interest.  You might find that by talking about it you&amp;#8217;ll not only grow interest in it but also spread the word about the possibility.  Your idea may grow once others start to give you feedback.  While this may seem scary to you now, it&amp;#8217;s a good thing as you can end up with a better event because of it.  Though it&amp;#8217;s just as important to know when your idea is being hijacked and you should say no.&lt;/p&gt;
&lt;p&gt;Seek advice from other community leaders.  It doesn&amp;#8217;t matter if they&amp;#8217;re in the tech sector or not, running an event is similar regardless of topic. They likely will be happy to give you advice and this can make things much easier to get your event started.&lt;/p&gt;
&lt;p&gt;Finally ask for help. If you don&amp;#8217;t ask, no one may offer help.  Many will say no or seem uninterested, this is fine.  Some may say yes while others may connect you with another person who might help you out.  Don&amp;#8217;t be shy, ask away.&lt;/p&gt;
&lt;h4&gt;Core Group&lt;/h4&gt;
&lt;p&gt;Before you proceed with your event, I strongly recommend you identify a core group of interested people.  I&amp;#8217;ve seen a suggested number of 10-20 but honestly this just needs to be big enough for you to still be willing to go forward with the group. If you&amp;#8217;re doing a code retreat it could just be 5 people (a facilitator and two pairs).&lt;/p&gt;
&lt;h4&gt;Locating your Space&lt;/h4&gt;
&lt;p&gt;Finding a space to hold your event is pretty important and something you&amp;#8217;ll want to arrange early on in the planning process.  As I recommend you start small, look for a small space that your event will be comfortable in as it grows.  Usually you&amp;#8217;ll want to look for a free space.  There are plenty of good sources in most communities.  Depending on where you are looking to have your event this might be easy or challenging.  The following list is sorted with the best choices on top.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;co-working spaces &amp;#8211; great choice that will likely have amenities you need and will likely be open to hosting you for free.&lt;/li&gt;
	&lt;li&gt;ruby friendly tech companies &amp;#8211; another good choice for free space, may be limiting though on how much room you can use.&lt;/li&gt;
	&lt;li&gt;theaters, performance halls &amp;#8211; while not free, these can be great locations for larger events of 50+ people&lt;/li&gt;
	&lt;li&gt;universities, colleges &amp;#8211; typically colleges have space that students can use and will often rent out rooms to the community. It really helps if you have a connection to the school.&lt;/li&gt;
	&lt;li&gt;public libraries &amp;#8211; I usually see these as free or very affordable. Some have restrictions if you&amp;#8217;re charging admission though.&lt;/li&gt;
	&lt;li&gt;public schools &amp;#8211; like public libraries, some public school districts will let community groups use their space. Never hurts to check in.&lt;/li&gt;
	&lt;li&gt;coffee shops &amp;#8211; depending on the coffee shop, this can be a great space depending on the event type. I find the excessive foot traffic make it undesirable though.&lt;/li&gt;
	&lt;li&gt;bars &amp;#8211; like coffee shops, bars aren&amp;#8217;t a great choice though I have seen some work out just fine.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Finalize Details&lt;/h4&gt;
&lt;p&gt;Once you have your space, core group and general idea of your event figured out, you need to work out the details of the event. Start with drafting a schedule.  Imagine what takes place in each part of the meeting. As you do this make a checklist of things you need to do as well as anything you need to bring and setup.  Plan out your schedule to the minute and think of the little things such as where people get water, use the restroom.  What about power, internet access, seating and table space.  Though this is largely common sense, it&amp;#8217;s worth mentioning so you don&amp;#8217;t start  your event and realize you forgot something critical and now have to scramble.&lt;/p&gt;
&lt;h4&gt;Web Presence&lt;/h4&gt;
&lt;p&gt;I almost didn&amp;#8217;t put it in but figured it&amp;#8217;s best to briefly touch on this so it doesn&amp;#8217;t get skipped over.  If you&amp;#8217;re holding a public event, then you should have a public face for information.  Essentially someone should be able to google your event name and find all the basic information they need on it such as time, date, location, description and any other details on signing up, what to bring, requirements, cost, etc.  You should have a twitter account or some other source for sending out updates on your event.  Having a mailing list/google group is another good idea for any group that meets regularly.&lt;/p&gt;
&lt;h4&gt;Budget&lt;/h4&gt;
&lt;p&gt;You should determine your costs by this point.  Hopefully you&amp;#8217;re running a free event but if not you need to have a basic budget laid out. Determine all your costs and record them. In the beginning you might have to estimate placeholders until you can get firm bids on whatever it is you need to supply.  Common things include space rental fee, AV equipment and food.  Consider getting sponsors to cover some of this as well.  Many companies interested in sponsoring might have some of what you need or at the least are happy to pick up the tab for part of it.  This is especially true if you&amp;#8217;re running a free event that is there to benefit the community.&lt;/p&gt;
&lt;h4&gt;Finding Sponsors&lt;/h4&gt;
&lt;p&gt;This is for the larger events that have a budget and will draw more attendees.  There are lots of places to find sponsors but it varies by community.  The following list will give you some ideas on where to look.  It&amp;#8217;s sorted with the best bets up top.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;local Ruby shops, especially consulting companies&lt;/li&gt;
	&lt;li&gt;tech companies interested in devs&lt;/li&gt;
	&lt;li&gt;recruiting firms&lt;/li&gt;
	&lt;li&gt;training companies&lt;/li&gt;
	&lt;li&gt;larger Ruby consultancies, companies not local&lt;/li&gt;
	&lt;li&gt;Ruby Central **&lt;/li&gt;
&lt;/ul&gt;

	&lt;ul&gt;
		&lt;li&gt;Ruby Central has in the past supported certain type events with grants. I would try to get all support locally first before approaching Ruby Central but it&amp;#8217;s good to know the option is there.&lt;/li&gt;
	&lt;/ul&gt;&lt;p&gt;One more thing I want to mention on sponsors is that many of them will have marketing or outreach budgets that can easily cover your costs (unless you&amp;#8217;re doing a huge event).  It&amp;#8217;s good to seek them out early in the process and give ample time for them to review your event, what you&amp;#8217;re asking and match it up to their budget and goals.  Though I won&amp;#8217;t get into detail on the process of negotiating sponsorship deals I will give a few pointers.  First, be clear on what you&amp;#8217;re asking for and what benefit the sponsors will get.  Before approaching sponsors, have this figured out.  There are plenty of cases where you might find a sponsor before you&amp;#8217;ve planned this out which is totally fine.  However, a typical sponsor will need to see this before they can consider supporting your event.&lt;/p&gt;
&lt;h4&gt;Reaching Out&lt;/h4&gt;
&lt;p&gt;This is probably the easiest and the hardest thing about event organizing.  Getting the word out about your event and attracting people to it.  Initially I recommend you rely on word of mouth, twitter and a blog post or two.  Let it start organically and as time passes up the effort to expand your reach.  The following list should give you some ideas on reaching out.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;nearby user groups&lt;/li&gt;
	&lt;li&gt;tech friendly hang outs&lt;/li&gt;
	&lt;li&gt;word of mouth via core group&lt;/li&gt;
	&lt;li&gt;twitter, blogs&lt;/li&gt;
	&lt;li&gt;sponsorsâ€™ network&lt;/li&gt;
	&lt;li&gt;flyers at college campuses&lt;/li&gt;
	&lt;li&gt;meet with community leaders&lt;/li&gt;
	&lt;li&gt;local calendars&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Every community is different so you&amp;#8217;ll just need to be creative in asking around and figuring out how to get word of your event to ears that haven&amp;#8217;t heard it. I think this is really important if you&amp;#8217;re trying to grow community and go beyond those already plugged into local tech events.&lt;/p&gt;
&lt;h4&gt;Event Upkeep&lt;/h4&gt;
&lt;p&gt;This part is all about the various things you need to do for ongoing events.  Though planning out the first meeting is usually the most work, you can&amp;#8217;t just sit back and let it go.  Depending on your format you&amp;#8217;ll need to keep bringing in speakers or content for your event.  At the least you&amp;#8217;ll need to monitor how things are going and make sure you&amp;#8217;re still on track with what you envisioned for your event.  If things are drifting or people are losing interest, then figure out why and make course corrections.  You should be constantly talking to your attendees and seeing what they think.&lt;/p&gt;
&lt;p&gt;Part of this upkeep is the concept of &amp;#8216;inviting continuously&amp;#8217;.  This can refer to speakers and content as well as reaching out to new people to come to your event.  Encourage local tech companies to get involved.  The shape this takes depends on your event but the point is you want as many companies as well as local speakers and devs to be invested in your event and cheering for your success.&lt;/p&gt;
&lt;h4&gt;Unwanted Behavior&lt;/h4&gt;
&lt;p&gt;The slide title for this section was &amp;#8216;Weeds&amp;#8217; which I think is a great way of thinking about unwanted behavior.  While you might not think this is a big deal, it surely can be.  When left unchecked it&amp;#8217;ll grow like a weed and overtake whatever you&amp;#8217;ve planned.  It also has the possibility to poison the waters and turn away potential attendees over time.  I believe it is likely that all groups or events will eventually have to deal with unwanted behavior.  This could take shape as bullying, offensive language, inappropriate comments or solicitations of various kinds.  Hopefully it&amp;#8217;ll never come up but prepare yourself for dealing with this reality.&lt;/p&gt;
&lt;p&gt;One of the first things you should do is determine what sort of behavior is unwelcome.  Draft up some basic language on what you expect or allow at your event.  It doesn&amp;#8217;t have to be legalese, just plain english is good enough.  Some of this behavior will come from people who are unaware or insensitive to the fact that their behavior is a problem. Spelling out what is acceptable will go a long way to helping curb this sort of stuff.  However, you&amp;#8217;ll still need to be ready to deal with it.  What I recommend is to be firm but tactful in asking the offender to stop the behavior.  Language such as &amp;#8220;this sort of behavior isn&amp;#8217;t cool with the group&amp;#8221; can be effective.  Ultimately, you have to decide what&amp;#8217;s the appropriate response based on the situation.  The one thing I hope you do not do is look the other way.  That how these sort of &amp;#8216;weeds&amp;#8217; get out of hand.&lt;/p&gt;
&lt;p&gt;I hope this gives you plenty of tips to get started and go build up your community.  Though it can be a lot of work at times, I find it very rewarding and have stuck with it for nearly 6 years.  If there&amp;#8217;s anything I didn&amp;#8217;t address here that is related and you&amp;#8217;d like to know more about in terms of event organizing, please post a comment.&lt;/p&gt;</description>
          <pubDate>Wed, 02 Nov 2011 21:18:48 GMT</pubDate>
          <guid>http://martyhaught.com/articles/2011/11/02/event-organizing-101/</guid>
          <link>http://martyhaught.com/articles/2011/11/02/event-organizing-101/</link>
        </item>
    
        <item>
          <title>Conference organizing and speakers</title>
          <description>&lt;p&gt;Recently there was a bit of talk about conferences requiring speakers to pay for their ticket just like a regular attendee.  There was a related post by Jesse of PyCon on their policy &lt;a href=&quot;http://jessenoller.com/2011/05/25/pycon-everybody-pays/&quot;&gt;here&lt;/a&gt;.  As a conference organizer I have my own take on this topic.  In short, I disagree with the notion that speakers should pay anything.  Let me explain more about that though as it&amp;#8217;s rooted deeply in my personal philosophy.&lt;/p&gt; &lt;p&gt;First, anyone who organizes a conference needs to make a lot of decisions on what that conference is going to be like.  This potentially makes a specific conference unique and a special snowflake.  Or they could copy another conference that they like.  It&amp;#8217;s all good.  There is plenty of room out there for conferences of all kinds.&lt;/p&gt;
&lt;p&gt;As most of my conference going experience is based in the Ruby community that is the example I&amp;#8217;ve been given.  Almost all, if not all, of the Ruby conferences that I know of do not charge speakers admission. Some even reimburse speakers for some travel expenses and include additional money.  This seems completely logical and fair.  For most conferences, the speakers are the biggest draw to the event.  They work hard to share something with attendees.  At Ruby conferences it is rare that presentations are marketing/sales. It does happen somewhat but it&amp;#8217;s not common.  Most presentations are geared toward inspiring, teaching or exposing the attendees to something new or different.&lt;/p&gt;
&lt;p&gt;These presentations take a lot of work to put together.  I&amp;#8217;ve seen it mentioned that for every hour of presented material, a speaker will invest 10 hours.  I&amp;#8217;ve seen my time shoot much higher than this.  For Red Dirt Ruby Conf 2010, I spent around 16 hours preparing a 15 minute talk on ActiveRecord/Relation 3.  For RailsConf 2010 I easily spent over 50 hours preparing a 3 hour tutorial on lean development practices with the Rails stack.  Both far exceed the 10:1 ration.  Perhaps I invest way more time in my presentations than others but I know it takes a lot of work to do it well.  Requiring me to pay for my ticket given all the personal (and billable) time I&amp;#8217;ve invested would be too much and feels wrong.&lt;/p&gt;
&lt;p&gt;Now for me, I&amp;#8217;m happy to share and give back to the community and I don&amp;#8217;t mind investing a lot of time in that. As a conference organizer I put in &lt;span class=&quot;caps&quot;&gt;WAY&lt;/span&gt; more hours than this to get everything lined up.  I&amp;#8217;ve easily spent 80 hours of my free time (and some of my billable time) this year getting things lined up for &lt;a href=&quot;http://rockymtnruby.com&quot;&gt;Rocky Mountain Ruby&lt;/a&gt; and we&amp;#8217;re still in the early phases.  I do this because I love building community and sharing with others.  It is clearly a labor of love.&lt;/p&gt;
&lt;p&gt;I have a hard time imagining that a conference can&amp;#8217;t manage its budget so that they charge fair ticket prices and still give speakers a free ride.  I suppose if they don&amp;#8217;t take sponsorship money but even then you should be able to cut non-essentials or limit attendance so you don&amp;#8217;t have to get huge and pay crazy venue fees.&lt;/p&gt;
&lt;p&gt;So as to Rocky Mountain Ruby, we will always give speakers a free registration.  We even have a couple alternate presentations in case a speaker or two is sick or has to cancel last minute.  They get a free ticket even though they might not be asked to speak.  Additionally, we let those that submit a talk and don&amp;#8217;t get accepted have the opportunity to buy their ticket at early bird pricing even if it&amp;#8217;s expired.  We also reward volunteers that put in hard work to run the conference with a free pass.  I view these as &amp;#8216;employees&amp;#8217; of the conference.  Why should they have to pay when they&amp;#8217;re investing much of their time to make the conference a better experience?  As an attendee of other conferences, I don&amp;#8217;t feel offended or find it unfair if speakers or volunteers get a free pass.  Matter of fact, I find it odd if they don&amp;#8217;t.&lt;/p&gt;
&lt;p&gt;I am a generous person and I love to build community.  Perhaps I borderline on being too generous but I think it&amp;#8217;s worth it.  As an organizer my conference reflect these views.  I know why I like to attend conferences and I make sure that anything I put this much work into matches that as best I can.&lt;/p&gt;</description>
          <pubDate>Tue, 07 Jun 2011 10:45:07 GMT</pubDate>
          <guid>http://martyhaught.com/articles/2011/06/07/conference-organizing-and-speakers/</guid>
          <link>http://martyhaught.com/articles/2011/06/07/conference-organizing-and-speakers/</link>
        </item>
    
        <item>
          <title>Triathlon Training</title>
          <description>&lt;p&gt;Here&amp;#8217;s my follow-up to my &lt;a href=&quot;http://martyhaught.com/articles/2011/02/02/triathlon-plunge/&quot;&gt;Triathlon Plunge&lt;/a&gt; post.  If you haven&amp;#8217;t read it and are curious for the story that led me to going for a triathlon please read it now.&lt;/p&gt;
&lt;p&gt;One of the first things was to find a local program and coach to work with.  Luckily the Longmont Recreation Center has a &lt;a href=&quot;http://www.ci.longmont.co.us/rec/fitness/tri_programs.htm&quot;&gt;triathlon program&lt;/a&gt; and I talked with the man that organizes it, &lt;a href=&quot;http://www.jointhejim.com/&quot;&gt;Jim Hallberg&lt;/a&gt;.  After meeting with Jim, I decided that he would be a good coach for me.  It&amp;#8217;s been two months since that point and I&amp;#8217;m very happy to have chosen a coach.  There are so many things that I didn&amp;#8217;t know about triathlons and Jim has been a great guide for all of them.  He has kept my training level just right as well as helped me with my technique.&lt;/p&gt; &lt;p&gt;My training regimen started out fairly light.  I&amp;#8217;m doing roughly 2 runs, 2 bikes, 2 swims and 2 core workouts a week.  The runs vary from 30 minutes to an hour.  The bikes usually are an hour though some of my long rides have been closer to 2 hours.  Swim and core workouts are all an hour.  Core is a group class which makes it much easier to go a full hour doing strength and conditioning.  The swims are a class as well called Beginning Masters.  Megan, the coach, gives us a solid hour long workout and will give stroke instruction if asked.  This is perfect as I can slowly improve my stroke while getting a great workout.&lt;/p&gt;
&lt;p&gt;When you add up all my weekly workouts I&amp;#8217;m averaging around 7-9 hours of training time.  Though December wasn&amp;#8217;t quite that consistent due to many factors, January has been solid.  In a month that level of workouts have made a noticeable mark.  I definitely feel more fit and my workouts are getting easier.  I can also visibly tell I&amp;#8217;m toning up my muscle mass.  As we move closer to spring I&amp;#8217;ll likely move into the 12-15 hours per week but I doubt I&amp;#8217;ll go much more above that.  I do have a family, work and social life to maintain.  The great thing is Jim is really into effective training even if you can&amp;#8217;t log 20+ hours a week.  So I&amp;#8217;ll be looking forward to being as smart as possible with my 12-15 hours.&lt;/p&gt;
&lt;p&gt;Though I didn&amp;#8217;t set out to lose weight or even have it as an important metric, I did end up losing 5 pounds in January.  When you log that many workout hours per week, especially the ones heavy on cardio, you&amp;#8217;re going to burn a lot of calories.  It&amp;#8217;s definitely the trend and goal for many triathletes to shed as much weight as seems healthy.  I suspect I&amp;#8217;ll still lose a bit more weight though I don&amp;#8217;t want to lose more than 5 more pounds.&lt;/p&gt;
&lt;p&gt;One really cool thing about my workouts is I&amp;#8217;m using my new &lt;span class=&quot;caps&quot;&gt;GPS&lt;/span&gt; Garmin watch to track my run and bike workouts.  I bought a Garmin 405 after the new year.  I&amp;#8217;ve loved using it.  You can actually check out my data &lt;a href=&quot;http://connect.garmin.com/explore?owner=mghaught&quot;&gt;here&lt;/a&gt;.  It comes with a heart rate monitor so I can track calories burned as well as how hard I&amp;#8217;m working on these workouts.  I love the data.  Not every workout is in there though.  Most of my bikes are done on a trainer in my basement.  A trainer, for those that don&amp;#8217;t know, is a cool device that your bike locks into to let you pedal like normal and feel a realistic road resistance.  I bought the &lt;a href=&quot;http://www.cycleops.com/products/trainers.html?page=shop.product_details&amp;amp;flypage=flypage_images.tpl&amp;amp;product_id=168&amp;amp;category_id=3&quot;&gt;CycleOps Fluid 2&lt;/a&gt;.  Weather does limit what I can do but I have to say, I&amp;#8217;ve never noticed how many 40-50 degree days we have in January. Colorado&amp;#8217;s Front Range really does make it much easier to do many of these workouts outside than I would have imagined.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve got my first race in May so I have another 4 months to go.  Since I&amp;#8217;m only going to do a sprint and olympic distance triathlons, I don&amp;#8217;t need to be able to go really long distances.  If I stick with this for another year I&amp;#8217;ll consider doing a half ironman.  For now much of my training is getting faster and stronger and not just able to go for longer distances.  So far the interval training is making a difference.  I can already feel it&amp;#8217;s easier to maintain a faster pace than I used to with less work.  What&amp;#8217;s also excited is Jim hasn&amp;#8217;t worked too much on my technique yet so there will be adjustments to allow me to race faster on less effort simply from a technique standpoint.  I&amp;#8217;m really excited to see where this will lead.&lt;/p&gt;
&lt;p&gt;One final thought I have is on exercise in general.  I feel so much better with regular exercise in my life.  It&amp;#8217;s really true that it will make you healthier and I believe happier.  Everyone should be doing some sort of exercise.  Though you don&amp;#8217;t have to get crazy and dive into triathlons, you should do something.  I&amp;#8217;ve been really impressed with fitness swimming as one such way.  The recent passing of &lt;a href=&quot;http://www.jacklalanne.com/&quot;&gt;Jack Lalanne&lt;/a&gt; made me think about this more.  He was on a crusade to get all of us exercising with some sort of fitness.  I get it.  I agree and I think I will do better committing to some level of fitness for the rest of my life.  I hope you do too.&lt;/p&gt;</description>
          <pubDate>Mon, 07 Feb 2011 23:09:29 GMT</pubDate>
          <guid>http://martyhaught.com/articles/2011/02/07/triathlon-training/</guid>
          <link>http://martyhaught.com/articles/2011/02/07/triathlon-training/</link>
        </item>
    
        <item>
          <title>Triathlon Plunge</title>
          <description>&lt;p&gt;I have decided that in 2011 I will compete in two triathlons.  To those that follow me on twitter already know of this but I haven&amp;#8217;t really expanded on why I decided to undertake this venture nor how it&amp;#8217;s going so far in detail.&lt;/p&gt;
&lt;p&gt;For the past couple years I&amp;#8217;ve thought about triathlons.  I live in triathlon central in Boulder County, Colorado. It seems you can&amp;#8217;t drive more than 5 miles without seeing someone training on their bike or running in any season.  I&amp;#8217;ve been biking off and on for the last 20 years and I&amp;#8217;ve enjoyed running as well.  Though I have zero swimming experience (in the competitive/fitness realm) I figured I could overcome that with training.&lt;/p&gt; &lt;p&gt;In summer of 2009 I hurt my knee while on a 9 mile run.  Looking back it was likely a combination of old shoes and pushing myself too fast.  I simply couldn&amp;#8217;t train like I did in my 20s.  Luckily I stopped immediately so the damage was minimal.  After a week&amp;#8217;s rest I tried to run again but the pain kicked in again within a mile of running.  I spent the next 3 months trying to rest it more and then running to no avail.  I started to wonder if I could ever run again.&lt;/p&gt;
&lt;p&gt;By summer of 2010, I had given it over 6 months of rest with no running at all.  I started doing a run/walk combination in Vibram Five-Fingered shoes and was ramping it up slow.  I got to where I could easily do a 2-3 mile easy run with no knee pain.  I was also sticking to softer surfaces like dirt or gravel.  I was feeling pretty good at things.&lt;/p&gt;
&lt;p&gt;I was also about this time that I met two triathlete programmers at a software conference, &lt;a href=&quot;http://twitter.com/#!/rmm5t&quot;&gt;Ryan McGeary&lt;/a&gt;  and &lt;a href=&quot;http://twitter.com/#!/keavy&quot;&gt;Keavy McMinn&lt;/a&gt;.  Ryan and I talked about triathlons and he even gave me some pointers on swimming which gave me more confidence to take the plunge regardless of my swimming inexperience.  Keavy&amp;#8217;s story is impressive ( just go read her &lt;a href=&quot;http://www.keavy.co.uk/&quot;&gt;blog&lt;/a&gt; ) and she just completed an Ironman triathlon in November.  Between the two of them they got me thinking more of going ahead and doing it.&lt;/p&gt;
&lt;p&gt;Finally I signed up for two 5K races at software conferences in the fall of 2010.  I was able to finish both and run at a fairly good pace (23:50) without any pain.  I did use a knee brace but I was thinking I could train to run again without it.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m not sure what about the triathlon that allures me.  I do enjoy doing all three of the sports so that helps.  I do like competing and pushing myself so that could be part of it.  Perhaps it&amp;#8217;s the nature of the challenge and achieving some difficult goal you set for yourself.  In any event, I decided in December to go all in and do it.&lt;/p&gt;
&lt;p&gt;I will follow this post up with my training approach and how it&amp;#8217;s gone so far.&lt;/p&gt;</description>
          <pubDate>Wed, 02 Feb 2011 21:52:27 GMT</pubDate>
          <guid>http://martyhaught.com/articles/2011/02/02/triathlon-plunge/</guid>
          <link>http://martyhaught.com/articles/2011/02/02/triathlon-plunge/</link>
        </item>
    
        <item>
          <title>Removing Github Repos</title>
          <description>&lt;p&gt;For a long time I had private Github repos that I was added to but wasn&amp;#8217;t the admin on it.  Over time, I&amp;#8217;ve moved on to different projects and often times I get left with access to these repos.  It was annoying as I couldn&amp;#8217;t find a way to leave on my own and I couldn&amp;#8217;t always ask the admin to remove my access.  Github does indeed have a way for you to leave on your own but it isn&amp;#8217;t all that clear.  I almost didn&amp;#8217;t think this was blog worthy except several people have asked about this over the last year that justified this post.&lt;/p&gt;
&lt;p&gt;Click on Account Settings in the upper right.  Then click on Repositories in the nav bar.  At that point you&amp;#8217;ll see a list of repos with access.  Just click the X button to leave those unwanted repos.  Here&amp;#8217;s a screen shot:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.skitch.com/20110202-82jeixqdgxdt69xxdii9yx4pi9.png&quot; height=&quot;272&quot; width=&quot;496&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Happy Githubbing!&lt;/p&gt;</description>
          <pubDate>Wed, 02 Feb 2011 10:43:53 GMT</pubDate>
          <guid>http://martyhaught.com/articles/2011/02/02/removing-github-repos/</guid>
          <link>http://martyhaught.com/articles/2011/02/02/removing-github-repos/</link>
        </item>
    
        <item>
          <title>Managing Multiple Heroku Accounts</title>
          <description>&lt;p&gt;I recently ran into an issue where my personal Heroku account and the owner account of a Heroku app that I was maintaining were different.  For those that don&amp;#8217;t know, your account is tied to an ssh key which allows you to run privileged commands via terminal.  Though you can get most of these commands being a collaborator on a project, you cannot add addons or manage resources.  For that you must be the owner.  The issue in this situation was the &amp;#8216;owner&amp;#8217; had no technical skills and was not going to be running commands.  Even if he could run these commands, he was paying me to manage the whole process so I needed to act on his behalf.  As you can imagine, I don&amp;#8217;t want my personal account to &amp;#8216;own&amp;#8217; his application.  So how do you deal with this?&lt;/p&gt; &lt;p&gt;Let&amp;#8217;s understand a bit more about how your account is associated. When you install the Heroku gem and run your first command it will ask you to enter your email and password and set your default ssh key before the command is issued.  It will store this data into a .heroku/credentials file in your home dir.  The problem is you can&amp;#8217;t add another email account.  One option is to make multiple credential files for each account you want to impersonate.  You would then need to change out the file based on what user you want to impersonate. Not ideal.&lt;/p&gt;
&lt;p&gt;Luckily someone else has had this problem and wrote up a Heroku add-on.  &lt;a href=&quot;http://twitter.com/#!/ddollar&quot;&gt;@ddollar&lt;/a&gt; created &lt;a href=&quot;https://github.com/ddollar/heroku-accounts&quot;&gt;heroku-accounts&lt;/a&gt; to manage this for us.  The rest of this post is just an explanation of what I ended up doing and his readme is more than sufficient to guide you.  What I find curious is Heroku has no official doc on how to tackle this problem though I suspect that will change soon (especially since a couple of my friends work there and will likely add it after reading this).&lt;/p&gt;
&lt;p&gt;Install the add-on&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
heroku plugins:install git://github.com/ddollar/heroku-accounts.git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next set up your personal account (the one you use for all your side projects, hacking, etc).  It will ask you for your email and password.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
heroku accounts:add personal
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This way of adding an account will require you to tie your ssh key to the account manually.  The command gives you an example to put into your ~/.ssh/config file, such as:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
Host heroku.personal
  HostName heroku.com
  IdentityFile /PATH/TO/PRIVATE/KEY
  IdentitiesOnly yes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Since you most likely want this account to be your Heroku default run this command:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
heroku accounts:default personal
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next up, it&amp;#8217;s time to make a new account for your client.  In this case because we&amp;#8217;re starting fresh you can use the auto option which will generate an ssh key and modify your .ssh config.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
heroku accounts:add &amp;lt;client&amp;gt; --auto
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It&amp;#8217;s going to ask you for an email and password like the first account add.  In this case you use your client&amp;#8217;s owner email and password.  Once in place you can run Heroku commands as owner.&lt;/p&gt;
&lt;p&gt;Now whenever you want to act on the behalf of the owner you just need to make sure you&amp;#8217;re using the client account such as:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
heroku accounts:set &amp;lt;client&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you want to learn more about the commands this addon has, just ask help:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
heroku help
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The one command that I haven&amp;#8217;t seen that would be nice is a way to see what account you&amp;#8217;re acting as.  I guess if you aren&amp;#8217;t sure you can always use the set command.&lt;/p&gt;
&lt;p&gt;I foresee that I will have to act as owner on several Heroku accounts in the near future.  Having a way to sanely change accounts is going to be vital.  I don&amp;#8217;t think I&amp;#8217;ll be the only person with this situation.  Hope this helps!&lt;/p&gt;</description>
          <pubDate>Tue, 14 Dec 2010 16:59:48 GMT</pubDate>
          <guid>http://martyhaught.com/articles/2010/12/14/managing-multiple-heroku-accounts/</guid>
          <link>http://martyhaught.com/articles/2010/12/14/managing-multiple-heroku-accounts/</link>
        </item>
    
        <item>
          <title>Heroku, Gemsets and Running Older Rails Apps</title>
          <description>&lt;p&gt;For one of my clients, I was asked to take over an older app that is hosted on Heroku.  Because this app still runs on 2.3.5 it needs an older version of Rack than the Heroku gem.  If I wanted to have both the app and the heroku gem play nice along with thin and others, I either need to upgrade Rails or put Heroku somewhere else.  Luckily, &lt;a href=&quot;http://rvm.beginrescueend.com/gemsets/&quot;&gt;rvm gemsets&lt;/a&gt; gave me what seems to be the best solution in an unfortunate situation.&lt;/p&gt; &lt;p&gt;It&amp;#8217;s now my standard practice when getting an older project (especially a rescue) to create a gemset and alias for that app.  Here&amp;#8217;s a quick snippet of the commands I run:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
rvm use ruby-1.8.7-p302 # or whatever ruby version your app uses such as 
rvm gemset create clientapp
rvm alias create clientapp ruby-1.8.7-p302@clientapp

# install all your gems
gem install rails --version 2.3.5 
rake gems:install
...

# make your .rvmrc file 
echo &quot;rvm ruby-1.8.7-p302@clientapp&quot; &amp;gt; .rvmrc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In order to run the heroku commands, you&amp;#8217;ll need to install the heroku gem.  Unfortunately for our project, the heroku gem needed a newer version of rack and one that doesn&amp;#8217;t play nice with Rails 2.3.5, which seems to remain a very popular version of Rails.  Two of my latest projects still run on this.  To get around this I created a Heroku gemset.  My default Ruby is 1.9.2 so I first switch to that:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
rvm use ruby-1.9.2-p0
rvm gemset create heroku
gem install heroku
rvm alias create heroku ruby-1.9.2-p0@heroku
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This isn&amp;#8217;t ideal and if you&amp;#8217;re only using newer versions of Rails and the current Heroku gem doesn&amp;#8217;t create any conflicts then you should be just fine.  I&amp;#8217;ve found a slight annoyance having to switch rvm aliases in order to run heroku commands.  However, I find it more important that I can run the gems that the Rails project needs without letting my local dev setup get in the way.&lt;/p&gt;</description>
          <pubDate>Mon, 13 Dec 2010 11:25:16 GMT</pubDate>
          <guid>http://martyhaught.com/articles/2010/12/13/heroku-gemsets-and-running-older-rails-apps/</guid>
          <link>http://martyhaught.com/articles/2010/12/13/heroku-gemsets-and-running-older-rails-apps/</link>
        </item>
    
        <item>
          <title>Movember 2010 Wrap-up</title>
          <description>&lt;p&gt;Movember is done and I think I did fairly well growing a mustache for the first time.  It turns out my mo grew in very fast and looked pretty good.  I got several compliments on it but most people preferred my clean shaven look.  The itchiness never really set in as I was worried about.  Though I did have a bit around week 3 but it was subtle and easily ignored.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m not sure how much awareness I spread around and my fund raising efforts were so-so at $150.  This isn&amp;#8217;t surprising since I only used twitter and Facebook to solicit donations and only 5 people responded.  I think the fact that many of my friends in the same Twitter/Facebook circles were also doing it and were a bit more aggressive about fund raising.&lt;/p&gt;
&lt;p&gt;Here you can see a photo taken on Nov 29th as well as my progress in photos over the month.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://static.movember.com/uploads/posts/1/14/1449534.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://us.movember.com/mospace/744898/&quot;&gt;Marty&amp;#8217;s Mospace&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I shaved it all off at the end of November 30th much to my wife&amp;#8217;s happiness.  Personally, I was happy to be back to clean shaven.  It was pretty odd to have a mustache.  Drinking was a bit different and I had to be careful after eating to make sure food didn&amp;#8217;t get caught in it.  I think others were right in that my style doesn&amp;#8217;t lend well to having a mo.&lt;/p&gt;
&lt;p&gt;Regardless, I enjoyed the experiment for the month.  I put the chances that I&amp;#8217;ll do this again as incredibly low.  At least there are some pictures to prove it.&lt;/p&gt;</description>
          <pubDate>Fri, 03 Dec 2010 19:51:06 GMT</pubDate>
          <guid>http://martyhaught.com/articles/2010/12/03/movember-2010-wrap-up/</guid>
          <link>http://martyhaught.com/articles/2010/12/03/movember-2010-wrap-up/</link>
        </item>
    
        <item>
          <title>Game Design for Social Interaction</title>
          <description>&lt;p&gt;One of the elements of mountain.rb that was a bit unique for a software conference was the pioneer card game.  I purposely chose to include this game to encourage social interaction, especially among those that didn&amp;#8217;t know each other already.  I wanted to do this in a fun and entertaining way.&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;/images/content/card_spread.png&quot; title=&quot;A spread of cards&quot; alt=&quot;A spread of cards&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When I started planning mountain.rb back in the spring of 2010 I knew I wanted a way to encourage interaction but I wasn&amp;#8217;t sure how I&amp;#8217;d do it.  I settled on doing a game of some sort and after some thought chose a card game.  Having enjoyed playing Magic The Gathering (&lt;span class=&quot;caps&quot;&gt;MTG&lt;/span&gt;) years ago, I liked the trading card game concept and thought that sort of format would work well in a conference setting.  Having something physical was important as it would require people to physically get close and exchange the cards. I always liked the way cards felt in my hands whether they were playing cards or &lt;span class=&quot;caps&quot;&gt;MTG&lt;/span&gt;. I knew I could limit the number of cards and that they would easily fit into our badge holders and thus limit the inconvenience of having to find some place to keep the cards.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/card_storage.png&quot; title=&quot;Attendees storing cards in their badge holders&quot; alt=&quot;Attendees storing cards in their badge holders&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As the conference had a pioneering theme it made narrowing down the game even easier.  I decided to go with a time period from the pioneering days such as the late 1800s.  There were plenty of historical references to give me fodder for the game itself.  I found a local artist that specialized in an old-style of illustration that would perfectly represent the game.  He even put up &lt;a href=&quot;http://blog.campsteve.com/new-art-pioneer-card-game&quot;&gt;examples of the cards on his blog&lt;/a&gt; as the conference started.  Being a fan of games and a modest game designer myself, I relished the thought of trying to engineer a trading card game to meet my goals at the conference.&lt;/p&gt;
&lt;p&gt;Upon registration attendees would get 6 cards along with their other registration materials.  I didn&amp;#8217;t reveal how to play and told everyone to wait until the welcome address.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/registration.png&quot; title=&quot;Registration table with card stacks&quot; alt=&quot;Registration table with card stacks&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I decided to go with a resource-based game where you try to get the highest points.  Since I wanted to facilitate trading, I had to make the cards in each player&amp;#8217;s hand be mediocre and thus force them to trade to improve their score.  One way to accomplish this was to give each player a pioneer type such as Prospector, Cowboy, Trapper and Homesteader.  This way if I gave a cowboy assigned attendee cards better for the other three types, then he&amp;#8217;d want to give away cards that were worthless for him such as an ore vein or mountain to a prospector who would highly value those cards.  In return the prospector may have a few cards valuable to the cowboy such as cattle or plains.  To keep people from changing pioneer type, I put their type on their badge.  To make logistics simpler, I had 4 different badge types that were blank.  This way when you registered you used a sharpie to write your name on the badge (and whatever else you wanted).  Trying to line up printed names on 4 different badge types seemed like a lot of work.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/badge.png&quot; title=&quot;A cowboy badge&quot; alt=&quot;A cowboy badge&quot; /&gt;&lt;/p&gt;
&lt;p&gt;One of the cornerstones to the game was creating a card economy by making cheaper cards more available while higher point cards were less common.  This was done so that those with high point cards would be careful in how their traded their cards and that they might be able to get a few high points cards along with low point ones.  They might also try to trade a high point card with a low point card for two medium point cards.   My goal in all this was to get people trading and it worked.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/trading1.png&quot; title=&quot;Attendees trading cards&quot; alt=&quot;Attendees trading cards&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The game wasn&amp;#8217;t truly balanced as some attendees had no interest in playing and simply gave their cards to their friends.  This gave the friend many more cards and he could essentially discard the low valued ones.  However, there was no easy solution to fix this and ultimately it didn&amp;#8217;t keep most attendees from interacting and trading.&lt;/p&gt;
&lt;p&gt;While I had the general design of the game worked out in my head for months, I actually didn&amp;#8217;t finalize the scoring system until the night before the conference.  As the sole organizer I simply had too much on my plate and I felt confident I could pull it off with a couple hours of focused design.  You can read the simple rules here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://mountainrb.com/cardgame&quot;&gt;Game Rules&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In game design there&amp;#8217;s a delicate balance between a fun challenge and being overly complex.  I wanted to keep the game fairly straight forward and easy to score but still compelling to play. There was even a touch of realism in the kinds of cards you would want based on your type.  This should make the game intuitive to play.  Unfortunately, since I ran out of time generating the rules, I wasn&amp;#8217;t able to finely tune them with play testing.  But this is fine as I really just wanted people to interact.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/trading2.png&quot; title=&quot;Attendees trading cards&quot; alt=&quot;Attendees trading cards&quot; /&gt;&lt;/p&gt;
&lt;p&gt;One of the problems with my last minute scoring system was that there were some logical flaws in the rules.  Homesteaders had an unfair advantage to the other pioneers since having an Ox would double their beast of burden points if used on the plains. This allowed a 6 point ox to be worth 12, higher than any other single card out there. I did realize this as the game was being played and even asked if the audience found the flaw.  Other flaws were exposed in the rules, which were not always clear.  For instance, the rules didn&amp;#8217;t explicitly state you needed to have resources or a tool to get resource points even though this is the spirit of the game.  You could essentially have all six beasts of burdens such as a homesteader with 5 oxen and 1 plains.  This is why you play test as you&amp;#8217;ll discover people building decks that violate the spirit of the game.  Once you learn this you clarify the rules and continue to play test.  Since this was a &amp;#8216;lite&amp;#8217; game I didn&amp;#8217;t stress too much about these issues and just let people play the game.&lt;/p&gt;
&lt;p&gt;I also turned some of these lemons into lemonade as best as i could.  I originally had wanted to write a scoring app or some other way to calculate the winners.  Instead I challenged attendees to write one themselves and share it.  This would get them writing code and collaborating with others to do the work that I didn&amp;#8217;t have time to do.  On the last day of the conference, I asked those to show off their work on stage.  One group came up with an app for finding cards to trade for.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/app.png&quot; title=&quot;Showing off app for trading cards&quot; alt=&quot;Showing off app for trading cards&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Instead of making the game purely about points, I allowed other objectives such as having the worst deck for your type but with valuable cards in general.  I also asked others to alternatively tell a story with their cards.  Towards the end of the conference I invited people to the stage to show off their decks, share their stories and show off their apps.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/content/deck_display.png&quot; title=&quot;Displaying cards&quot; alt=&quot;Displaying cards&quot; /&gt;&lt;/p&gt;
&lt;p&gt;All in all I thought the game was a success and well-received.  Clearly this sort of thing isn&amp;#8217;t for everyone.  Many who come to a conference are not interested in playing a game and simply want to watch the sessions.  Some were fine giving away their cards which created an imbalance in valuable cards for the player with two decks.&lt;/p&gt;
&lt;p&gt;Since my main goal was to get people trading cards and having a good time, I think it worked well, warts and all.  I think it&amp;#8217;s good to take risks and try new things, even if they don&amp;#8217;t always work.  There&amp;#8217;s no need for a software conference to be like all the others and border on uninspiring.  I know I&amp;#8217;d like to do a different game/activity with the next conference I organize.  We&amp;#8217;ll see how that plays out.&lt;/p&gt;</description>
          <pubDate>Mon, 29 Nov 2010 21:00:32 GMT</pubDate>
          <guid>http://martyhaught.com/articles/2010/11/29/game-design-for-social-interaction/</guid>
          <link>http://martyhaught.com/articles/2010/11/29/game-design-for-social-interaction/</link>
        </item>
    
        <item>
          <title>Movember</title>
          <description>&lt;p&gt;After some encouragement from some of my fellow programmers, I decided to do &lt;a href=&quot;http://us.movember.com/about/&quot;&gt;Movember&lt;/a&gt;.  For those of you not familiar with it, it&amp;#8217;s a month where the men participating start clean shaven on November 1st and grow a mustache for the month of November.  They do this to raise awareness and money for men&amp;#8217;s cancer research.  I&amp;#8217;m joining an existing team, &lt;a href=&quot;http://twitter.com/#!/geekswithballs&quot;&gt;GeekWithBalls&lt;/a&gt;, that is comprised of many fellow programmers from the Ruby community.  I&amp;#8217;ve never grown a &amp;#8216;Mo&amp;#8217; as they call them so this should be interesting.  I am prepared to be sufficiently embarrassed but I&amp;#8217;m happy to do it for a good cause.  If you see me, please come up and talk to me about it.&lt;/p&gt;
&lt;p&gt;Oh, and you can check out my progress here as well as make a donation for my effort: &lt;a href=&quot;http://us.movember.com/mospace/744898/&quot;&gt;My movember page&lt;/a&gt;.  I&amp;#8217;ll upload my starting picture on Sunday.&lt;/p&gt;</description>
          <pubDate>Thu, 28 Oct 2010 17:16:23 GMT</pubDate>
          <guid>http://martyhaught.com/articles/2010/10/28/movember/</guid>
          <link>http://martyhaught.com/articles/2010/10/28/movember/</link>
        </item>
    
    
  </channel>
</rss>


