private void signIn() {
		
		//check that all the required fields have been instantiated
		if (fldUserName != null && fldPassword != null && cnxn != null && strframe != null) {
			//get the entered username
			String username = fldUserName.getText();
			
			//check that the user entered a valid username in terms of length and characters
			if (!User.validateUsername(username)) {
				JOptionPane.showMessageDialog(strframe, "Login failed. Userame bust be at least 5 characters and contain only alphanumeric characters or underscores");
				return;
			}
			
			//get the entered password
			char[] entered_pword = fldPassword.getPassword();
			
			//sign in the requested user
			int rtnId = User.signIn(username, entered_pword, cnxn);
			
			//clear out the password field
			fldPassword.setText("");
			
			if (rtnId > -1) {
				//update current user to signed in user
				currUser = new User(fldUserName.getText(), rtnId);
				
				//let the user know that the login was successful
				JOptionPane.showMessageDialog(strframe, "Login successful");
				
				//update frame to reflect signed in user's name
				strframe.setTitle("SecTweet - " + username);
				
				//populate the Follows tab
				populateFollows();
				
			} else {
				//signin error: alert user, kill off the current user field
				JOptionPane.showMessageDialog(strframe, DFLT_SIGNIN_ERROR_TEXT);
				currUser = null;
				
			}
		} else {
			//signin error: alert user, kill off the current user field
			JOptionPane.showMessageDialog(strframe, DFLT_SIGNIN_ERROR_TEXT);
			currUser = null;
		}
		
	}