The Chronic Argonaut

Week 12 and 13

I gave a presentation last Friday on my new UI and the workings of it. I updated the logic of button choosing so that if one thing is chosen like a from UTM conversion, then the user cannot go from UTM to UTM (things like that).

I cleaned up the UI a lot too since the last screenshots:

  • Solo convert buttons now arrows
  • Added list of datums to datum choosers
  • Hemisphere radio buttons instead of drop down
  • More vertical layout than a horizontal one
  • Cleaned up file choosers
  • Added open converted file button after file converted so user can see it
  • Button logic for bulk convert button group


Also, instead of a text field where you choose the directory and file name, now a Save As dialog pops up once you click the convert button.

Now I just need to clean up some things and add a few more features to make it more robust:

1. Add Help and About Buttons in menu bar

2. Talk to our UX guy about logo

3. Add the ability to open a template to write on and add the csv templates to resources in the app

4. format BigDecimal lat and long in GUI to only have <=9 decimal spaces

5. Have a “show on a map” after lat long solo conversions using Google Maps API

6. Disable different arrows for conversion

7. Do logic with Hemisphere and Zone Letter

8. Change it to where your file name doesn’t need you to type .csv


Post Thanksgiving Break Update

I had so much time to work on everything over Thanksgiving Break AND save room for stuffing 🙂

Now all of the buttons work, file conversions and solo conversions can also occur. However, I still need to clean up the UI and see what I’m going to do about LatLong to LatLong Conversions. Do I want to address it in the CSV file or have that person choose a datum and bulk convert everything to that specific datum?

Week 10: More UI :)

So I am not the best with UI. I know a good UI when I see it, but I’m not good at making it myself. I’ve accepted that, so it’s been a real adventure working on the GUI components of Ambapo. After getting over some sort of flu over Fall Break, I’ve made a lot of progress.

Right now the basic UI is a little busy, but all of the components are there. I’m going to work on editing this a bit more. I’m think about using sticky notes to represent the different components and rearranging them to see what looks the simplest and nicest. It’s a lot easier than dragging all of the palette pieces in NetBeans which can be a bit of a hassle.

Anyway here is a screenshot of the UI:


And here is the about box… that I’m assuming can be accessed from the “File” button in the menu bar:


Weeks 8 & 9: Grace Hopper and the Resource Extractor

I was unable to do a blog post for last week since I was at the Grace Hopper Celebration of Women in Computing! Thus, I didn’t get too much done for Week 8, but it wasn’t in vain as I had an amazing experience at the conference. I went to mostly security related talks which allowed me to see all of the different career opportunities in cyber security. I also got to meet recruiters and employees from a variety of companies and will be emailing them in the upcoming week to keep in touch. One downside of the conference is the amount of people there. It’s great because it legitimizes the conference, attracts big-name companies, and amazing speakers. However, this made the lines to get into certain talks LONG. Furthermore, they had 3-4 quick 20 minute talks in a row that clustered around the same topic/interest. This is great if you are interested in all of the talks in that room but say you are only interested in the second one in that room, the first in another, and the third in yet another. You can’t make all 3 because they have a limit on how many people can be let into each room. I really wanted to diversify the kind of talks I went to, but that didn’t really get to happen. However, now I know how to prepare for next year 🙂

Now on to Ambapo….

I am now able to completely get rid of the ConverterDriver in the core, and make it pure for library usage. To recap, I started this process by creating a new File Handler class. Next, instead of using the driver to test it, I am creating unit and integration test files that use the CIRDLES Resource Extractor to test the File I/O operations and conversions. I’m excited because this is the first time I’ve truly been able to implement something from another CIRDLES project/library into Ambapo or any of my projects really. This allows not only for cleaner code but better testing, reducing the chance that wrong calculations will be pushed to the master branch.

Week 7: File Handler and Getting Ready for GHC!

What I did: This past week I updated the core and made a new branch in my Ambapo fork called gui. I noticed that there would be less code duplication if I deleted the bulk convert methods inside of the converter classes, and instead just have convert methods that do individual conversions. In order to do this, I created a new class called Conversion File Handler, which can be accessed by the GUI while still allowing the core to be able to operate as a stand-alone library.  I also updated the README to add clearer and more information on how to format your CSV files. I added the capability of people adding headers or “comment out” lines that they don’t want read/converted.

Testing: The ability to convert CSV files is tested in the driver class as of now by doing:

  • UTM to Lat Long
  • Lat Long to UTM
  • Round trip, meaning Lat Long to UTM back to Lat Long

Problems: I tried running just the driver class since it has the main that tests the CSV bulk conversions, but my build script is throwing errors unrelated to the tests or files. It’s just saying that it’s having trouble building the core. It may have something to do with the fact that I am in a different branch (gui instead of master) or that since the gui has errors in it, it’s causing the entire build to fail. Either way, the master is building fine according to Travis.

Future: I will try and finish up the app subproject’s class which imports the file handler from the core and further along the progress of the main UI this weekend. However, I will be very busy this week as I will be attending the Grace Hopper Celebration 🙂 I am excited to network even though I have an internship already lined up for next summer. It never hurts to hear more about other opportunities out there, especially when you don’t have to stress about interviewing. I’m thinking about trying to set up tours of other companies as well while I’m studying abroad next semester. It’ll give me an excuse to travel a little more and increase my global network as well.

That’s all for now! Have a great week!




Week 6: Hurricane Matthew

Hurricane Matthew may have given me a ton of days off that could’ve been used to work on Ambapo. However, it also gave me no internet and no electricity, so I couldn’t have worked on it as much as I would’ve liked. With that being said though, I still got a lot done!

Added to the app (GUI):

  • Browser control
  • Mac OS Handler for the About box
  • A file helper (this is leading to some changes in the core… see next section)

Changes to the core:

As mentioned a few lines ago, I am making a small change to the core due to the need for better file handling in the GUI. This means I will add a class to the core that handles the file that needs to be converted. It will then call the convert method for each line in the file based on the type of conversion needed. This cleans up the UTMToLatLong and LatLongToUTM classes so that there is less repetitiveness by having a bulkConvert method in each class. Instead, they each just have one convert method which is called in the file handler.

In the news: 

Last summer, I interned at a company called Blackbaud which makes software for non-profits. I wrote about my experience, and was featured in, the College of Charleston Honors College blog.

The link to the blog post can be found here.

Weeks 4 & 5

I am combining a blog for weeks 4 and 5 since most of the work I did in these past two weeks is closely related.

First, I honed the javadocs so that they’re much more readable. I added code to my gradle build that automatically generates these javadocs for the API on jitpack.

Second, I began working on the actual UI of the project. It’s been taking some getting used to adding in the JavaFX components inside of NetBeans. It doesn’t provide much room for easy customization. I’m basing the components off the one that’s present in Calamari, but with a different style interface using finer fonts and a maroon color to represent College of Charleston. This is the first big project I’ve had dealing with UI, so I’ve been in contact with some friends who specialize in UX and Human-Computer Interaction to give me some tips. This is probably my weakest spot as a software engineer, so I’m excited for the challenge. I don’t have the eye for design per se, but you have to start somewhere.

So where did I start exactly?

I started with what I presumed would be the easiest… the About Box.

This box pops up when someone clicks the about button in the main project and shows the:

  • Title of project
  • Contributors
  • Version
  • GitHub link
  • Warranty

Here is a screenshot:


Everything is a bit out of line and it doesn’t seem to expand correctly just yet, so I’m hoping to fix this in the upcoming week.


Week 3: Fixed Gradle Issues

After planning to create the Gradle subprojects separated into app, core, and web, I ran into a few issues where the subprojects themselves wouldn’t open in my NetBeans IDE. However, this past week I have fixed that problem having to manually add the subprojects in Finder on my Mac. Finally, the subprojects would open in NetBeans with their proper folder structure. However, the build was still broken. This was because the subprojects only had the build.gradle files that were copies of the root’s. I changed this by also adding a local build.gradle specific to the subproject manually in the “Files” section in NetBeans and edited the file so that it contained and compiled the dependencies. After much cleaning and building, this issue has been all squared away. I moved the files from the original Maven project with all the calculations into the core and the build has shown to be successful. I’m excited in the upcoming week to actually start building the GUI inside the app.

Week 2: Maven to Gradle

This week I have converted the Maven build of the project to Gradle.

Why switch?

All in all, Gradle is the middle ground between Ant and Maven, with Ant’s flexibility as well as custom tasks, dependency management, and plugins from Maven.

Because Ambapo will be more than just a library, Gradle is the better choice as it’s much better with multi-build projects. In multi-project builds Gradle adapts to the build’s structure and architecture. Whereas with Maven, you have to adapt your structure or architecture to your build tool.

In this build, the javadocs will also compile to update the API.

Any issues?

I’ve set up Ambapo to be a mult-project Gradle build with app, core, and web sub-projects. However, in NetBeans I am having trouble figuring out how to add files to the sub-projects. When I press to open them, nothing pops up. Hopefully, I will manage to figure this out to get to the meat of the project.


Blog at

Up ↑