Wednesday, April 12, 2017

Open Source Code: You can borrow bits, but you get to keep and modify the ideas and give back to others.

You may have heard or seen the following quote at your public library, "You can borrow a book, but you get to keep the ideas." I would like to offer a similar thought in that, "You can borrow bits, but you get to keep and modify the ideas and give back to others." In other words, starting with an existing set of code you can learn from its intent as well as reconstruct it to your own. That is what I love about open source code and tools such as github.

Tuesday, January 17, 2017

Deadlines, the Programming Student, and the 3 Factor Assignment Risks


I know that deadlines drive us all. As I have often heard and said, “Deadlines are your friend.” The problem with these scheduled milestones is when you underestimate the task at hand. While I teach a programming class, let's consider a 5-page paper assignment. For some time, there has been a recognized analogy between writing and programming. As a college student at the 300 level you are accustomed to what is required for a paper. Unlike a writing assignment where you already understand the tools that you are using, word processor of some kind, and a use of the written language that you will be using, you are good to wait until the last day to start.

Specifically, within the typical scenario of a last minute effort there are three factors. One, the concepts of the subject of the assignment. This would include a basic understanding of both high and detail level principles about the topic of the paper as well as vocabulary used in the discipline. Next is the tool(s), as I previously stated, that you will use to compose the paper such a laptop, desktop, or tablet device which has some kind of word processing app such as Apache’s Open Office Writer, Microsoft Word, or a cloud based program such as Google Docs. Finally, the written language in which the work will be created. Typically, the student has a good grasp on the tools and language in which to write the paper. The aspect of the topic of the assignment can generally be picked up with a brief time of applied study.

Yet, this is not the case concerning a computer programming class that offers not only a set of novel concepts, but also a new tool as well as a fresh language in which you will express the desired outcomes. If all three aspects are new to the student, novel concepts, tool (Visual Studio), and language (Visual Basic) waiting until the day before or, perish the thought, the day when the assignment is due, this is at best unwise.

As a technologist that has been in the field as long as most of my students have been alive, I know that there are always what one would call “gotchas” when approaching a new endeavor. In short, these are issues that you do not expect or anticipate. In my long experience, for each project or effort, they happen almost each time. Moreover, if what you are working with is a new tool (Visual Studio) and a new language (Visual Basic), these are risks that must be mitigated. And, the part of the mitigation for any risk is to tackle it early. Therefore, do not wait to start your assigned projects on or even near the assignment deadline. The due date for a programming class assignment signifies the date in which you have met all three of the above factors, not just new concepts.



Saturday, January 07, 2017

NKU BIS 305 Students the Norse Tech Bar Says Don't Wait

Per a tweet from the Northern Kentucky University Tech Bar: 
I agree...don't wait!  :-)

Saturday, August 27, 2016

Setting up the VMWare Client for Northern Kentucky University on Linux (Ubuntu 14.04 & 16.04)

As I am teaching the Advanced Business Programming (BIS 305) class at NKU this Fall semester and only have one Windows system, I thought it good to get the VMWare client setup on my Linux systems so that I can access the College of Informatics Lab VM and use Visual Studio 2015 in grading assignments, etc. 

For you other Linux users, here are the steps:
First run command below to active the TUN module:

$ sudo /sbin/modprobe tun

Next, install OpenConnect in order to connect to NKU's VPN:

$ sudo apt-get install openconnect
Now let's download and install the linux VMWare Client from the download site which is at the time of this writing at:
https://my.vmware.com/web/vmware/info?slug=desktop_end_user_computing/vmware_horizon_clients/3_0

After downloading the file appropriate for you linux distribution, change into the directory where you downloaded the client bundle file and do the following in that directory from the command prompt substituting the name of the file:

$ sudo sh *filename*.bundle
Also at the time if this writing the 64bit client download was named: VMware-Horizon-Client-3.5.0-2999900.x64.bundle. Accept the default setting as you move through the installation.

Next, to connect to the NKU VPN run:
$ sudo openconnect vpn.nku.edu
Here is what is output to the terminal (again at the time of this writing):
POST https://vpn.nku.edu/
Attempting to connect to server 74.143.180.100:443
SSL negotiation with vpn.nku.edu
Server certificate verify failed: signer not found

 Certificate from VPN server "vpn.nku.edu" failed verification.
Reason: signer not found
Enter 'yes' to accept, 'no' to abort; anything else to view:
From here enter the word: yes
You will see the above again as you will be redirected to another VPN server. Once you press Enter the 2nd time an after swering "yes" the output to the terminal continues as:
Connected to HTTPS on vpn.nku.edu
XML POST enabled
Please enter your username and password.
GROUP: [sslgroup_users|vpn_test]:
From here enter the word and then press Enter: sslgroup_users
The output to the terminal then continues as:
POST https://vpn.nkuedu/
XML POST enabled
Please enter your username and password.
Username: YourUserNameHere
Password: YourPasswordHere
POST https://vpn.nku.edu/
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 30, Keepalive 20
RTNETLINK answers: File exists
Connected tun1 as 10.150.128.40, using SSL
Established DTLS connection (using GnuTLS). Ciphersuite (DTLS0.9)-(RSA)-(AES-256-CBC)-(SHA1).
Keep the terminal window open while the VPN session is active. Network resources should now be available. To close the VPN session, press Ctrl+Z in the terminal window. Abruptly killing the terminal window without properly closing out of the VPN session can lead to issues when attempting to reconnect in the future. 

From here you are connected. Now open the VMWare Horizon Client (from a new terminal at the command prompt enter: vmware-view), in the VMWare Horizon Client set the server URL to view.nku.edu, login with your NKU user credentials, and enjoy.

Some information taken from: http://ubuntuhandbook.org/index.php/2014/11/connect-cisco-anyconnect-vpn-ubuntu/

Friday, June 17, 2016

Editing Websphere Generic JVM Argument Settings without Websphere Running

I was working with Websphere 8.5.5 locally on my system as I am in the process of developing a web service that will be deployed to a production Websphere server. In short, I switched the Java SDK to an IBM implementation for both code compilation as well as the Websphere runtime and wanted to add some property settings to the server JVM to accommodate some differences in the IBM SDK from the previous SDK. Here are the steps that I took:

  1. I went to the Administration Console and selected *Servers* 
  2. Expanded *Server Type* and selected *WebSphere application servers * 
  3. Clicked on the name of my server. 
  4. Expanded *Java and Process Management* and selected *Process Definition.* 
  5. Under the *Additional Properties* section, clicked *Java Virtual Machine.* 
  6. Scrolled down and located the textbox for *Generic JVM arguments*. 
  7. It was there that I added the arguments.

I then attempted to restart the server only to note that it kept timing out before it would start. Now I had a dilemma in that in order to remove the JVM arguments that caused the server not to start the server had to start! A quick look into the app server's files I was able to find where the JVM settings are stored and therefore where I could remove the settings in order to allow the server to start.

Going to the  AppServer\profiles\AppSrv01\config\cells\ServerNameHereNode01Cell\nodes\ServerNameHereNode01\servers\server1\server.xml file, there is the genericJvmArguments node with the settings in the jvmEntries node.

After removing the settings, the server started successfully. At least now I can research which JVM setting was the culprit and adjust accordingly without hosing my local Websphere installation.

Thursday, June 16, 2016

How to add a Custom JAR to a Maven Project

I know that this is old for many but it is new for me and so I am posting it. :-)

When working with custom JARs and Maven you will need to install them into Maven to reference them from the Project Object Model (POM) file.
Here is what you do at the command line:
 mvn install:install-file -Dfile="C:\Java Projects\MyProject\Marks-1.0.0-SNAPSHOT.jar" -DgroupId=fyi.m2.java -DartifactId=Marks -Dversion=1.0.0 -Dpackaging=jar -e  


Within the POM here is the dependency setting:

1:  <dependency>  
2:     <groupId>fyi.m2.java</groupId><!-- DgroupId -->  
3:     <artifactId>Marks</artifactId><!-- DartifactId -->  
4:     <version>1.0.0</version><!-- Dversion --> 
5:   </dependency>  

Now the JAR is included in the Maven Dependencies.

Saturday, May 21, 2016

A Positive Approach to the Status Meeting Second Question

We have all attended them.  You know... those meetings where we have to give status updates for the current progress on the project on which we are working. The typical scenario is the project manager going around the room asking everyone one by one about their current status, if there are any roadblocks, and what percentile of the effort is complete. All is well until there is a more specific question is asked of us concerning the above. Could it that we think our skills are called into question when there's a second follow-up question? From the facial expressions and body language often displayed to outright conflict exhibited, we really don't have a problem when asked what is the status of our tasks. It's when there's a second follow-up question asking for more detail.

The fact is we all need to work to not think that the second question is calling your ability and or skill and/or know how into question. Maybe, as in all human relations, we should assume the best in the person asking the question. It could be that they're trying to help us? Perhaps they are trying to smooth out our way by wanting to know who they could contact on our behalf, or get us the necessary tools and information we need?

If we approach it this way, perhaps we will have a much more pleasant and productive time together?