Thursday, May 5, 2016

The End...For Now

After the split of the OpenMRS group, Austin, Zach and I decided to work on the Transterpreter for the rest of the term. The Transterpreter is an open-source and highly portable virtual machine designed to exploit concurrency on embedded systems, for running process-oriented programs written in the occam-pi programming language.



Existing interfaces for working with the Transterpreter were not cross-platform, well maintained, or user friendly. The lack of an active community has left the project fairly stagnant. There is a need to create a new method by which users may ship to the server, receive the compiled code, and flash it to an Arduino. There is also a desire to renew the Transterpreter project, by revitalizing certain aspects of it in a way that makes it easier to work with and maintain.

The desired platform for implementation was in the form of an Atom package, as Atom is very well documented and maintained and widely compatible.

The basic workflow as per the design is as such:

  • Toggle on Transterpreter plugin
  • Specify arduino type
  • Select desired project
  • Package occam-pi files within directory (JSON)
  • Ship to server

  • Receive compiled occam-pi from server
  • Flash to arduino via AVRDUDE

Our lack of familiarity with the tools and environment that we were to be working in prevented us from generating a more detailed design plan, and our ideas of how we would implement certain aspects changed on multiple occasions throughout the work on the project.

Supported board types are retrieved from the server whenever the Transterpreter-plugin is made active via toggling on and clicking the Transterpreter logo.
We started with a package template generated by the Atom package creator. Tools used include: CoffeeScript, JQuery, Node.JS, AVRDUDE.

We used these tools to generate a JSON structure that allows for packaging of all code within the current open directory, specifying which file is the “main” file.
One of the major challenges we had during the implementation of the plugin was handling the way scoping works in CoffeeScript. This issue presented itself while we were trying to execute deactivation of the event listeners, in order to prevent repeated uses from repeating payload generations.

There are still some steps left to be completed in order for the plugin to become a fully-functioning solution.

Code to specify and retrieve contents of the "main" file for packaging to send to server
Changes made on the server side to reflect differences in the generated JSON structure between Plumb and the Atom Plugin.
Function to retrieve the returned code compiled by server
AVRDUDE program execution within plugin to flash compiled code to the arduino.

All in all I think that this was a great learning experience. The project was fun and interesting, and Austin, Zach, and Dr. Matt Jadud have been phenomenal to work with. 

transterpreterLogo

Tuesday, April 12, 2016

A Post.

I'm alive.
I'm just a terrible blogger. 

Still working on Transterpreting, as before. The Atom plugin is moving along, but it has turned out to be more complicated than we had thought when we were beginning. 

Progress
So far we have 
  • Made a request for configuration things from the server
  • Received a response
  • Made the response readable
  • Put the readable response into a drop-down
It's not a great deal of progress, however we are working in an interesting environment that we don't have any collective experience with, and are using a language (Coffeescript) that we are not familiar with.

Issues
The most difficult component of our work on the plugin thus far has been figuring out how the Coffeescript is supposed to look. At times we have found ourselves trying to write something that is, in fairness, pretty much plain Javascript. 

There are several significant differences though, the primary being that there are no "extra" characters, ever. Meaning: semi-colons, brackets, braces, etc. If there is some character you want to type because of formatting, don't. It won't work. The language is dependent upon indentation, much like Python. 

Which is kind of gross. It is what it is.

So, we continue forward.

-Craig Warner

Friday, April 1, 2016

Blogterpreting

Boogity Boogity Boogity
I actually hate NASCAR.

Clearly there has been a lack of vigilance on my behalf in terms of this blogging business. C'est la vie, what's done is done, the past is over and we have only the present to concern ourselves with.

Cool.
 
Plugin

Work is now underway. In Austin's absence today (good luck interviewing) Zach and I changed direction a tad. Instead of building out a large JSON structure to represent what the server expects to be sent, we have started on the process of retrieving configuration information from the server.

We have also tried to make some concrete design decisions. The conclusion we came to is that we would like to have a modal pop up when the Transterpreter logo/button/thing is clicked. This modal should contain some method of identifying and selecting the board the user has and a giant button that says "TRANSTERPRET" in the middle. This button will package and send the appropriate information to the server to be compiled and given back.

It's all very exciting stuff, I promise. We will have to talk to Austin over the weekend to identify a more concrete plan for the final stretch of the course, but for now we will continue work to this end.

-Craig
 

Thursday, March 17, 2016

FOSSEng Episode Something: A New Hope

It's alive.

Unlike everything else I have worked on so far in this course, getting everything set up to work has been very simple. Austin created a new plugin through Atom, which is beautifully simple, and put it in a repository on GitHub. Wonderful.

One of the major struggles that OpenMRS presented to us was installation. Installation. We couldn't even get the thing running to begin with for quite a while, and when we did we realized that we were using the wrong version of the system to do the work we intended to do.

Atom, on the other hand, is a breeze. It is a wonderful piece of software, and we are all happy to be taking our first steps in our work with the Transterpreter in something so nice to work with.

Moving Forward

At first we thought that the plugin would be very simple. We came to realize, however, that the Transterpreter is a bit more complicated than we thought. This should be alright though, as Dr. Jadud has been heavily involved in its development and will hopefully be able to provide us with some assistance.

We'll see how it goes. Wish us luck.

-Craig

Tuesday, March 15, 2016

The Ol' Switcheroo

The tables turned truly this time.

Alliteration is cool. Like bow-ties and fezzes...

Anyways, back to it. As I was saying, there have been some big changes recently. 

Following an uneventful 'SPRANG BREAK' there was a total dissolution of the Software Engineering class' OpenMRS team. We have unanimously decided that it is our best interests to pursue work in other projects for the duration of the term.

I am elated.

The Future

The group has split and taken several different paths. Some of us are joining existing groups that have already been working on their project.

Others of us have chosen differently.

Introducing...The Transterpreter

Sounds very exciting, right? This project is somewhat beyond my understanding in its totality at the moment, however it may be summed up in one word: Parallel. It is a piece of software that allows for concurrency on platforms such as the Arduino.

Don't expect too much depth here. This is about all I have in memory from class discussions on Monday. Perhaps I should have done this sooner. Perhaps.

As a first step, we are pursuing the development of an Atom plugin for the Transterpreter. Atom is pretty sweet, and we are looking forward to exploring this space and digging deeper.

-Craig

P.S. Where are my manners? This royal 'we' I have been using throughout consists of Zach Ball, Austin Farmer, and myself. 

Friday, March 4, 2016

The Rut

Hail.

I mentioned to Austin that I have been contemplating switching projects. He opposed. I probably won't be switching.

Curse you, Austin.

OpenMRS Stuff

I have managed to (finally) put together a working environment. In the words of fictional guitarist Toki Wartooth, in his infinite wisdom, "Woweee." This is one of the reasons that I have moved away from the thought of switching. 

I am now in a place to finally begin work on things, and it feels good.

Now I am working on properly installing and tinkering with the XForms module so that I can work on the issue that David and I identified as a first step into working on OpenMRS. It seems to be a baby bug, and a fairly old one at that, but it should help us to get our feet wet.

Unfortunately, I can't seem to figure out how to install modules at the moment, but if I can get that squared away then we will be good to go.

Maybe.

-Craig


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