As I stepped up to talk about our product vision, the question hit me, “How did this Southern boy from a town of 500 get here? Six years ago I was teaching high school chemistry.”
Sixteen years ago I set out to get a PhD in chemistry at the University of Florida. Although I enjoyed my research in nanomembranes and quantum dots, I gravitated to teaching.
Computers, and later the internet, always fascinated me so I started a website to help my students with their chemistry questions. A friend in computer science recommended Drupal, a platform written in PHP, as a framework for my question and answer forum.
Unfortunately, or maybe fortunately, I did not finish my PhD.
With my masters degree and hurt pride, I took a job as an chemist in Savannah before pivoting to teach a few years later.
Thinking it would be a good for my resume, I kept the chemistry website going. As the website grew, my skills grew out of necessity. SEO (my #1 skill on LinkedIn) began to drive traffic to the website. Higher traffic required me to learn how to optimize servers and databases. My teacher salary “inspired” me learn about ads, and the advent of social media changed everything.
I started freelancing as a web developer to supplement my income.
In 2008 I set up a LinkedIn profile. Based on my SEO knowledge, I made some assumptions on how LinkedIn search worked and optimized my profile around my experience in Drupal and PHP. I started meeting more people and landing more projects. One summer Randi, a recruiter for NDN, found me on LinkedIn. I took the job shortly after. It was the culmination of all the skills I developed since graduate school.
As NDN grew, we hired a VP of Product, and I met my first product mentor, Rob Sheppe. I joined his team shortly after.
One morning I woke up to a LinkedIn notification on my phone. It was a message from Kyle Porter asking to chat about “determining the future.” Yesterday I celebrated my two year anniversary at SalesLoft as Head of Product. I have grown like never before, and the people I work with at SalesLoft inspire me daily to be the best me I can be. Thank you.
install from packages when possible
Sometimes the package manager may not have the updated version.
In keeping with my previous posts I will use the program htop as an example. This time I will walk you through how to install a program on Linux from Source code.
What is source code?
Download the source code of Htop and compile it on your system.
wget is preinstalled on your Linux machine
Using Source Code
tar xzf htop-2.1.0.tar.gz
sudo make && sudo make install
Compile htop from the Source on CentOS
Another option is to compile and install htop from the source. This option is useful when you want to install the latest version of htop.
Here is how to download the source and install htop from the source
Download the source files using wget
Wget is a free software package and command line tool used for retrieving files using widely-used Internet protocols like HTTP and FTP.
It is likely preinstalled on your Linux machine but as always we can check with our
which searches your for your not only for the executable but also if it is in the $PATH environment variable.
Is wget installed an in my path?
[ec2-user@ip-172-30-1-107 ~]$ which wget /usr/bin/wget
yes it is here!
whereis locates source/binary and manuals sections for specified files.
To find the paths of $PATH environment variable
[ec2-user@ip-172-30-1-107 ~]$ echo $PATH
This basically mean any executables in any of these path (directories) will excute from the command line regardless of where you are in the file system if you have the right permissions.
To learn how how to install new programs on your Linux machine we will start by examining a preinstalled program called top.
The program top provides a real time dynamic view of resource usage and currently running processes. It can be invoked by the command top on the command line.
Typing top into the command line of your terminal starts the top application. The upper part is a summary of resource usage and the bottom part under the black line in the screenshot is the running processes.
You even see here that the user, ec2-user , is running top because I am! The top part is showing me a summary of how many processes are running, how much CPU I am using and how much memory is available and being used, and the bottom part is breaking the usage out by each process. Pretty awesome.
If you played along and you now have this list of processes running on your Linux machine, you will want to get back to the command line prompt by simply typing “q” for quit.
This is not an exhaustive tutorial on top. The top program is used here so I can show you a few things that will help you when you install your first program on your Linux machine or EC2 instance.
OK I will show you one top specific command.
$ top -a
will sort the top process list by memory so you can see which processes are taking up the most memory. This is very important in server management.
In the command top -a the command is top and -a is an option you can set on the command. You can find options by reading the documentation on top.
Let’s explore top a little bit. This program came prepackaged but where is top “installed”? Another way to ask that is, “where is top’s executable binary?”
Linux has a few other commands that can help us answer that questions.
We have three pretty good options:
- whereis locates the source, binary and manuals sections for specified files
- which locates the executable file associated with a given command
- find searches for files in a directory hierarchy
You might be thinking, I thought this tutorial was about installing new programs on a Linux machine. It is! Bear with me. I am hopeful the stuff I am explaining will save you a lot of headache in the future.
The goal of this tutorial is to install your first program on your Linux machine. We can get into specifics later let’s actually do what we came to do.
To install our first program, htop, we are going to use the package manager, yum. Htop is a interactive process viewer for Linux like the preinstalled top, but is a bit more visual and provides more information than top. Htop is a great system monitor.
$ sudo yum install htop
Now simply type htop into the command line.
$ which htop
You can see that htop is the in the same directory, /usr/bin/, as top.
When we check the permissions of htop we see that the two executables have the same permissions, group and users.
ls -la htop top
-rwxr-xr-x 1 root root 121312 Jul 24 2013 htop
-rwxr-xr-x 1 root root 58400 Mar 17 2015 top
The permissions read -rwxr-xr-x
Read Write Execute
Read – Execute
Read – Execute
So any user on the system can execute this file.
$ echo $PATH
usr/bin is in your path so you can execute htop simply by running the command htop anywhere by any user in the system.
Analyzing the permission, groups, owner and path will be important in running programs after you install them.
If you are using Amazon Web Services and EC2 instances, go ahead and setup an Elastic IP address.
I am just going to save a you a little time here. We have chosen to use Amazon Web Services (AWS) because it is easy to create and terminate free Linux based servers thought their EC2 instances. We can try things out, and if I need to start over we can just terminate the EC2 instance and start again. Of we can quickly back it up and revert back to a previous state if we become frustrated.
However, my hope is that you get to a point where you are building an application you are interested in continuing. Inevitably you you’ll need to stop and restart you EC2 instance.
Whenever you start your EC2 instance it is assigned a public IP address and a public DNS. The public DNS resolves to the public IP address. You will be using these to connect to the server, and maybe to request your web application.
However, if you stop and restart this server, both the public IP address and the public DNS will change. You will then have to go update these wherever you have used them. It could be in your SSH command or your SFTP settings or in your local hosts file you are using to resolve virtual domains on your Apache server.
Regardless, it is annoying but there is often a price to pay for convenience, and it is super convenient to be able to spin up free computers whenever you need them.
We get around this by using Amazon’s Elastic IP addresses.