RSS

GIT-TFS Instruction: Add Directory to Your Path?

Spoiler Alert: You can find the answer here.

We use TFS at work.

Because I believe git could be a great solution for a workflow challenge we’re having on one of the accounts I was just assigned to, I decided to experiment with git-tfs.

Here are the installation instructions from the gittfs github repository:

image

I understand that many C# developers came from Java, thus had to get VERY familiar with instructions like, “Add the directory that contains git-tfs.exe to your path,” but I feel compelled to mention it is a pretty big road blocker to someone who has never seen or had to do that .

Just a Windows Girl Livin’ in a GUI World

Ok, that was an ode to Jon Skeet’s “Glee” Pecha Kucha Codemash 2012 “Don’t Stop Believing” ending, but if you can relate to that header, I wanted to share a link I found interesting. A Brief History of UNIX is a great Unix 101 for Windows devs, with examples that do a good job of providing reference comparisons.

But back to the point of this post: I came from Mac (way back) to Windows. I am not familiar with UNIX environments. I launch installers to get programs to run from my machine. Yes, I’ve been spoiled, and it’s been quite lovely, but I’m now really trying to embrace this unfamiliar command-line environment territory, and that little assumption that I knew what it meant to add a directory to my path made me lose a day I could have been actually experimenting with git-tfs, instead of trying to understand how to just get git tfs commands not to say “not found.”

Am I trying to bag on the author of Git-tfs?
Not at all – it’s just where I hit a roadblock, so I’m using it as an example.

In their defense, should I have “just known” how to do that?
Maybe. I‘ve just never had to know for anything. That’s all. Now I’m aware.

Have I ever done it before?
No.

If I’ve never done it before, is it possible others might hit the same roadblock?
Maybe, that’s why I’m writing this post.

Did I get pissed when my Google search returned multiple results saying stuff like, “just add it to your path – that’s so trivial” without explanation of HOW do actually do it?
Yes. (Isn’t everything “trivial” once you know how to do it? Sheesh. Any reply that answers with how trivial the answer is, is a friggin’ @sshole response, btw, and an attitude I haven’t seen in the c# world – what’s up with that?)

Am I trying to make the author do crazy, explicit documentation? Not necessarily, although James Yu made some great points in his post on Designing Great API Docs.

In this case, a simple hyperlink to something like How to set the path in Windows 7 (great article with interesting info btw!) could have meant the difference between someone bringing Git to work to use it with their TFS environment & abandoning it altogether (because the one day their schedule allowed for them to actually try to use it was spent banging their head against a wall because of an installation instruction assumption).

The Curse of Knowledge

If you’re not familiar with The Curse of Knowledge, @tomjohnson did a great job summarizing it in a context developers can relate to when he posted, “The more you know an application, the better poised you are to write a good help file. But the more you know an application, the more familiar you are with it, and so you are less likely to write a good help file.

To all of you wonderful people paving the way for the rest of us – yes you with the UNIX backgrounds that make command-line so intuitive to you, please, please go easy on us =)

Git was initially designed and developed for Linux. By bringing it to Windows, command-line-and-all, with it you are bootstrapping your own Curse of Knowledge.

I suspect I’m not the only one for whom Git is acting as the gateway to cross that command-line & deeper-OS-internals-understanding threshold. Please just take a moment to think about instructions that are atypical for those of us who are used to programs “just working,” post-install.

 
8 Comments

Posted by on February 7, 2012 in Nerd

 

Programming & Barriers to Entry: More Thoughts

I’ve never seen a turnout at Dallas Hack Club like this past Tuesday night. What an awesome & diverse group of developers. Pairing languages included Ruby & C#, and even an F# & a (first time at Hack club) SmallTalk pairing.

13ghf73lds

As fascinating as Hack Club Meetings always are, the different languages made the demos even more fascinating (after coding for a couple of hours, each pair demos their approach/solution). One demo was done in a SmallTalk IDE (because, as we learned, Smalltalk doesn’t lend itself to pasting code into Gist or Pastebin for the demos, like the other languages).  Although I’ve heard Smalltalk mentioned in reference to someone’s programming past, or citing parts of its historical influences, I’d never seen Smalltalk syntax or the Smalltalk IDE before. Super-interesting.

My first dip into Ruby

I have a “What’s this Ruby thing all about” itch I’m trying to scratch, but I clearly could not even think about pairing in it at this stage, so when I arrived, I asked Greg Vaughn if I could play 3rd wheel & watch him pair while I tried to wrap my head around it.

I decided to install Ruby. Here’s how that went down:

Thoughts in my head (be sure to read it with a big echo): “Didn’t I see a Tweet from @AlanStevens that he used Chocolately to install Ruby? I’ve been meaning to catch a session on Chocolatey.. isn’t it supposed to be like NuGet for your Windows OS? I wish I hadn’t missed that session at Codemash – I wonder if it was taped? I really need to listen to that Herding Code about Chocolatey. Hrm. I’ll look into that

Me: “Has anyone used Chocolately? How do you install it?”

Another Hack Club attendee: “I think through NuGet

My echoey thoughts: “Through Nuget? Do I have to create a project to install Chocolatey then? That’s how I access the non-command-line NuGet.. hrm, let me try that. Ooh getting that code smell I’m going down the wrong rabbit hole… back up, just do the installer. Ok, that was easy. It says it’s installed. Ok… ummmm

Me: “So, now what? How do I run it or open it?

Wow, that was a REALLY hard question to say out loud. This clueless person I’m projecting is NOT a persona in my comfort zone.

Greg Vaughn: “What IDE do you like?

Me: “Visual Studio.

Greg: “I think there’s an extension for Ruby

So we floundered through that for a few minutes before someone recommended the 30-day trial of RubyMine by JetBrains. So I installed RubyMine, went to the HackClub dropbox & opened Greg’s “rover.rb” file. During this time, I asked Greg many questions to get my head around all of it.

Me: “Um ok, now what? I hit the little green “play” button in RubyMine & it said no errors.

Greg: “Oh the only output you’ll see is from the tests. Go to command line & browse to the folder & type “rspec rover.rb.

Me: “It says rspec is missing. Did you copy all the files up to the dropbox?

Greg: “It’s a (Ruby) Gem. You have to install it. Go to command line & type, ‘gem install rspec’

My echoey thoughts: “Wow, that was easy. Seriously, that’s all I had to type? Interesting. Hrm. this is taking a while though.

Me: “It’s just sitting there.”

~4 different Ruby devs: “Yes, it just sits there & takes a while sometimes.”

My echoey thoughts: “Ok, it’s done. I’ll try the ‘rspec rover.rb’ command again.”.

Me: “Greg, it seems to have run this time, but I don’t’ see any results.

Greg: “You have to add –f d for ‘full debug.’ That runs test and prints full test results, instead of just the ones that failed. Hold on. I’ll add an .rspec file with that in there.

Me: “Ok, \? isn’t working. How would I figure out what switches to use on my own?

Greg: “Ruby came from Linux. They use -–help. \? won’t work.’”

My echoey thought: “Seriously? WTH. Why am I doing this to myself? Hrm. I didn’t come from command line anyway. Maybe this is normal or maybe I’ll have LESS baggage as a result? Let’s see how this plays out.

Greg: “There. I added the .rspec file so just run ‘rspec rover.rb’ again.

So of course, I had to open the file to see what was in it because I was curious. It was just called .rspec. Lo & behold, it was literally just a text file that had “-f d” in it. (I then inquired on what the .idea folder was that had 7 files in it, including a .name file, an .iml file & 5 .xml files, and was told that was a RubyMine thing.)

The rest of the time was spent looking at the Ruby syntax for a while, before moving a row back to look at the CoffeeScript kata Matt Florence had done but I hadn’t run because when he tweeted this gist a few days prior, this is what happened to me:

My echoey thought: “What is a gist? Oh It’s on Github. I must need to pull it down with command line [barrier to entry - red flag]”

It turns out Gist is really just a good online clipboard to paste & share code, much like pastebin, but I didn’t know that before Tuesday’s Hack Club. I clicked on it anyway & was greeted with these comments at the top of the gist:


# node, jasmine, coffeescript, and rake installed/configured using 

# steps outlined at this website:

# http://brizzled.clapper.org/id/117/index.html

 

# gem install guard

# gem install guard-shell

# guard init

# then put the following in GuardFile

# guard :shell do

#   watch('.*') {`rake`}

# end

My echoey thought: “? ? ?

I then listened to some Ruby devs discussing one of their real-world problems at work that had to do with the best way to parse an xml file or a dom in Ruby. We all have those questions. Yay.

Some Perception Changes:

The great responses on my previous post made me take a harder look at the many, many Macs in the room. I think all but Greg’s were actually running Windows. I had no idea.

Working through the initial, intimidating Ruby install with people around me who could help guide me through enabled me to feel like now I actually could run Matt’s sample with the comment instructions pasted above. Progress!

One More Surprising Finding

Someone I haven’t talked about is Greg’s Ruby pairing partner, Richard. (All I know about him is his first name because he’s not on Twitter =P) His story was quite interesting. The reason he got into programming Ruby was to become a better software tester. Wow! I’ve known testers who learned a bit of SQL for DB testing, but never any who learned a programming language for software testing.

That kind of blew my mind, to be honest. It made me really think about the people I love to work with the most. Then it made me think of people I’ve enjoyed working with the least, and remembered a Business Analyst I used to have to pull data for ALL THE TIME because she refused to learn anything other than Excel (“if they’re not paying for it, I’m not learning it” – seriously? Even if it can make your life better & you can stop making others write queries & create exports for you? Sigh.). She’s the reason I learned in ~2002 there was a 65,000 row limit in a single Excel Worksheet. No one should have to know there’s a 65,000 row limit in Excel.

Mad props to Richard for stretching so far beyond just learning standard QA tools to the extent that he’s actually attending Dallas Hack Club to practice Ruby & do code katas. How inspiring & very cool.   

Quick Note on Git & Command Line

Tonight (Thursday after the Tuesday Hack Club meeting), I was able to attend David O’Hara’s talk on Git at Dallas C# SIG, and I have to say, it was very compelling. He did an excellent job of thoroughly explaining Git fundamentals & concepts. Fortunately, Shawn Weisfeld was there taping it, so I’ll update this post with a link to David’s talk when it’s posted to UserGroup.TV.

Watching how fast David FLEW through that console was impressive, but his enthusiasm for Git was inspiring. Watching someone who’s as great at public speaking as David is always fun, but seeing great speakers talk about a topic they’re passionate about is a pure joy. He seriously LOVES Git.

I can honestly say I’m starting to feel less… I don’t know if intimidated is the right word… much less repulsed by command line after this week’s meetings than I ever have before.  When I got home, I then got into a discussion with my husband about how he felt the same way about command line years ago, until he had to learn Unix for his job & even his eyes lit up talking about how much he just loves it & feels at home in it.            

Exposure & Opportunities

Mike(@moran742)’s message in response to my Programming: Barriers to Entry post really resonated with me. He said, “So what do you need? An inquisitive mind, discipline, and the willingness to experiment.

Different people learn in different ways. There’s nothing I love more than to be surrounded by people who know more than I know. The exposure to amazing, diverse & knowledgeable people who are so very helpful that the tech community makes available is incredible.

Learning that it’s ok not to know everything is powerful. Discovering the support in the Tech Community for those who try is motivating. Although I’m sure it would take me working in these technologies for my job to become prolific, I’m surprised at how fast I *am* warming up to & feeling comfortable with these areas that I’ve avoided for so long. In a few hours, I went from, “whoa no way” to “I could / I can.” Who knew Embracing the Uncomfortable could be so interesting, fun, AND rewarding? But for now, I will put my full, swollen brain to sleep. It needs to digest this stuff & prepare for more.

And that, my liege, is how we know the earth to be banana shaped. –Sir Bedevere

imageimage

 
6 Comments

Posted by on February 1, 2012 in Nerd

 

My Daughter’s First User Group Meeting

When I received this email yesterday from Todd Stone, who runs the Dallas .NET Micro User Group, I called my husband to ask for his support picking up our 5yo so I could take Katelyn, our 8yo, to this meeting:

Agenda:

  • Shawn Weisfeld will demo a robot he built with Robotics Studio and a Kinect
  • Harold Pulcher will present our Electronics 101 topic on Capacitors
  • Hands-on coding time

Read the rest of this entry »

 
 

Programming & Barriers to Entry

I was thinking about how hard it is to get into various aspects of programming, and wondering why. I decided to jot a few of my own perceptions & personal hang-ups because I’m curious if these are common. 

Command Line Environments

I think of command-line as a necessary evil. Buy why? Breaking it down, I’m a programmer. I write code. In a sense, can’t you kind of think of what I do as a huge, compiled command-line environment (it’s a bit of a stretch, but bear with me for analogy sake)?

So why the aversion? I think I finally figured it out. Intellisense (or lack thereof).  Ctrl-spacebar is my friend. It’s what I’ve grown to love. Typing /?—>enter—>up-arrow—>space—>command-I-really-need is a bit of a PITA. It feels like a clunky waste of time.

Maybe my problem is that the majority of my command line experience has happened in the start—>run—>cmd window, which has caused me to think of it as a necessary evil? Is there a better environment? I don’t know. I haven’t had to know.

Maybe my problem is that because I started as a web dev, I never had to embrace creating a “quick & dirty” console app to try stuff out because I always had some test page with c# code-behind available as a test bed? Creating an API magically made me MUCH more tolerant of consuming APIs. Maybe the same would happen if I had grown up using console apps as my test beds?

Maybe my problem is that I just don’t think the command-line way? Caleb Jenkins swears by SmartGit. Maybe our brains just work like that (preferring nice ux experiences over command line experiences). Is it a trained thing? Is it something you just get used to & start thinking that way after practice? I don’t know.

What I DO know is that I’m now realizing my aversion has affected my enthusiasm to expand my horizons in certain areas. I’ve never tried Git. I’ve never pulled from GitHub. This is something I’d be perfectly fine with (we don’t use anything command-line at work), if it weren’t for 2 things: 1. the unabashed enthusiasm for Git in the programmer community (especially around open source), and 2. my belief that learning different approaches / languages / implementations / tools expands comprehension.

Ruby

Macs. That’s what I relate to Ruby. This is a HUGE barrier to entry for me because I don’t have a Mac, and I don’t see myself getting a Mac.

Don’t get me wrong – I have nothing against them. Macs are awesome. I came from a Mac. I bought a PowerMac when I started my graphics career in Photoshop WAY back in the day, but holy COW they’re expensive, and I have a family. I don’t see Mac ownership in my future, and my impression is that Ruby is written on a Mac.

“But surely you’ve HEARD that Ruby CAN run on Windows?”

Sure, I’ve heard that. But have you ever been around Ruby communities? I’ve seen a LOT of Ruby devs at Dallas Hack Club & CodeMash. Let me put that differently. I was one of the only devs in the room on a PC more than once. Macs. Everywhere. Barrier to entry in my mind.

Vim

From vim.org: “Vim is a highly configurable text editor built to enable efficient text editing.”

I LOVE what Visual Studio does for me to make me more efficient & resourceful without having to rtfm. It seems like 200 steps backward & zero steps forward to me, in terms of productivity potential.

Why in the world would I want to write code in notepad? That is all.

What is this ”Dallas Hack Club” you speak of?

Improving Enterprises sponsors a cool, not-your-run-of-the-mill user group meeting called Dallas Hack Club. In a nutshell, I’d say 12 to 20 programmers, on average, show up once a month to pair on a kata. It doesn’t matter what language you pair in as long as you & your partner are using the same language. I’ve paired in c# & JavaScript. Many (most) pair on their Macs in Ruby.

In my experience, it’s the scariest room EVER to walk in to for the first time (especially when you’re not even familiar with testing because that’s not something supported by your place of employment) but also the most rewarding. Not only have I found it to be delightfully mind-expanding, but the guys who run it (Matt Florence & Amir Rajan, creators of NSpec) are unbelievably helpful, open-minded & brilliant. Here’s a good example of their attitudes (they’re both this awesome):

image

Tweets that Caused this Post

image

I’ll be honest. I ignored Amir’s first Tweet, thinking Amir mistakenly directed it at me, as I’m not a Ruby dev.

After the 2nd one, I sent him this private DM (because God forbid I admit my ignorance like that in public haha):

image

Ruby for windows will work just fine? I’ve never heard anyone say that. Aww crap. I’m comfortable with not knowing all technologies. I have enough to learn around my c#-centric web stack bubble. Sure I want to learn more. I live to learn more, but I have PLENTY to learn without taking an interest in this perceived mac-environment language. 

“Embrace the Uncomfortable”

#3 from the “12 Resolutions for Programmers” that was going around Twitter this holiday season has really stuck with me. “Embrace the Uncomfortable.” I really, really like that one. There are so many barriers to entry in programming, that insecurities magnify to the nth degree. Every time I’ve thought of that line of advice during a crossroads, it has helped me to feel more empowered to make the harder decision, almost as if it’s a mission statement that gives me purpose for not retreating into competence.

Conclusion

I don’t really have a point (hence the weak section header), other than to expose some of my own perceptions & hope to be proven wrong =). I really enjoy stretching my mind around different paradigms. It helps my troubleshooting / problem solving skills & expands my tool belt.

Although I can definitively say I will not be choosing Ruby (or probably even coffeescript) to pair in at THIS Tuesday’s meeting, I can assure you I will be paying much more attention to, and asking more questions around “Why Ruby?”

And who knows, maybe one of my future posts will be on, “Why I chose Ruby to solve this business problem.” …or if nothing else, we might convince someone (Amir?) to submit a precompiler talk next year for Codemash entitled “A Ruby primer for C# Devs: Yes, you CAN do it on Windows.”

 
8 Comments

Posted by on January 25, 2012 in Nerd

 

Let the Learnings Ensue

Please forgive any lack of clarity, a I am posting this at 1:45am.

I was asked to implement caching on a project today. At my work, it has historically been our lead architect who has implemented caching across projects, so I was happy to get a new task.

So I cracked open his code (like ya do) & copied out something similar to this;

public List<City> GetActiveCities() {

string cacheKey = “GetCities”;
List<City> retVal = CacheManager.Get(cacheKey) as List<City>;
if (retVal == null) {
lock (__cacheLockGetActiveCities) {
retVal = CacheManager.Get(cacheKey) as List<City>;
if (retVal == null) {
retVal = _dbServices.GetActiveCities();
CacheManager.Insert(cacheKey, retVal, _cacheLengthInSeconds);
}
}
}
return retVal;
}

After the 3rd time I copied/pasted/modified this, I wanted to pull it out and leave less room for careless copy/paste mistakes.

Read the rest of this entry »

 
8 Comments

Posted by on January 18, 2012 in Nerd

 

Meeting Influencers AKA the Starstuck Syndrome

If you’ve read some of my previous posts (like this one or this one or this one), you already know I exemplify, “You can’t spell Geek without ‘ee’.”

Although I never understood worshipping “celebrities” (like the Hollywood kind), meeting someone in person whose work, efforts or brilliance have made a difference in my life or to my path is an exciting honor that I admittedly don’t try to contain my enthusiasm for the first time I meet them.

The day after I got home from CodeMash 2012 (most amazing conference ever), a blog post by Evan Cummings and its ensuing Twitter thread made me ask my family for a Pomodoro (although it’s taking WAY more than just one) to blog my 2 cents:

image

Read the rest of this entry »

 
2 Comments

Posted by on January 18, 2012 in Learning, Nerd, Passion, Programming

 

My Week at //build/ Part 3

My apologies for this long-overdue wrap-up, but last quarter became really crazy. Not only did we move the family, but we got the very sad news that my father-in-law was in a fatal car accident & have been dealing with his affairs.

Because a picture says a thousand words, I’ve posted my pictures from //build/ to an album on my SkyDrive

As you can see from the pictures, I met amazing people from the tech community: Thought leaders; People I knew from Twitter; Podcasters; Speakers… so many passionate people who love what they do.

For me, //build/ was truly an experience & opportunity of a lifetime, and words cannot express how grateful I am that I was able to attend. I sincerely hope I never lose this feeling of awe & appreciation for events like this.

Read the rest of this entry »

 
1 Comment

Posted by on January 17, 2012 in Nerd, Parent, Passion, Programming

 

2011 in review

Wow, very cool stats by WordPress! Check out the WordPress.com stats 2011 annual report they made available for my first year with a blog:

Here’s an excerpt:

A New York City subway train holds 1,200 people. This blog was viewed about 6,600 times in 2011. If it were a NYC subway train, it would take about 6 trips to carry that many people.

Click here to see the complete report.

 
Leave a comment

Posted by on January 1, 2012 in Blogging, Nerd, Summary, Year in Review

 

My Week at //build/ Part 2

An interesting thing happened to me this week. A coworker came to my desk JAZZED UP. He told me he had read Part 1 & could feel my excitement through my post. It’s incredibly fun to be told what resonates with people. He told me he could totally identify with my description of dreaming to go to a big conference & going all the way up to the checkout step before bailing. He shared that he actually did that for the big JQuery conference that happened this weekend. It’s funny how long these take to write, but how worth it a reaction like that can make it.

In part 2, I’ll stick to the first day of the conference. It was so eventful I’m breaking it into its own blog post to try to keep the length of each one of these reasonable, so here it goes:

Read the rest of this entry »

 
1 Comment

Posted by on October 3, 2011 in ASP.NET, C#, Learning, Metro UI, Nerd, Passion, REST, Xaml

 

Tags: , , , ,

How to change IIS Express SSL port without WebMatrix

 

If you’ve ever had the displeasure of installing a fake SSL cert into localhost on your development box, you know why this property made me run from Cassini to IIS Express without looking back:

image

 

Read the rest of this entry »

 
5 Comments

Posted by on September 30, 2011 in Nerd