Wednesday, October 29, 2014

Don't under estimate e-mail. It's the new drag and drop and notification system.

This will likely roll up into another blog post, but writing it down so  I don't lose it.



In the 2000's using a computer meant using the windows desktop. Two common capabilities from those days were the ability to do a user initiated share of data between applications, and the ability to asynchronously notify the user.



User initiated data sharing on the windows desktop was accomplished with drag and drop. Today there are no apps so there is no notion of sharing between them, except - e-mail. For example, if you want to share a video via youtube, you can send a mail to a special youtube address.



Asyncronous user notification used to be done with notification windows in the bottom user of your screen.  Today there is no notion of an on your latest device alerting platform - except e-mail. For example if youtube wants to tell you your video is ready to be shared, you get an email.



Cool how the world evolves eh?

Sunday, October 26, 2014

Cool Tools: Vim Keybindings

This post will enumerate the vim emulators I use, I expect it to refresh as I learn of more. 



The VIM community is very passionate and frequently adds plugins to support VI keybindings in random tools. Here are the tools I use with their vim key bindings. 



Chrome/Firefox -  Vimium 


Chrome/Firefox Textboxes -  Wasavi 





Windows Command Line - Clink (instructions)

Unix Command Line - set -o vi






OneNote - Vim For OneNote




Visual Studio - VsVim (my customization here)

Visual Studio Code - VsCodeVim













IntelliJ - IdeaVim (my customization here)





XCode - XVim (my customization here)





Jupyter Notebooks - jupyter-vim-binding




Happy VIMing. 

Soft Skills: Job Hunt Stress

This post targets currently employed developers who want to switch jobs.  



Job hunts are stressful, and my goal for my job hunts is getting the job I want without getting too stressed.  My job hunting stresses come from: lack of confidence, being rushed, not having options, disappointing others and the pressure from my current job responsibilities. By expecting and mitigating each of these stressors I greatly reduce the stress during my job hunt.



Below are my stressors and mitigations:



Lack of confidence

Study for technical interviews - Study Cracking the Coding Interview and system design questions. Expect to spend 4-8 hours a week for 4 to 8 weeks.  The longer it's been since you've interviewed last, the longer this will take.

○ Prepare for behavioral questions - Think through your previous projects for situations that demonstrate leadership, confidence, team building and be prepared to discuss them.


Do mock interviews - ask your friends and colleagues to interview you.  You should fail the first few mock interviews it's normal.

Being rushed

Know your "must be done by" date -  don't get stressed over  your own fake deadlines.

Lack of options for next jobs

Figure out what you want to accomplish - I use the Business model You approach to figuring it out.

Look around for who is hiring

Start and maintain a list of candidate jobs

Have a worst case scenario job

Disappointing others

Be honest with yourself about what you can control and share.

Think about what you can do to reduce the impact to your  customers, partners,  subordinates and bosses

Pressure from current job

Negotiate with your current boss for time to work on job hunt.

Recall your highest priority is the next job, but you have existing commitments.



Even when you know about the common stressors a job hunt is still an emotional roller coaster. Expect to have "ups" and "downs". Have a support network with whom you can vent, share disappointments and gloat.



Good luck on your next adventure and checkout HBR's Setting the record strait on switching jobs.

Thursday, October 23, 2014

Cool Tools: Git Helpers

This post will enumerate the helpers and commands I use with git, I expect it to refresh as I learn of more. 



Tools:

git-credential-winstore - Cache your git credentials for windows

Source Tree - a superb gui for git. I use it for all but the simplest commits.

gitk - Built into the git distro, gitk allows you to visualize the tree







Uncommon, but useful operations



Move recent commit from master to a branch.



git branch newbranch
git reset --hard HEAD~3 # Go back 3 commits. You *will* lose uncommitted work.*1
git checkout newbranch



Get a local copy of a server branch (tracking branch)  

 git checkout  







See which branches contain which commit



 git branch -r --contains



See pretty view of history (all after tag 1.2.38.0)



git log --decorate --oneline --no-merges  1.2.38.0..



Even prettier




git log --pretty=format:"%C(yellow)%h%Cred%d\ %Creset%s%Cblue\ [%cn]" --decorate



Revert a file on a branch back to the copy in master



git diff ..master -- scorch.bat  > patch

git apply patch



Git touch



 git commit --allow-empty -m "Trigger notification"