About Me

Training

Nothin But .Net Developer Bootcamp

Navigation

Search

Categories

On this page

The fallacy of the standardized developer machine/image
RubyMine on Windows 7
Streamlining a GIT Push
Running Things between multiple machines while maintaining the database
Course Cancellations/Switches
Useful VS Key Sequences/Shortcuts
How Wise Are You Being With Your Work Time?
Are You Missing Your Accessor Keys (TortoiseSVN)
Calgary NBDN Scholarship Recipient Chosen

Archive

Blogroll

 Agile Developer Venkat's Blog
 Ayende @ Blog
 B#
 Barry Gervin's Software Architecture Perspectives
 Boy Meets World
 Brad Abrams
 Canadian Developers
 Christopher Steen
 Claritude Software News
 Clemens Vasters: Enterprise Development and Alien Abductions
 Coding Horror
 Coding in an Igloo
 Dare Obasanjo aka Carnage4Life
 Darrell Norton's Blog [MVP]
 David Hayden [MVP C#]
 Don Box's Spoutlet
 Eric Gunnerson's C# Compendium
 EZWeb guy: Jeffrey Palermo [C# MVP]
 Fear and Loathing
 Generalities & Details: Adventures in the High-tech Underbelly
 Greg Young [MVP]
 Greg's Cool [Insert Clever Name] of the Day
 IanG on Tap
 Ingo Rammer's Weblog
 ISerializable - Roy Osherove's Blog
 James Kovacs' Weblog
 Jason Haley
 Jean-Luc David
 Jeremy D. Miller -- The Shade Tree Developer
 JetBrains .NET Tools Blog
 Jimmy Nilsson's weblog
 John Bristowe's Weblog
 John Papa [MVP C#]
 Jon Skeet's Coding Blog
 JonGalloway.ToString()
 Jump the Fence or Walk Around
 Lambda the Ultimate - Programming Languages Weblog
 Larkware News
 Lutz Roeder
 Marquee de Sells: Chris's insight outlet
 Martin Fowler's Bliki
 Mike Nichols - SonOfNun Technology
 MSDN Magazine - .NET Matters
 MSDN Magazine - All Articles
 OdeToCode Blogs
 Onion Blog
 Planet TW
 Raymond Lewallen [MVP]
 Rockford Lhotka
 RodMan's Corner
 Roger Johansson's blog
 Sahil Malik - blah.winsmarts.com
 Sam Gentile's Blog
 Scott Bellware [MVP]
 Scott Hanselman's Computer Zen
 ScottGu's Blog
 secretGeek
 Service Station, by Aaron Skonnard
 Signum sine tinnitu--by Guy Kawasaki
 Stephen Toub
 Steve Eichert's Blog
 Steven Rockarts
 The Blog Ride
 The Coding Hillbilly
 The Daily WTF
 TheServerSide.net: News
 Tim Gifford
 Vance Morrison's Weblog
 you've been HAACKED

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

RSS 2.0 | Atom 1.0 | CDF

Send mail to the author(s) E-mail

Total Posts: 477
This Year: 47
This Month: 2
This Week: 4
Comments: 1344

 Thursday, July 02, 2009
Thursday, July 02, 2009 2:00:00 PM (Mountain Standard Time, UTC-07:00) ( Tools )

One of the discussions that comes up with a lot with other developers that I talk with is the question of "How productive I would be if I were not able to use the tools/frameworks that I use to make me a much more productive software developer." The basis answers is: "much less". Having worked in environments where people can be forced to use "standardized" developer images with a common toolset that give no room for individual customization, I can tell you that the observations I have made are a couple of the following:

-Unwilling acceptance of substandard tooling to get the job done
-Potential ,in reality very often often, loss of individual developer productivity
-Developer frustration on a daily basis with the "policing" rules that are in place
......

I stopped the list short as it can really go on and on.

The reason that the standardized developer machine cannot work is that every developer "wields their lightsaber differently". The tools and customizations that I have made to my machine are the steps I have taken that allow "me" to achieve great levels of productivity. I have to stress these are the tools that make me productive. They make me productive because I know how to use them, I have taken the time to hone my ability to use them. I can't expect that another developer who comes onto my machine would be as productive if they were not familiar with the tools/techniques.

Of course if I were to bring another developer to pair with me on my machine and they were not proficient in using these tools, they would be just as unproductive (initially). It is more likely that they have a set of tools/customizations that they have made to their machine that allows them to work extremely effectively. The point is that they are able to make the modifications to their individual machine that allows them to become more productive.

What are your thoughts on approaches to machine/software configurations in teams?

Develop With Passion!!

Comments [2] | | # 
 Wednesday, July 01, 2009
Wednesday, July 01, 2009 2:00:00 PM (Mountain Standard Time, UTC-07:00) ( Ruby | Tools )

Since I moved everything over to Windows 7 the last program that I had not yet installed was RubyMine (JetBrains awesome IDE for Ruby coders). After I completed my installation I fired up the program and was presented with a great exception dialog:

image

A quick search proved that the issue is with some settings in the idea properties file:

# path to IDEA config folder. Make sure you're using forward slashes
idea.config.path=${user.home}/.RubyMine10/config

# path to IDEA system folder. Make sure you're using forward slashes
idea.system.path=${user.home}/.RubyMine10/system

# path to user installed plugins folder. Make sure you're using forward slashes
idea.plugins.path=${user.home}/.RubyMine10/config/plugins
(on my system in : C:\Users\Jean-Paul Boodhoo\.RubyMine10

More specifically, RubyMine was not able to write to those folders as they were marked as readonly after install. I quickly changed the folder permissions and RubyMine was able to start up with no problems.

Develop With Passion!!

Comments [3] | | # 
 Tuesday, June 30, 2009
Tuesday, June 30, 2009 2:00:00 PM (Mountain Standard Time, UTC-07:00) ( git | Tools )

So you are using git you've done some work on your branch, everything is committed and you want to do a push to a remote repository. If you have used simple defaults to configure your repository then it is very possible that you will receive this message when you attempt to do a git push without any arguments:

image

The reason for this is because by default git tries to push all matching refspecs which is not usually what you want to do. There are a couple of places you can configure this if you do not want to receive this message. You can configure this at a repository level by running the following command from the shell (in the repository folder):

git config push.default [setting]

Where [setting] is one of the following values:

- nothing
- matching
- tracking
- current

Currently the setting that I find myself using the most is current. By setting this setting it allows me to do a push by simply running git push without any arguments.

Of course, if this is your default then you can create a fallback setting in your .gitconfig file that will be used in the event that a repository you are working in has not got a push.default configured. To do this just add the following entry into your .gitconfig file:

[push]
  default = current

This ensures that if you happen to be working in a repository that does not explicitly have push.default set, then when you do a push without any arguments it will not attempt to push all matching branches, only the current branch you are working on.

Develop With Passion!!

Comments [0] | | # 
 Monday, June 29, 2009
Monday, June 29, 2009 2:00:00 PM (Mountain Standard Time, UTC-07:00) ( Tools )

Since I use virtual machines very extensively (thanks Terry) it is pretty important for me to be able to drop onto a new machine and be able to launch my main VM's and be able to carry on working. I have recently moved my vm's onto an external hard drive, so I can literally jump onto a new machine install  VMWare Fusion / Workstation and I'm good to go.

Unfortunately some of the other programs that I like to install on the host os (Mac) are:

-QuickSilver
-Things
-ITunes

Up until now I had not taken the time to figure out how to get Things running between different machines. If you go to the following URL you can see how to make Things work between multiple computers:

Syncing Things on multiple computers

Armed with this information I just copy the entire Things database onto the external drive that I place my virtual machines on:

Picture 1 

I also make sure to copy the things app onto the external hard drive so that I can quickly copy it into the applications folder on the target machine. With this configuration I can flip between my Mac Pro and MacBook Pro, having both of them using the same Things database without any issue.

Develop With Passion

Comments [0] | | # 
 Friday, June 26, 2009
Friday, June 26, 2009 10:51:00 PM (Mountain Standard Time, UTC-07:00) ( Training )

Something that has happened more that I would like for this year is the cancellation and switching around of courses due to low interest levels in cities that previously expressed interest.

Due to low interest there are going to be courses that are cancelled completely as well as some that are going to be swapped out with replacements for new cities that have got in contact.

Currently the New York Course (October 12th 2009) is being replaced with a course in Nashville. My apologies go out to the people (ok, person!!) who registered. Also, if the numbers for the Orlando course do not pick up by the middle of July then that course will be completely cancelled.

I apologize to anyone for any inconvenience this may cause.

Develop With Passion

Comments [3] | | # 
Friday, June 26, 2009 6:51:00 PM (Mountain Standard Time, UTC-07:00) ( Mouseless Computing | Productivity )

Whether you are a fan of mouseless computing or not, most people reading this blog are .Net developers and that means that a lot of you spend a considerable amount of time in Visual Studio. There are common key-sequences and shortcuts that you can use inside of studio that allow you to keep the context switching from keyboard to mouse at a minimum. I am going to make a note of showing both the accessor sequence and the appropriate shortcut (if it has one). I am a big fan of accessor key traversal for several reasons:

  • your muscle memory will kick in after a handful of times of performing the traversal
  • accessor traversal is something that you can do easily in any windows application (unless it does not provide accessor keys!!) and this can allow you to use the application proficiently with the keyboard without having to commit a new set of shortcuts to memory.
  • in lots of applications the shortcuts consist of a combination of the CTRL key and/or function keys. I don't love having to reach for the function keys as they move me too far from home row (yes I’m a home row nut). With accessor traversal I can keep my fingers on home row and accomplish the exact same tasks!!

One caveat to note about accessor traversal is that as new menus are added you may have to press the first and or second key more than once if there are other menus with the same accessor key in them. Again, this is something you can adapt to quickly!!

Here is the short list of the ones I use the most day to day ( I am excluding the ReSharper accessors):

 

Action Accessor Traversal Shortcut
  Hit the ALT Key and then follow with the key sequence  
Open a project/solution FOP CTRL+SHIFT+O
Add a new project FDN  
Add a new website FDW  
Add existing project FDE  
Add existing website FDB  
Show all files in project PO  
Add a project reference PR  
Cycle backwards through reference dialog tab (standard windows shortcut)   CTRL+SHIFT+TAB
Cycle forwards through reference dialog tabs (standard windows shortcut)   CTRL+TAB
Add a new folder to project/solution PD  
Close all documents WL  
Auto Hide All windows (except main code window) WU  
Goto Options Dialog TO  
Start Debugging DS F5
Start Without Debugging DH CTRL+F5
Step Into DI F11
Step over DO F10
Attach to process TP CTRL+ALT+P
Set as startup project PA  
Add new item PW CTRL+SHIFT+A
Add existing item PG SHIFT+ALT+A
View output window VO CTRL+ALT+O
View Find Results VN{number of result dialog to display)  
View Error List VL CTRL+\ , CTRL+E
Properties Window ALT+Enter F4
Full Screen VU SHIFT+ALT+ENTER
Refresh VF  
     

You can download a PDF version of the above table from here.

Develop With Passion!!

Comments [4] | | # 
 Thursday, June 25, 2009
Thursday, June 25, 2009 5:27:00 PM (Mountain Standard Time, UTC-07:00) ( Productivity | Tools )

Are you able to take the Timesnapper challenge?

One of the recurring themes that often comes up when I talk with people is how they mention how little time they feel they have to accomplish tasks in their day to day jobs. They also get discouraged when they can't seem to find time to explore new techniques, tools, apis etc. Outside of having a company that supports your ability to do self directed learning and exploration, you are also ultimately responsible for how you spend your time at work.

One of the most difficult aspects of teams that start to adopt pair programming is that now people are held up to a level of accountability that they may not be initially comfortable with. "Turn of your instant messenger", "Don't respond to that email", "twitter can wait". All of these are common phrases that can be uttered if you are in an environment where you spend a large part of your day working directly with another person beside you. Aside from the benefits of accountability, pair programming has many other benefits that can allow it to greatly streamline a teams development efforts. This post, however, is not about pair programming. It is about the sole task of getting people to realize where they actually spend their time at work and more specifically, as developers in front of their computers.

I am going to make the assumption that you don't have someone who can sit beside you and prompt you every time that you are misusing your time at work. I am going to challenge you to embark on an exercise that can allow you to greatly streamline your personal development efforts at work (and by development I mean "coding effort"). Download the tool Timesnapper and make a commitment to run it on your desktop for the next 2 weeks. I am not going to go into a discussion about the tool as the website itself does a great job of that. What I will say is that used properly it can be a way to help you analyze your habits while you are in front of the computer. It is a completely unbiased judge of where you spend your time. If you run the report at the end of the day and are not completely happy with your results you can use it as a calibration tool to make adjustments as you try to figure out a way to maximize that 8 hour day. Small improvements made over time are the things that can reap huge benefits.

Can you take the Timesnapper challenge?

Develop With Passion

Comments [8] | | # 
 Sunday, June 07, 2009
Sunday, June 07, 2009 12:02:00 AM (Mountain Standard Time, UTC-07:00) ( Tools )

For those of you who have upgraded to the latest versions of TortoiseSVN and are also big keyboard junkies, you are probably quick to notice that most of the accessor key support has disappeared across most of the dialogs. In case this has caused you grief and you are looking for an older version to download (with no success). You can download the 1.5.4 version from right here!

Develop With Passion!!

Comments [6] | | # 
 Friday, May 08, 2009
Friday, May 08, 2009 9:27:00 PM (Mountain Standard Time, UTC-07:00) ( Training )

There were a couple of submissions to the scholarship offer for next weeks Calgary course. Thank you very much to all who took the time to submit entries. Everyone who submitted an application for the Calgary course has automatically been entered into the entry list for the Edmonton course that will be happening in 3 weeks.

Develop With Passion!!

Comments [1] | | #