Personal tools
You are here: Home > CS 342 Blog Entries > Folder with blog entries for Michael Drum

Folder with blog entries for Michael Drum

by Naps, Thomas L last modified Feb 17, 2017 11:58 PM

Blog Entry for Week of 2/24

by Drum, Michael last modified Feb 20, 2017 04:45 PM

In Software Engineering 2, we have been familiarizing ourselves with Plone, an open source CMS. We have been tasked with eventually contributing to Plone in some way. This week, that is what I worked on.

The work consisted of a lot of socializing. I discussed potential projects, formed a team, and our team decided upon a project. I found each of these steps to be less trivial than I expected.

I was first approached by one student who was looking for a team. The two of us then approached another group and two and discussed joining their team. For a few days, it seemed this was going to be team. The team had already decided upon a project. I eventually came to the conclusion that the team was not enthusiastic about me, nor was I enthusiastic about their project. It was around this time I began discussing with Bill. We both needed a team.

We spent some time discussing ideas and eventually decided to team up. We agree to meet every Friday. Our goal for our first meeting was to develop a project proposal and send it to our professor. We wanted to do something realistic and useful. It was determined that Bill’s knowledge of electronic study abroad paperwork would be a good foundation for completing something useful with just two people. He and I are now going to use Plone’s capabilities to guide UWO students through a study abroad guide like this

This will not come without its challenges. I plan to host the Plone website we will configure from a computer I built last semester. This will allow us to work on the website as administrators from our own machines anywhere with internet. It will also let us avoid frequently working on virtual machines and remote desktops which can slow down process.

Blog Entry for Week of 3/3

by Drum, Michael last modified Mar 03, 2017 11:07 PM

This week brought change my team's project. Our conversations with a Plone Foundation Board Member and our professor Dr. Naps lead us to make a workflow about something else. We made this change because we were told a workflow for the study abroad application process would be too complicated.

We were encouraged to continue to focus on a project that somebody could actually use. Our team decided to make a workflow for an animal shelter with the help of someone deeply involved. They will evaluate our workflow ideas soon to make sure they are accurate and thorough enough.

Changing our project definitely set us back a few days. Our new workflow is meant to track an animal through the shelter process. It tracks an animal from admittance (or re-admittance), to adoption or euthanasia. Our group will make a proposal for this workflow this coming week so it can be scrutinized.

We hope this workflow will prove Plone is an alternative to paper processes that we suspect are going on in shelters across the globe. The low-cost of Plone when compared to enterprise CMS solutions may make this a more attractive option for non-profits like animal shelters.

I struggled to host our Plone site to the public because I have very little networking experience. I was able to get the site browse-able from the machine that hosts the VM that serves the site. It was an exciting moment. In order to accomplish that I followed many tutorials. Eventually, I deleted the VM, made a new one, reinstalled Plone, and followed a set of instructions posted to our class discussion page.

I have a guess for where to go from here. I suspect that I can make the site go public by opening my port 80 which is currently behind a firewall. I'll be following the instructions here:

Blog Entry for Week of 3/10

by Drum, Michael last modified Mar 10, 2017 11:55 PM

This week, I was able to host a Plone website on the server I built. I did this by researching, watching tutorials, and modifying instructions a classmate posted on our discussion forum.

First, I learned about how my LAN, or local area network, has a series of IP addresses that point to each device. I also learned how to determine my WAN address. On the internet, this points to my router. I found out that firewalls exist on all routers and most machines. For my server to be accessible outside the virtual machine host, I had to disable the firewall on the server. I did this by skipping some steps in the “Fixing Unable to Access Plone on Host Machine” discussion post on our class’ forum. Then, I port-forwarded my WAN address to the server with my router’s user interface. Incredibly, it worked! Now my partner will be able to configure our Plone instance quickly and easily almost anywhere without having to own a laptop.

Another thing I did this week was make a realistic workflow for an animal shelter to track their admits with Plone. I decided a shelter may want to keep track of their admits species, age, color, sex, breed, chip result, name, if they have been treated or tested for worms, if they have been cured of or tested for rabies, if they have been spayed or neutered, if the shelter implanted a chip, other test details, if they are good with dogs, if they are good with cats, if they are good with kids, the adopter’s full name, phone, address, and reasoning why the animal was euthanized if it comes to that. I was able to come up with these attributes by researching animal shelters and took inspiration from what some animal shelter management software does today.

Early next week my partner on the Plone project and I will be turning in our Project Proposal. We must come up with specific use-cases for our workflow. This will mean putting ourselves into the shoes of someone else. I think this is an important but often forgotten aspect of software development. Many projects never catch on because developers never took the time to imagine what someone very different from themselves needs. This may be the most emotional part of development. It should make the developer happy to imagine their software making another person’s work simpler and easier. I think, like many developers, I’m often tempted to skip this crucial step. If I’m not going to skip this step for this project, then I’m going to have to set aside some time to think without distraction.

Blog Entry for Week of 4/14

by Drum, Michael last modified Apr 14, 2017 11:41 PM

This week I continued to make progress on my group project. I created custom content types, workflows, states, and transitions which will be the foundation of the custom workflow my team is making for an open source CMS site running on Plone. Our group project hasn't been progressing at an acceptable rate so we have begun to maintain a queue of goals. We decided not to use a stack because we don't know the specifics of what our future goals will be. We suspect that this will work much better than the cards technique we have been using because cards encourage individual work while our queue is more appropriate for working closely together on the same item, our workflow.

I realized that I didn't know as much about the Data Access Object design pattern as I thought. In order to talk about it coherently, I had to learn how to talk like a DAO designer. Picking up words like "BusinessObject" and "TransferObject" and learning what they meant in terms of DAO helped with this a lot.

I was able to display a new table with a module I created in Open MRS by modifying java and jsp files in a Spring framework.

Next week I'll be doing an hour and a half work sprint with my group partner. Our last task in the sprint is to specify additional goals for our queue. I'll also be doing a lab activity with an H2 database, a DAO design pattern, and the Hibernate framework. I'm still a novice at H2 database work and DAO design. I've never used the Hibernate framework before. Using these new technologies will be difficult because I lack experience but the challenge alone is also rewarding.

Blog Entry for Week of 4/28

by Drum, Michael last modified Apr 28, 2017 11:44 PM

This week my team member and I got together to work on our group project. We designed a workflow in Plone to help employees at an animal shelter keep track of their animals. Once finished, we added additional functionality to show how the workflow can be a valuable utility.

The workflow, sometimes referred to as a process or business process in other systems, has 5 states: Adopted, Being Adopted, Left Facility Without Adoption, and Up For Adoption. However, there are only 3 transitions at this time: 'adopt', 'leave facility without adoption', and 'put up for adoption'. These transitions "move" animals to other destination states. 'adopt' to the Adoption state, 'leave facility without adoption' to the Left Facility Without Adoption state, and 'put up for adoption' to the Up For Adoption state.

We made the design call to register some transitions to multiple states. For example: an animal that is in the Up For Adoption state has two potential transitions, 'adopt' and 'leave facility without adoption'.

We also felt it was important to allow adopted animals to be put back up for adoption by making one transition because the adopting family may realize they are not a good fit for that animal or an employee might change the state to Adopted by mistake.

We used something called 'Content Rules' to move animals from a folder that is viewable by only employees to folders viewable to the public and vice versa. These actions trigger when animals go through certain transitions. It is nice that people can see the animals up for adoption without having an account with the site.

by Naps, Thomas L last modified Feb 17, 2017 11:58 PM
CS emphasis accredited by

ABET logo

Contact Us

Computer Science Department
UW Oshkosh
800 Algoma Blvd.
Oshkosh, WI 54901

Phone: (920) 424-2068
Fax: (920) 424-0045
Building: Halsey Science Hall

Rooms: 229 (general office), 221 (David Furcy, chair)

Email: Send mail to chair at