About Me

My photo
Charleston, South Carolina, United States
Computer Science undergraduate student (Senior) at the College of Charleston.

Labels

Tuesday, April 12, 2011

Making a help page

I have been working on the following ticket. The request was to improve upon what was already on the help page (which pretty much was nothing).  So, I went through the entire OpenMRS wiki and picked out top candidates for links that I wanted to include in the help page.  I ended up splitting the help page into three sections of links.  This included links on what OpenMRS is, links to OpenMRS guides, and links to information on getting in contact with the OpenMRS team.  Here is a view of what my help page ended up looking like.




 The actual coding for this work was not too difficult.  It included simple HTML but also I needed to learn how to make this work within the Spring Framework that is implemented with OpenMRS.  After a bit of research, I found that in general, code goes into the .jsp files and text (for the web pages) goes into a .properties file.  So, in the .jsp file, you may have something like this...

<ul>
    <li><a href="https://wiki.openmrs.org/x/GwAJ"><spring:message code="help.user.text"/

</a></li>

And then there is a corresponding property in the .properties file such as the following....

help.user.text=User's Guide 

This is simple enough but I ran into a special situation where links that had text around them would have to be handled differently. The solution to this ended up being to pass parameters to the .properties file like so..

<li><spring:message code="help.about.text" arguments="<a href='https://wiki.openmrs.org/x/3gNN'>,</a>"/></li> 

And the corresponding property in the properties file would look something like this...

help.about.text={0}High Level Introduction{1} to OpenMRS 
(where '0' and '1' represent arguments)

The final effect that this would give would be to display the following line.


I submitted a patch for this page a couple of days ago but the developers had some feedback to give me before committing it. This feedback was given via Crucible, a very neat code review tool. This allowed for the developers to hi-light specific lines in my code and make comments on it. See the following screen shot for an example.

 


I submitted a patch last night which addressed the issues which were brought up to me and I expect that it will be accepted pending an ongoing discussion regarding this ticket. A few OpenMRS developers have been debating whether or not links should be put into the .properties file or if they should be in the .jsp file. On the side of keeping the links in the .jsp file, this approach seems to be much better from a design stand point. But, on the side of keeping the links in the .properties file, there is an argument that links can be localized and therefore should be placed here so that translators can later work with them.
  

Tuesday, April 5, 2011

Sprinting

My group recently ran into some confusion about what we should be working on with OpenMRS.  Apparently the development team is switching to using SCRUM-ish sprints.  Specific tasks are assigned to each weeks sprint.  So, this led to my group trying to figure out if we could still work with tickets that we found on JIRA.  Josh reached out to someone at OpenMRS and apparently it is fine for us to work on whatever tickets we want to work on.  So, that is good news.

In other news, the tickets that our group previously planned on working with did not quite work out.  We chose tickets that were too old and were no longer relevant. So, we have chosen a new set of tickets that have very recently been created.  We have each picked a ticket from JIRA that we will work on.  I am working on making a help page for OpenMRS which will have some general information about OpenMRS as well as some information on how to get help including the mailing lists, the IRC and the wiki.  

   

Sunday, March 27, 2011

POSSCON Experiences

It's been a few days since I attended POSSCON and I have had some time to think my experience over.  POSSCON started off with a bang for me.  Some sort of clerical error allowed me to be a CEO for the day.  Here is my POSSCON name tag.







 









One of the sponsors of the event was "Strickland Law Firm" and they even had a booth in the exhibition area.  So, I think that someone made a dangerous assumption based off of my last name.

But on to the juicy stuff, POSSCON began with a session where all of the attendees gathered in the main auditorium and listened to a couple speakers.  The most interesting talk during this joint session came from a Microsoft representative.  I was baffled when I saw that someone from Microsoft was even at this OPEN SOURCE conference.  His talk centered on the claim that "Microsoft has changed and has become more open".  Some may be hesitant to believe such a claim.  One such person would be John "Maddog" Hall who gave a speech on "The hidden costs of closed source software".  He poked fun at the Microsoft representative's claims and I thought that his talk was the most entertaining.

Our assignment for this conference was to speak to three of the speakers.  I figured that the most opportune time to speak with someone would be....of course... during lunch.  I looked around the lunch room and spotted no one that I recognized so I sat at a random table with some empty seats.  Well, I ended up sitting with a couple of pretty interesting people including Lonnie Emard - the executive director at Consortium for Enterprise Systems Management and a couple of people from ibss.

As I ate, I listened in on what one of the guys from IBSS was talking about.  He (Christopher Smith) was discussing how they needed to find some junior level people (as well as interns I think)  to bring on to their current Android development project.  This spiked my attention, as I have a strong interest in mobile dev.  As he continued to discuss this, one of his colleagues turned to me and Josh (Walton) and started making small chat.  I eventually mentioned to her that her colleague should be looking at the people at his table if he was looking for junior level developers.  She responded that she would introduce me to him once he had a second.

So,  this led to a discussion between Chris and myself on what he was looking for, information on his project as well as my experience with Android and the work I've been doing at SPARC.  We ended up exchanging information - by scanning the bar codes on our name tags using our phones.  We are currently communicating about a possible job opportunity.

I met one other interesting person at the conference.  Kathy Meis has a start up called Serendipite Studios in Charleston and is currently looking for interns and junior developers.  The description of her business -taken from her business card- reads "artisan-quality eTools for readers, writers and content nerds".  Her email is kameis@comcast.net if anyone is interested in learning more.  Apparently, and I just learned this after looking up her LinkedIn, she was at one point a Senior Editor at Forbes inc.

So, It's pretty neat who you get to meet at these sorts of events.

Sunday, March 20, 2011

Feasibility study

Today is the deadline, that my group assigned for us to complete our feasibility study and research on the following bug - trunk 1868.  The bug indicates that when an admin changes the requirements for a password, such as whether or not the password needs at least one number, the message that appears when the user is forced to change his/her password is always the same "Must be at least 8 characters long, contain an uppercase character, and contain at least one number".

The first thing I attempted to do was to recreate the bug.  The global security properties can be found by navigating to the "Administration" section of the dashboard and by then selecting "Manage Global Properties".  I edited the password requirements as so....











I then created a new user (under the "Administration" tab) and selected the option to force the user to change his/her password.  When, I logged in as the user I saw the following...








So, clearly the bug is not present in my version of OpenMRS (1.9).  I took another look at the bug and realised that the "affected version" was listed as 1.6.  Now I am left a little bit confused.  A fix has clearly been made for this bug but a patch has not been submitted.  Perhaps, this old bug has just gotten lost or maybe its just unnecessary to address problems with older versions of OpenMRS.  I'm unsure of how to proceed from here.  I'll need to discuss it with my group members and perhaps the OpenMRS team.

Thursday, March 17, 2011

POSSCON

Time has flown by.  It is suddenly mid-March, there are seven weeks left until graduation and POSSCON is next Thusday!  POSSCON is being held from Wednesday-Friday but I have elected to just go on Thursday.  From what I've read, It sounds like the event is divided between sessions where everyone is attending the same speech as well as some "breakout sessions" where you choose which speaker you want to hear from.  The breakout sessions are divided into four areas of interest - technical,leadership,healthcare,education.  Here is a breakdown of the sessions I will be attending...

Web Hosting – Knocking Out Application Layer & Open Source Threat 

Chris Hinkley

The Hidden Costs of Closed Source Software
Jon "Maddog" Hall

Open Source Trends in Government: How is it being used?
Deb Bryant

The Secrets of Building Real Time Big Data Systems
Nathan Marz

Starting and Running a Business on-the-cheap with Open Source
David Duggins

The Development & Growth of the OpenEMR Project
Dr. Sam Bowen


As per my assignment to talk to three presenters, I would like to be able to talk to the following people....

Jon "maddog" Hall
Dr. Sam Bowen - he's connected to OpenEMR
David Duggins - His speech topic sounds interesting. I will probably ask some follow up questions

Tuesday, March 15, 2011

OpenMRS Development Plan

My team has created a general timeline for what we would like to accomplish during the rest of this semester.  We have about six weeks to work with.  We have made the goal of tackling at least four small bugs/features (including the one I have already discussed).  First thing we will accomplish in our timeline is to submit a patch for the changes we've implemented in reference to the following feature request (Preferred ID ).  The rest of our time will be divided into three iterations.  The start of the iteration (about four days) will begin with a detailed study on the bug/feature for the iteration as well as a feasibility study.  During this period, we may choose to pick something else to work on.  Once we have decided to work on the bug/feature and have assigned the ticket to us on JIRA we will have about ten days to complete work on the bug/feature.

As of right now, we plan on working on the following bug during the first iteration (change password).  For our second and third iterations we plan on dealing with the following wish list.  During our 'feasibility study' period we will decide on which features from this wish list we will work on during the iteration.

For a detailed look at our timeline see this

Thursday, March 3, 2011

If at first you don't succeed...

CRASH

My team has been relentlessly working on adding this feature to OpenMRS (https://tickets.openmrs.org/browse/TRUNK-256).  On the second day of working on this, tragedy struck.  I lost access to my Ubuntu install.  At the time, I was using Ubuntu via Wubi. Wubi does not really create a separate partition for Ubuntu to run on.  It actually stores the data on the Windows partition and creates the appearance of a dual boot system.  This is good for testing out Ubuntu, but is not recommended for serious use.  Also, it has proven to cause problems.

I am still not 100% sure of what happened but I have a theory.  This problem began after my laptop battery died in the middle of my doing work on my Ubuntu install.  After failing to gain access to my Ubuntu install, I logged into windows and perused the Ubuntu folder that Wubi creates.  I noticed that root.disk was missing.  This file - as I understand it - serves as the data storage for Ubuntu.  So, it seems like, due to my laptop dieing in the middle of my session, a disk error occurred which caused this file to disappear.  I attempted to run chkdsk and checked for the file in Windows 7's hidden C:/found directory.  But it was gone for good.

So what was left to be done? I installed Ubuntu on its own partition.  This actually was kind of tricky because apparently HP computers with Windows 7 come preinstalled with four partitions already in use.  So that leaves you with.....that's right....ZERO partitions to use as you please (seems like someone is trying to discourage dual booting other OSs onto computers).  Nevertheless, I fought back against this tyranny on my hard drive by liberating one of the partitions.  I wiped the HP Tools partition.  After some research, I came to the conclusion that this partition was unnecessary and that I could do without it. (I backed it up though of course)

REDEMPTION

After again going through the process of setting up my Ubuntu install to be ready to develop for OpenMRS, I was back in the game of implementing our feature.  In short, we have been successful.  It's amazing how complex it was to just make sure that a user clicks on a radio button.  In adding this feature, I researched java-script as well as the Java Spring Framework MVC.  Learning about this framework felt like learning a new language.  We needed to find where the validator was for the patient submission form and edit it to reflect this feature.  We also needed to modify the model (the Patient class) and create a new error to be thrown if the radio button was not selected.  The functionality of the page now matches the feature request.  If the user does not select a preferred ID then when the user attempts to save the form, an error will be given to the user which tells him/her that he/she must pick a preferred ID.  My team still needs to figure out how to submit this code for review.  I plan on emailing the dev list today.

To conclude today's blog, my team is technically behind schedule.  But honestly, I could not be more happy with our progress.  My team picked a challenging project that was outside of our comfort zone.  This has required us to do a large amount of research and work in order to contribute. We are now making tangible progress, and we are learning a lot.

"Sine labore nihil"