Difference between pages "Package:Vim" and "User:Drobbins/Resume"

From Funtoo
(Difference between pages)
Jump to navigation Jump to search
 
m (Drobbins moved page Daniel Robbins Resume to User:Drobbins/Resume: nicer place to put it)
 
Line 1: Line 1:
{{Ebuild
= Daniel Robbins =
|Summary=Vim is an improved, vi-style text editor with many features.
|CatPkg=app-editors/vim
|Maintainer=
|Repository=Gentoo Portage Tree
}}
== Introduction ==


So you thought you could get by with gedit? Not when you must configure an application on your server in a data center two states away! When it comes to remote system administration, all roads lead back to Vim. Not a Vim expert? No problem, you just need a handful of commands to do everything you need to do.
__NOTOC__
__NOTITLE__


Entire books have been written about Vim, and they still fail to capture all of its functionality. But the core command set is all you really need if you're just making a few changes to a few files over SSH. You might not do it as efficiently as a Vim expert, but it's good enough to get the job done. In fact, if you're working with Vim (the pre-eminent vi-clone) on a server, there's a good chance it's "vim-tiny," a stripped-down Vim that offers the traditional vi functionality but not the full set of Vim features.
== Profile ==


==Insert Mode==
I am the creator of the Gentoo Linux operating system, an experienced architect of large-scale technology efforts, a strong Open Source project leader, a skilled software developer, and an accomplished technical writer.
The first thing you must grok is that Vim has several modes -- command mode, insert mode, and last-line mode (also known as ex mode). When you start Vim, you'll be in command mode. Here, all of the keys are used to perform commands, not input text. To switch to input mode, hit <span style="color:green">i</span>, and you're able start editing the file, adding text, using Backspace, etc.
To return to command mode, hit <span style="color:green">Esc</span>. To enter last-line or Ex mode, use :, and then input the command you wish to enter.


==Vim Command Mode==
I have made significant contributions at a number of organizations, including E*TRADE Financial and Microsoft Corporation. I have written many popular articles for IBM developerWorks and Intel Developer Services, and my writing has also appeared in C/C++ Users Journal.
I could go on for days about the commands needed in command mode, but we're just here for the basics, so let's look at movement. Movement is based on the standard alphabetic keys:


* '''h''' Move the cursor to the left one character.
== Experience ==
* '''l''' Move the cursor to the right one character.
* '''j''' Move the cursor down one line.
* '''k''' Move the cursor up one line.


You can move faster by using <span style="color:green">b</span> and  <span style="color:green">w</span> to move backward and forward by one "word" at a time, respectively. Vim looks at "words" as a string of alphanumeric characters. So "eix" is a word, but "eix-sync" is multi-word because it's broken up by a non-alphanumeric character.
=== MediaWiki Consultant, WikiWorks; Jan 2014 - Present ===


Deleting is done with  <span style="color:green">d</span> or  <span style="color:green">x</span>. To delete a single character, move the cursor over that character and use <span style="color:green">x</span>. Using <span style="color:green">dw</span> will delete the word the cursor is over, and <span style="color:green">db</span> will delete the previous word.
Expertise in deploying, developing and maintaining MediaWiki and Semantic MediaWiki. LDAP integration, MediaWiki extension development.


To delete an entire line, use <span style="color:green">dd</span>. To delete from the cursor to the end of the line, use <span style="color:green">d$</span>. To delete from the cursor to the beginning of the line, use <span style="color:green">d0</span>. The $ is shorthand for "end of the line," and 0 is shorthand for beginning of the line. You can also use ^.
===Open Source Strategy Lead, Zenoss, Inc.; Austin, TX - Dec 2011 - Jan 2014 ===


==Copying and Pasting in Vim==
Led Open Source efforts, including Zenoss Core architecture, community management and Open Source
Let's look at copying and pasting real quick. To highlight text to copy, use the <span style="color:green">v</span>, <span style="color:green">V</span> and <span style="color:green">Ctrl-V</span> commands. You might have guessed by now that Vim commands are case-sensitive, So v and V are different things.
release coordination. Architected new community infrastructure based on Semantic MediaWiki. Created
authoritative online catalog of all community ZenPacks. Created auto-build system for ZenPacks. Advised
Zenoss on Open Source and licensing issues and advanced Open Source initiatives throughout the company


The <span style="color:green">v</span> command simply allows you to highlight changes character by character using the movement (hljk and others) or arrow keys. The <span style="color:green">v</span> command highlights entire lines. And the <span style="color:green">Ctrl-v</span> command highlights blocks of text -- very useful for highlighting and copying columns of text.
===Senior Network and Application Performance Engineer, OPNET; Albuquerque, NM - Aug 2009 - Dec 2011 ===
Part of OPNET's Professional Services division. Sole developer and architect of an advanced, visual browser-based datacenter facilities and capacity management system for a large government agency with 1500+ servers and datacenters in multiple US locations. Integrated server utilization data from multiple sources. Delivered advanced reporting, planning and analysis capabilities to the organization.


Once you've highlighted the text you want to copy, hit <span style="color:green">y</span> to "yank" the text into the buffer.
===President, Funtoo Technologies; Albuquerque, NM - 2006 to Present===
Open Source consulting. Created Funtoo Linux, an advanced Gentoo Linux variant. Serving as Project Lead and responsible for managing Core development team. Implemented all core Funtoo technologies including Metro automated build system, automated git-based merge process, boot-update unified boot loader management system, and others.


To paste the text, use <span style="color:green">p</span> or <span style="color:green">P</span> to paste. The p command will paste after the cursor, and P pastes before the cursor.
===Senior Principal, E*TRADE Financial; Menlo Park, CA (remote) - Aug 2007 to June 2009===
==Search and Replace==
Primary architect of E*TRADE’s virtualization strategy for development and production-focused workloads. Performed applied research and development related to virtual container build automation, high-performance virtualization and Open Source collaborative efforts. Participation in E*TRADE’s architectural review and standards development process.
To search through the document, use the / key to initiate a forward search, or ? to initiate a backward search.


To search and replace, use <span style="color:green">:s</span> with the range of lines and search terms. Like so:
===Vice President, Engineering, FSMLabs, Inc.; Socorro, NM - 2006 - 2007===
<pre>
Architected the 5.0 release of FSMLabs RTLinuxPro hard real-time OS development kit with support for x86, x86-64, PowerPC, MIPS and ARM architectures. Designed a modern package management system for managing the FSMLabs user-space application stack, and updated cross-compiler tool chain. Created RTLinuxPro for Windows virtual machine runtime. Integrated open source RTSP/RTP streaming media (MPEG-2/4) stack into RTLinuxPro.
:%s/old/new/
</pre>


The % means "global," but you can replace that with a range of lines, like this:
===Chief Technology Officer, ABC Coding Solutions; Albuquerque, NM - Jan 2006 - July 2006===
Architected, developed, and deployed a HIPAA-compliant Web-based medical billing application featuring support for CPT, HCPCS and the proposed ABC procedure code set. Performed extensive SQL Server 2000 to 2005 data migration work. Architected an encrypted XML-based data storage layer in C#/ASP.NET 2.0. Designed suite of ASP.NET 2.0 controls to utilize XML-based encrypted data storage layer. Integrated AJAX functionality into Web application and hardened application prior to deployment.


<pre>
===Program Manager, Microsoft Corporation; Redmond, WA - 2005 to 2006===
:1,15s/old/new/
Responsible for contributing to Microsoft’s Open Source/Shared Source strategy and overseeing the daily operations of Microsoft’s Linux lab. Technical responsibilities included overseeing competitive analysis and technical tear-downs, Linux/Windows interoperability testing, and intra-Microsoft educational efforts.
</pre>
Another example of search/replace functions
<pre>Command        Outcome
:s/xxx/yyy/    Replace xxx with yyy at the first occurence
:s/xxx/yyy/g  Replace xxx with yyy first occurrence, global (whole sentence)
:s/xxx/yyy/gc  Replace xxx with yyy global with confirm
:%s/xxx/yyy/g  Replace xxx with yyy global in the whole file</pre>
I prefer to use the <span style="color:green">c</span> (confirm) and <span style="color:green">g</span> (global) options too, so when searching it will search the entire line and not just the first occurrence of a string.


A usual search would look something like :%s/old/new/gc, and when you hit Enter you'll be prompted before you make changes. I recommend using confirm; otherwise you can wind up with unexpected results.
Contributed to Microsoft’s Shared Source licensing strategy. Tracked emerging Open Source trends and projects. Gained wide exposure to Microsoft technologies including Microsoft .NET, Windows Vista and Windows Vista device driver development. Met one-on-one with various technical luminaries throughout the company.


==Undo==
===Chief Architect, Gentoo Linux; Albuquerque, NM - 1999 to 2005===
What if you've made an edit you didn't want to make? Easy, use the undo <span style="color:green">u</span> command. If you didn't mean to undo what you did -- and it's easy to accidentally hit u -- use <span style="color:green">Ctrl-r</span> to redo the last change.
Project Creator, Chief Architect and Project Lead of large, distributed international Gentoo development team. Architected all core Gentoo Linux technologies and tools including Portage, Gentoo’s dependency-based system initialization scripts, and catalyst, Gentoo's high-level automated release-building tool. Directed Gentoo Linux releases and all technology development. Authored all original Gentoo Linux documentation and designed XML/XSLT-based Web site. Designed all Gentoo artwork and logos. Established not-for-profit Gentoo Foundation, Inc. to serve as a container for all Gentoo Linux IP.
Quick note: If Vim is in vi-compatibility mode, it will have only one "level" of undo. In normal Vim mode, you can undo many, many changes. But vi undoes only the most recent change.


==Saving, Quitting and More ...==
===Regular Columnist, IBM developerWorks, 2000 to 2003 ===
One of the things that's severely non-obvious while working with Vim the first time is how do I get the heck out of here? You can quit Vim in a number of ways, but I'll show the most usual ones.
Author of critically acclaimed Linux and Unix-related technical articles geared towards developers and IT professionals.
 
First, if you want to save your changes before exiting Vim, use  <span style="color:green">:w</span> or save and exit in one action with <span style="color:green">:wq</span>.
Don't want to save your changes? It happens. No problem, just use <span style="color:green">:q!</span> if you realize that you've made some edits that you don't want to save, and they are too complex to easily undo before exiting. Note that you can also write changes to a different filename by using :w newfile.
 
This is just a short and sweet intro to Vim for emergencies or minimal usage. You could do much, much more with Vim if you wanted. Be sure to read through the Vim tutorial by running vimtutor, and look through Vim's documentation by running :help. But in a pinch, this list of commands should get you through.
 
== Good Starter Vimrc ==
 
The following file makes a very good starter <tt>.vimrc</tt> file. Place it in your home directory, and you will get true tabs (displayed indented 4 spaces) and you will be able to see all the whitespace in your document, which is handy when editing critical files:
 
{{file|name=~/.vimrc|desc=A good starter .vimrc file|body=
set noexpandtab
set shiftwidth=4
set tabstop=4
set listchars=eol:%,tab:>-,trail:~,extends:>,precedes:<
set list
filetype indent off
filetype plugin off
}}
 
{{EbuildFooter}}

Revision as of 04:25, June 29, 2014

Daniel Robbins

Profile

I am the creator of the Gentoo Linux operating system, an experienced architect of large-scale technology efforts, a strong Open Source project leader, a skilled software developer, and an accomplished technical writer.

I have made significant contributions at a number of organizations, including E*TRADE Financial and Microsoft Corporation. I have written many popular articles for IBM developerWorks and Intel Developer Services, and my writing has also appeared in C/C++ Users Journal.

Experience

MediaWiki Consultant, WikiWorks; Jan 2014 - Present

Expertise in deploying, developing and maintaining MediaWiki and Semantic MediaWiki. LDAP integration, MediaWiki extension development.

Open Source Strategy Lead, Zenoss, Inc.; Austin, TX - Dec 2011 - Jan 2014

Led Open Source efforts, including Zenoss Core architecture, community management and Open Source release coordination. Architected new community infrastructure based on Semantic MediaWiki. Created authoritative online catalog of all community ZenPacks. Created auto-build system for ZenPacks. Advised Zenoss on Open Source and licensing issues and advanced Open Source initiatives throughout the company

Senior Network and Application Performance Engineer, OPNET; Albuquerque, NM - Aug 2009 - Dec 2011

Part of OPNET's Professional Services division. Sole developer and architect of an advanced, visual browser-based datacenter facilities and capacity management system for a large government agency with 1500+ servers and datacenters in multiple US locations. Integrated server utilization data from multiple sources. Delivered advanced reporting, planning and analysis capabilities to the organization.

President, Funtoo Technologies; Albuquerque, NM - 2006 to Present

Open Source consulting. Created Funtoo Linux, an advanced Gentoo Linux variant. Serving as Project Lead and responsible for managing Core development team. Implemented all core Funtoo technologies including Metro automated build system, automated git-based merge process, boot-update unified boot loader management system, and others.

Senior Principal, E*TRADE Financial; Menlo Park, CA (remote) - Aug 2007 to June 2009

Primary architect of E*TRADE’s virtualization strategy for development and production-focused workloads. Performed applied research and development related to virtual container build automation, high-performance virtualization and Open Source collaborative efforts. Participation in E*TRADE’s architectural review and standards development process.

Vice President, Engineering, FSMLabs, Inc.; Socorro, NM - 2006 - 2007

Architected the 5.0 release of FSMLabs RTLinuxPro hard real-time OS development kit with support for x86, x86-64, PowerPC, MIPS and ARM architectures. Designed a modern package management system for managing the FSMLabs user-space application stack, and updated cross-compiler tool chain. Created RTLinuxPro for Windows virtual machine runtime. Integrated open source RTSP/RTP streaming media (MPEG-2/4) stack into RTLinuxPro.

Chief Technology Officer, ABC Coding Solutions; Albuquerque, NM - Jan 2006 - July 2006

Architected, developed, and deployed a HIPAA-compliant Web-based medical billing application featuring support for CPT, HCPCS and the proposed ABC procedure code set. Performed extensive SQL Server 2000 to 2005 data migration work. Architected an encrypted XML-based data storage layer in C#/ASP.NET 2.0. Designed suite of ASP.NET 2.0 controls to utilize XML-based encrypted data storage layer. Integrated AJAX functionality into Web application and hardened application prior to deployment.

Program Manager, Microsoft Corporation; Redmond, WA - 2005 to 2006

Responsible for contributing to Microsoft’s Open Source/Shared Source strategy and overseeing the daily operations of Microsoft’s Linux lab. Technical responsibilities included overseeing competitive analysis and technical tear-downs, Linux/Windows interoperability testing, and intra-Microsoft educational efforts.

Contributed to Microsoft’s Shared Source licensing strategy. Tracked emerging Open Source trends and projects. Gained wide exposure to Microsoft technologies including Microsoft .NET, Windows Vista and Windows Vista device driver development. Met one-on-one with various technical luminaries throughout the company.

Chief Architect, Gentoo Linux; Albuquerque, NM - 1999 to 2005

Project Creator, Chief Architect and Project Lead of large, distributed international Gentoo development team. Architected all core Gentoo Linux technologies and tools including Portage, Gentoo’s dependency-based system initialization scripts, and catalyst, Gentoo's high-level automated release-building tool. Directed Gentoo Linux releases and all technology development. Authored all original Gentoo Linux documentation and designed XML/XSLT-based Web site. Designed all Gentoo artwork and logos. Established not-for-profit Gentoo Foundation, Inc. to serve as a container for all Gentoo Linux IP.

Regular Columnist, IBM developerWorks, 2000 to 2003

Author of critically acclaimed Linux and Unix-related technical articles geared towards developers and IT professionals.