Monday, February 29, 2016

Talks and Ships and Things

Today has been interesting indeed. 

Lightning Talks

All of the groups in the course did short presentations in class today. As I understood, they were to cover three key points:

  • What we have done
  • Where we are at
  • Where we are going
The goal was to have determined an issue within our project to begin working on, and to have a plan of action to start.

These presentations were enlightening, as they helped me to get a clearer picture of the progress that the other groups have made thus far and how the work has been. They also highlighted some major differences in the projects that the groups are doing, which will be something to think about moving forward.

Abandon ship?

Towards the end of class, Dr. Jadud raised a compelling thought for those of us in the OpenMRS team. As the process thus far has been so troubling, some people working on OpenMRS have expressed interest in the possibility of switching to a different project. Dr. Jadud openly supported the idea of switching, and any groups have until Spring Break (Friday) to determine whether or not they would like to switch.

I myself have not completely given up hope on OpenMRS, but I am considering it. With so many problems in such a gigantic and varied project, I wonder if I may find work on another project to be more fulfilling. 

I'm considering it, but we will have to see how the week progresses.

-Craig

Saturday, February 27, 2016

I Abide

In the words of The Dude:
(warning: language)
https://youtu.be/gbIv7W7rhx4?t=36s

We have now reached out to the community in various ways, and we are finding out that everything that we have been doing is incorrect.


Everything

So, according to information that has been gathered, we have been urged to move our efforts away from the OpenMRS core. Instead, we should be using the standalone application. Doing so, we will be able to work against individual modules and use the standalone as an engine of sorts, instead of trying to build and configure the entirety of OpenMRS just to test against modules.

This should speed things up significantly. In the course of today's class we have most of the OpenMRS team on the same page, to my knowledge. It should be a very brief process for us to all get started and working on a specific issue, which is very exciting considering all of the difficulties thus far.

Briefly, the Process:

Set up is very simple for a Ubuntu.

You will need:
Just check out the OpenMRS Reference App from GitHub, cd into the directory, run "mvn clean install" and then run "vagrant up".

Done. That's it. It will install everything else that you need, including the image for Ubuntu 12.xx (which Austin and I found to be interesting at the least). We only wish we had known this sooner. 

Now that I have written this out, I have managed to stumble across a more comprehensive guide on the documentation wiki. How silly of me. At any rate, there is much to be done by Monday and this post should have been finished sooner, but it is what it is. You know what they say (warning: language).

Tuesday, February 16, 2016

Like, Another Post: Community Things

Aloha

The illness has passed, and I feel like a new person. How wonderful. However, hat is neither here nor there.


Internets please, b0ss
Although I wasn't able to attend class yesterday, I feel as though it is safe to say that we have, as a collective, been working on initiatives to promote a kind of "conservation" of network resources at the college since last Wednesday. The reason for this shift in our focus is simple: massive consumption of bandwidth by the students for leisure activities is causing severe issues in our connection to the outside world. I guess. There is a clearly a lot to be understood about what exactly is causing network issues on campus, and this is the angle that my classmates and I are most able to approach with solution. 

Therefore, the class has decided that it would be valuable to take time out of our regularly scheduled programming (that was a pun, friends) and attempt to address the issue with the student body.

Our aim is to push our fellow students to adopt a more thoughtful culture concerning network usage, in which they are conscious of the limits of the college's resources and adjust usage in a manner that allows essential systems to work with efficacy. To accomplish this goal, we have been split into four groups, each with a different priority. I chose to work with the group responsible for communications with administration and offices around campus, in order to do things. Things like dissemination of information that may be useful for the students. Missing class yesterday has really put me out of the loop, if that isn't obvious. 

I'll be reporting further on these events as they unfold.

OpenMRS: The Enemy
NOT REALLY
As we continue working on OpenMRS, we are getting nearly everyone built and ready to work, in my knowledge. Again, I'm a tad hamstringed by my absence yesterday. Who knows. I've been exploring a bit through the community and issue tracking for the project, but I haven't put together a module yet for my own exploration and I should probably do that.

Some more things. It's an interesting morning.

-Craig Warner

Tuesday, February 9, 2016

Build Success: A Guide to OpenMRS

Ahoy

After all of my unusual troubles, I have finally done it. I have succeeded in building and installing OpenMRS on my Ubuntu machine. This blog post will serve as a guide, tracing the steps that led to my successful installation.


Before we begin, however, it's important to note that my machine has a 64-bit Intel processor and my operating system is Ubuntu 14.04.


Software

First, here are a few URLs for the resources that I used:
GitHub repository for the OpenMRS core
  • https://github.com/openmrs/openmrs-core
Apache Maven version 3.3.9 tar
  • http://apache.arvixe.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
and Java 8 JDK
  • http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Note: the Java link features many different packages. We will need this one: jdk-8u73-linux-x64.tar.gz


You will also need to have a working version of MySQL installed on your machine, and you need to know the password for your user.

Installations

Note: You may have to run some or all of these commands as sudo. I did.

OpenMRS-Core

To check out the OpenMRS core, you will need to fork the repository. Once that is done, you can enter the following commands in your terminal to get the repo on your local machine:


$ mkdir openmrs-core
$ cd openmrs-core
$ git init
$ git pull *enter the URL of your forked repo here*

You should now have the checked out code on your machine.

Maven
Once you have downloaded the tar package, you can run these commands to get it running:

$ mv apache-maven-3.3.9-bin.tar.gz /opt/apache-maven-3.3.9-bin.tar.gz
$ cd /opt
$ tar -xfvz apache-maven-3.3.9-bin.tar.gz
$ rm apache-maven-3.3.9-bin.tar.gz

Now you will have the most recent version of Maven, as I write this, in your /opt directory. To make Maven easy to use, we will have to symbolically link to it, more or less making a "shortcut." To do this, enter:

$ cd ~
$ ln -s /usr/bin/mvn /opt/apache-maven-3.3.9-bin.tar.gz

Java
Download the tarball specified above, then follow these steps:

$ mv jdk-8u73-linux-x64.tar.gz /usr/lib/jvm/jdk-8u73-linux-x64.tar.gz
$ cd /usr/lib/jvm
$ tar -xfvz jdk-8u73-linux-x64.tar.gz
$ rm jdk-8u73-linux-x64.tar.gz
$ update-alternatives --config java

After the last command, you will most likely get a list of options. You want to make sure that you select the option that reads "/usr/lib/jvm/java-8-oracle/jre/bin/java"

BASHRC
Now we will have to add these programs to our path. To do this, you will have to 

$ cd ~ 

and, using the text editor of your choice, add the following lines to your .bashrc file:

#java home path
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export PATH=$PATH:$JAVA_HOME/bin

#Maven path
export MAVEN_HOME=/opt/apache-maven-3.3.9/bin
export PATH=$PATH:$MAVEN_HOME/bin

Once the above lines have been added the the .bashrc file in your home directory, enter the command

$ source .bashrc

to update.

Building OpenMRS
You should now have all of the necessary tools to build and install openmrs-core. To do this,

$ cd *file path to your openmrs-core clone*
$ mvn clean install

Make sure that when you run the clean install command that you are in the outermost layer of the openmrs-core directory. This may take a while, but that's ok. If you experience failure, try running the command as su. If you continue to experience failure, you may need to clear your .m2 folder, like so:

$ cd ~/.m2
$ rm -r repository
$ mkdir repository

After this process, try the "clean install" command again in the openmrs-core directory.

At this point, you should be able to run the installation. 

$ cd *file path to openmrs-core directory*/webapp
$ mvn jetty:run

Then, direct to your browser to "localhost:8080" You should be provided with a link. Follow the link, and click the button to install OpenMRS. Make sure that you have MySQL installed and that you know the password, as this installation is going to build the OpenMRS database.

If everything was successful, you should now have a working OpenMRS installation. Congratulations! Now you just have to install an API. If not, it's probably your fault. Just kidding. If you have any issues or comments, or something is just plain wrong, please leave a comment or email me. 

-Craig

Thursday, February 4, 2016

Reflecting on Communication

Howdy

The projects are selected, groups assembled, and the course is underway. It's been several days, and I'm still having trouble building OpenMRS. My machine keeps convincing itself that it is overheating during the build, and promptly shutting itself down. Which is fine. I'm not even mad. Not mad at all. Anyways, that isn't the purpose of this post.

This is about communication.


Specifically, in this post I will provide anecdotes about a time of successful communication, and one not-so-successful.

Success

Communication was a focal point in my Database Systems course last semester. I was a member of a four-person group, working with a staff member at Berea College on a project for her department. For the most part communications went very well with our "community partner," the staff member. 

Very early on in the project, we relayed to her what materials we needed in order to begin working effectively on the project. Due to this we were able to quickly gather the necessary items and information, allowing the early stages of the process to flow very smoothly. This led to a positive experience for myself and the other members of the group.

Failure

Last semester, as a TA for the Computer Organization course, I was at one point supposed to prepare an assignment for the course. I had some difficulty in putting the materials together for the assignment, and I also assumed that I had the assistance of another TA. Due to my lack of communication with the instructor, our very own Dr. Jadud, I failed to put together anything resembling an adequate assignment. Combined with the late notice of my failure, the instructor was forced to prepare an alternative lesson for the day with less-than-reasonable time.

This failure taught me the importance of keeping a steady stream of communication, and of ironing out expectations whenever I am working on something for someone else. If I had done these things, I would have been likely to have provided the desired materials with little trouble. 

In summation,

communication plays a vital role in any collaborative work, and it is important to ensure that one communicates effectively with all of those involved. Effective communication makes a positive experience out of any project, and one should always be conscious of this.

-Craig