Archive for Uncategorized

13 Jun 2011

Ways to deal with litigious people

1 Comment Uncategorized

Recently I just got out of a contract in the beginning of June, that unfortunately I stayed at way too long in. That is another story.  But, I have nothing bad to say about the company because the work was interesting, just management at the company had different views of the contract between the two of us. The management wanted an employee and I always maintained that I wanted to stay an independent contractor.

When I left the job on Thursday, June 2nd, I received a handshake on the way out and thought everything was going to end like every other job I have left. In that we maintain a friendly but separate relationship and I secretly root in the background for the companies success moving forward.  Same way I did when I was a contractor for the company.

I continue to this day to do this for a couple companies that I loved working at and that I have stayed in constant contact with. One company that comes to mind and that I loved work for is Voveo.

However I am getting off point from this article, and by the title of this article you can pretty much guess what happened after I left.

But before I go into the meat of this article, I want to say that I have nothing bad to say about SocketLabs, they have a great product, and I enjoyed working there. I even received contacts from a couple of the employees stating how good of a job I did, and that the system as it stands now wouldn’t be of the same high quality if I hadn’t worked on it for the prior 2 years.

How it all started…

About a week after submitting my final invoice, and I hadn’t had any contact with the companies management in the mean time. It all started when I received the following letter from their (SocketLabs) lawyer.

pdf The PDF I was sent by the lawyer.

Review at your leisure, see if you come to the same conclusions I laid out below.

My conclusions about the agreement

After reviewing this letter I came to the following conclusions:

  • The original contract was between SocketLabs, Inc and ManagedFusion, LLC (my company I use for consulting), not me (Nick Berard) personally. I do not sign anything with my name personally because I will not open my family up to lawsuits, which is the main reason I do business behind a corporation.
  • Since, the first contact I receive from the company is a letter from their lawyer, I decided if I was to so sign this contract, I would require the full payment up front and require that the contract not go into effect until the last penny of the payment for this agreement was received.
  • If anybody is familiar with the job reference system in the United States, you know that Section 6 is pretty much a slap in the face if nothing more is said about my time at SocketLabs, and it is understood industry wide that stating dates and supervisor and nothing else when ask for a reference is tantamount to a negative reference and thus violates section 8(a). I know this was all the lawyers doing and not the management at SocketLabs, but still those two sections are in total contradiction of each other.
  • Also you need to be familiar with the rules from the United States’ IRS (Internal Revenue Service) of what constitutes the differences between a independent contractor and an employee to see that Section 7 is an abomination of legal jargon basically saying I was an employee of SocketLabs, which is so far from the truth, that if I were to sign this agreement both I and SocketLabs would be required to pay back taxes to the IRS and face a potential audits and fines.

Dealing with the agreement

I have posted the agreement so that you can use it as a reference for when you are in the same situation.  Just to be clear I don’t plan on signing the document, because it offers no protection for me or my family, and it only offers a small monetary gain up front, hardly worth opening my family up to lawsuits from company management that already seems to be very litigious.

So when you are in the same situation, you have the following ways to deal with it:

  1. Sign the document and hope for the best.
  2. Negotiate for terms that work for both parties.
  3. Tell them you would rather move on and not sign an more agreements.
  4. Just ignore the problem, which is essentially the same as #3 except you don’t engage in any form of contact.
  5. Or hire a lawyer and let the lawyers has everything out.

Just to be clear I am not a lawyer and don’t play on in real life or on TV, so take what I say with a  grain of salt and contact a lawyer who will have your best interests in mind given your circumstances.

I opted for option #3, since there is never a reason to sign a document after the fact unless there is a huge upside for you. And no such upside was presented to me.

Have you ever dealt with a similar situation? What methods have you used to deal with the problem?

There is nothing confidential in this agreement, and this has been posted to my blog because I enjoy having full disclosure with my blog readers. It is not meant to embarrass anybody, because if they were embarrassed about sending this letter through their lawyer they probably shouldn’t have set it. That is my take on this.

03 Jun 2011

JustCode makes coding just better

3 Comments Uncategorized

I wanted to hold off writing this post, because I wanted to be impartial to the product as possible. However, when I first installed Telerik’s JustCode, I instantly knew that this was the productivity enhancement tool for me.

Let me back up a little, over the years I have given ReSharper and CodeRush more than enough latitude to impress me and after using them for 3 months or more at a time I always end up just uninstalling them. And I constantly repeated this process over and over again, start with naked Visual Studio, get antsy want to try something new install ReSharper, get fed up, uninstall, install CodeRush, get fed up, uninstall, repeat.

I probably repeated this process countless times over the past 5 years, and each time I got more and more fed up and discouraged that the best productivity tool was my fingers, mouse, and naked Visual Studio. However that all changed the day I realized that Telerik was creating a competing productivity tool which seemed to solve my major issues with ReSharper and CodeRush, namely:

  1. Performance, JustCode doesn’t slow down the startup process of Visual Studio, and it doesn’t slow down the performance of Visual Studio while using it.
  2. There are no annoying pop-ups that you can’t get rid of. (mainly CodeRush)
  3. They don’t try to override everything in Visual Studio, even things that work perfectly fine. (mainly ReSharper)
  4. The power options aren’t hidden way behind obscure keyboard commands.

The first 3 points above are superficial and hard to prove in a blog post. However the 4 point is very easy to explain. My problem with CodeRush and ReSharper is that unless you had inside knowledge or a ton of time to spend learning all the ins and outs of the software you pretty much started and stayed at a disadvantage. Just to be clear, I have spent countless hours watching the video’s, reading blogs, and slowly finding all the ins and outs of each productivity tool, and to be honest it shouldn’t be this hard. And I should following up to saying it doesn’t have to be this hard.

The instant productivity is apparent day-one, with JustCode, if you have absolutely no time to learn the ins and outs or the keyword shortcuts or you just don’t care, you don’t have to worry because every option available to you for the specific piece of code is available in a context menu that shows up when you hover over the a relative piece of code:

justcode-menu

These different letters that show up are essentially your best friend, and they stand for:

  • C – Create, for generating and creating related code.
  • R – Refactor for refactoring the current code.
  • N – Navigating the project.
  • T – Testing

Under each of these menus is a context sensitive menu for all the options available to you to create, refactor, navigate, and sometimes test your code that you are hovering over.  All this being said, if you have the time and the inclination to learn the keyboard commands, you should, because it just adds a speed component to the same productivity you have by clicking around with the mouse.

The other great thing about the JustCode approach is that it is not totally in your face always reminding you that you are running JustCode such as CodeRush and ReSharper do. Maybe this is a bad marketing decision to not constantly remind the customer of the product they are using, but to me the out of the way approach of JustCode is a positive bonus.

JustCode is essentially my friend that only pops up and says “I can help you out with that problem” when I request the help, instead of the annoying friend that is always hanging around reminding you they are there and interjecting unhelpful non-sense when you don’t need their help. Just like Clippy did in Microsoft Office.

tl;dr

I cannot say enough good things about Telerik’s JustCode. If you want a comprehensive productivity tool for coding with Visual Studio that stays out of your way until you ask for its help then JustCode is just the tool for you and it will make just coding a pleasurable experience. (sorry about the play on the word just)

You can download a free trial version from here: http://www.telerik.com/account/your-products/trial-product-versions/trial-single-download.aspx?pmvid=0&pid=717

Try it, you won’t be disappointed.

18 Apr 2011

.gitconfig

No Comments Uncategorized

I have been using GIT for about a year now, and over the last year I have configured some things in GIT that make my life as a developer much easier.  This post is going to show you my .gitconfig and hopefully accelerate your own configurations of GIT.

Finding the .gitconfig file

Note: all of this below assumes you are using msysgit. If your are not using msysgit, your mileage may vary.

The first thing you need to do is find your .gitconfig file.  By default it is installed in the root of your Windows user profile. To get started lets open it up in notepad, by running the following command after pressing [Windows Key] + R.

notepad.exe %userprofile%/.gitconfig

The first thing you will probably see is any configurations you have made through the command line to set your name and email and anything else you have done using the “git config” command.

My .gitconfig

2011-4-21: I updated the configuration below to include comments and some extra parameters for beyond compare that label the merge section windows.

; user identification
[user]
    name = /* Your Name Here */
    email = /* Your Email Here */
[github]
    user = /* GitHub User Name */
    token = /* GitHub Token https://github.com/account#admin_bucket */

; customizations
[alias]
	unstage = reset HEAD
	hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short

; environment
[core]
	symlinks = false
	autocrlf = true
[color]
	diff = auto
	status = auto
	branch = auto
	interactive = true
[http]
	postBuffer = 52428800
[pack]
	packSizeLimit = 2g
	
; diff and merge
[diff]
	tool = beyondcompare
	guitool = beyondcompare
[difftool]
	prompt = false
[merge]
	tool = beyondcompare
[mergetool]
	keepBackup = false
	prompt = false
	
# 
# beyond compare
# http://www.scootersoftware.com/
#
[difftool "beyondcompare"]
	path = /c/development/tools/beyondcompare/
	cmd = /c/development/tools/beyondcompare/bcomp.exe \"$LOCAL\" \"$REMOTE\" -nobackups -title1=\"Old Version\" -title2=\"New Version\"
	trustExitCode = false
[mergetool "beyondcompare"]
	path = /c/development/tools/beyondcompare/
	cmd = /c/development/tools/beyondcompare/bcomp.exe \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\" -nobackups -title1=\"Local Changes\" -title2=\"Remote Changes\" -title3=\"Committed\"
	trustExitCode = false
	
#
# diff merge
# http://www.sourcegear.com/diffmerge/
#
[difftool "diffmerge"]
	path = /c/development/tools/diffmerge/
	cmd = /c/development/tools/diffmerge/diffmerge.exe --nosplash --title1=\"Old Version\" --title2=\"New Version\" \"$LOCAL\" \"$REMOTE\"
	trustExitCode = false
[mergetool "diffmerge"]
	path = /c/development/tools/diffmerge/
	cmd = /c/development/tools/diffmerge/diffmerge.exe --nosplash --merge --result=\"$MERGED\" --title1=\"Local Changes\" --title2=\"Merged: $MERGED\" --title3=\"Remote Changes\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"
	trustExitCode = false

My Diff and Merge Tools

I have my config setup to use beyond compare but I also have included diff merge for anybody who doesn’t have or doesn’t want to spend on beyond compare. Note: you will need to customize the paths for beyond compare and diff merge, since your paths will probably differ from mine.

My Alias’s

I have a couple alias’s that I use all the time, that make working with the command line interface easier. Try them out after you update your .gitconfig file.

Unstaging Changes

git unstage

History

git hist

Conclusion

So that is my .gitconfig file, it is basic and does exactly what I need to accomplish 99% of my daily programming tasks. I encourage you to customize yours and keep it in a cherished place like you do with your Visual Studio config files, Resharper config files, and any other productivity tools you use on a daily basis.

Please share your configurations that you cannot live with out below in the comments.