Thursday, March 21, 2013

Line 16: Preparing for POSSCON

So POSSCON is just around the corner, and while I am a member of Team Obsidian, I also have my own interests in the talks that will be happening. I have been browsing the POSSCON website, looking at speakers and the talks they are going to give, trying to decide who I should go hear. The goal of course is to pick topics that interest you personally, and to be able to interact with the speaker in a meaningful way after the talk.

With this in mind, my first pick for a talk was incredibly easy. Roel Van de Paar will be giving a talk entitled From Crash to Test Case: A Debugging Primer. He is a QA lead at Percona, which is a MySQL services company. His talk will focus mainly on what to do with the information you receive from a server crash, and how constructing test cases will allow you to quickly isolate and repair the problem.

Since I have been working on a Unit Test Implementation Generator for nearly the whole semester, I am eager to see what an industry professional like himself  has to say about constructing useful test cases. I am even more interested in what he will think of Obsidian however. It is my hope that his talk will prove both informative, and give me some new insights into Obsidian. My best case scenario is that he is able to impart advice about how to further improve the project, which will give us some direction to take it in the future.

The next talk I want to attend is Javascript: The Language Every Developer Should Know, which is being given by Tom Wilson. He is the president of Jack Russell Software, which is a local company that develops mobile and web applications for HealthcareIT. I am interested in this talk mostly because of the company's relative proximity to me, but also because I know very little about Javascript. I hope to go to his talk and become more educated on this language, especially if it is truly one that every developer should know.

The last talk I am going to is called How Open Source Helped Win the 2012 Election, and it is given by Harper Reed. He was the CTO on Obama's 2012 campaign, and is also the CTO for Threadless, a democratic shirt printing site. I am interested in his talk because of its proclamation of helping win the 2012 presidential election. It is really cool to think that community driven software has such a large impact on the world. I hope to talk to him more about his experiences during the campaign, and working for a website that I have used on more than one occasion.

Most of the conference though, I will probably be attending the Obsidian table, collecting members for our Google groups, and passing out stickers to attendees. I look forward to meeting all of the speakers, but I am personally more excited about meeting anyone who comes by our table and introducing them to the project I have been working on.

Monday, March 18, 2013

Line 15: Release early and often

Last time I spoke about the large work session that we held last Friday, So I guess I will give an update on that.

We gathered at 3pm that afternoon in the conference room, and we worked there for about 6 or 7 hours. We made decent progress on many aspects of the project, and the fact that we were surrounded by our group members was actually very good for productivity. We were able to ask questions of the group and get immediate responses, which was a tremendous time saver.

We got the wiki into good condition, and then were able to have a mini meeting about what changes needed to be incorporated on each page of it. With the feedback, we each had something to concentrate on for the next week.

We also planned out our trip to POSSCON more, and came up with a good layout for the poster. It features an easy to understand graph that shows what each case Obsidian recognizes to generate test implementations for. We will be focused on having that finished in the coming days.

When we met on Monday night, we basically hammered out a bit of the poster, rearranged some wiki pages, and added a Contact page so that we could just link to it, rather than repeating contact information across multiple pages. We also scheduled out our next week, and decided on meeting times and goals for the project. We have our work cut out for us in the next week, but I still feel like we are in a good position to finish all of this.

We all worked on modifying the wiki pages that we had received critique of on Friday, and they are coming along nicely. The wiki is complete currently, but the information still needs tweaking here and there.

I think that a good test of it would be to give Obsidian to a group or classmate currently in 462, and leave them to try to figure out how to use Obsidian on their own projects without any input from the group. If they can do it easily, that will indicate to me that the wiki provides a good base foundation for new users, and will really put me at ease about its functionality. However, if they are unable to do it, it will highlight areas that need work so that we can increase the usefulness of it before POSSCON. I had this idea while modifying my pages after the meeting, so I am going to talk to Hunter about it tonight, and the group about it either before or after class tomorrow.

The good thing is that the team seems very motivated, and is tackling problems and quickly coming up with solutions to them. POSSCON will be one week away on Wednesday, so we are very obviously in crunch time. The source code and .jar files will go up on the Google Code page next Tuesday, so we only have a little bit of time to finish tweaking before our version 1.0 release. We have the pieces in place to succeed, all that is left is to actually do it.

Line 14: The Doc is in!

Tonight our reading was about documentation in Software project. It talked about useful tools that you could use, and methods for documentation. This included commenting, and even "bug fixes" that were just documentation clarification for the project. We had some exercises to complete as homework, that would allow us to get further into the documentation mindset.

The first part was to go through the code and make sure that you had readable comments that enhanced the ability to easily understand your code. My project is of course Obsidian, and I must say that most of the commenting on this project seems to be in a good area. Most of the classes are easy to understand and have easily understandable comments describing their functions. The project goes even further, because it also generates comments for the test cases that it generates.

We have been working on documenting this project on our wiki for the past few weeks as well. In fact, I feel like we have been in the documentation mindset for the past few weeks.

We have been focusing on documenting Obsidian since we left for spring break, and by now most of our documentation has been completed. We have created documentation on how to modify tests, planned out frequently asked questions, and even wrote guides to getting the project off the ground quickly.

Overall, most of our efforts for the past two weeks have been put into finishing documentation for our project, so this reading was really easy to understand for me.

In POSSCON news, we are currently preparing for our trip, making lists of what we need to bring, and also ordering items to promote our project. We decided to make a form for people to sign up for our mailing list, that they can easily use when they visit the booth. We also planned out who is going to go up the day before to set up the booth, as it has to be done by 7pm on March 26th. This was sort of an issue, because the stickers that we are ordering will probably arrive on that Tuesday. Since Michael Cole has a test that day, it was decided he would stay behind to make sure that we get all of the things that we ordered. This is convenient, because we will be staying at Hunter's mother's house that night, and we wouldn't have enough beds for us to sleep in.

That was all that we really discussed over the past few days, but our first giant work session will be tomorrow on Friday, and I hope that we can accomplish a lot of our goals at it. We still need to decide on final wiki structure, and we are also going to begin working on our poster, so that we can display it at POSSCON.

We are in a good place for our final push towards POSSCON, and I really feel that we will be able to muster a strong showing for the conference. I am looking forward to it.

Monday, March 11, 2013

Line 13: After the break...

Well, Spring break has come and gone, and Team Obsidian is back on track in a big way. Before the break, I was expressing concern over our ability to remain on schedule, due to my own feelings of exhaustion. That prediction turned out to be slightly correct, as the team had a stumble in the last week leading to break. Few of us had what could be considered a "first pass" on our documentation assignments done, and that marked the first time we had ever been late on a deadline. Luckily, the spring break buffer zone allowed us to refocus, and when we met this evening the first pass was indeed complete, and we had made marked progress towards the completion of our final versions of these documents.

We also saw some progress on the enhancements to Obsidian, and we are virtually bug free at the moment (though I have no doubts that the finalizations of the enhancements will add plenty to be squashed). We are all familiar enough with the code to write about it, and seem to have been keeping up the stride we set at the beginning of the semester.

POSSCON is in two weeks from now, so we have also been organizing ourselves for that. We have been granted a booth, in a very good location I might add, and we are getting prepared to go. We used this evening to plan out what we needed to do before POSSCON, and start doing some of those them. These tasks include plans on how we are setting up the booth, who is driving whom, and what we need to bring for the show.

Since it is creeping up on us slowly, we have decided to bump up our meetings from two to three a week. Friday has been added, with the intent of using it to get work done. We will basically sit together in the conference room after class, and go about our personal assignments. Because we are together, we can ask questions of the group and make decisions rapidly, which should speed up the process quite a bit.

As for me, I suffered a little disaster over spring break. My laptop of 5 years bit the dust because of a hardware malfunction. The basic gist of it is that the part that delivers power to the screen has broken down and needs to be replaced. For a while, I thought this would severely impede my progress on Obsidian, however Michael Cole loaned me a spare laptop he had, and I was able to resume my work. My laptop has been packed up and sent off to have its part replaced, and it should be back before POSSCON.

Anyways, things are looking good with the group, and I am glad that we managed to keep on schedule, because it should mean a lot less stress in the long run. We are all looking forward to POSSCON, and want to produce the best project we can before it arrives.

Monday, February 25, 2013

Line 12: Reflections on my Progess

This week Obsidian continued to make progress towards becoming prepared for POSSCON. When we met tonight, we had a conversation about what we would need for the convention. A table and chairs were to be provided to us, but we planned out what our table would look like. We planned on a monitor mirroring one of our computers, so that we could run demos on popular open source projects for people who come by the booth. We also thought that it might be a good idea to have another computer open to people, so that they can sign up for our mailing list if they are interested in the project. We also decided that we would have our poster prepared, so that we have something else to show at the convention. We also discussed the possibility of creating a little script for the convention. Just something that would echo the command line arguments to run Obsidian on projects. This would create an easy and fast way to run it, without having to type out the lines yourself. We didn't reach a conclusion on this front, as some members thought that such a script would not impress visitors to our booth, because it might seem like we didn't know how to run our own project. I personally think that the idea of a script has merit, just for simplicities sake, but it remains to be seen whether we will pursue this idea.

Next we split up the responsibilities for documentation for the next milestone that is due on 2/27. My personal responsibilities are adding JUnit documentation, and writing about modifying test cases. You can check out the rest of the group's assignments on their personal blogs, or on the wiki for our class. The goal is to have a first pass over the documentation completed by Wednesday.

We also finished solving our second bugs since last week. On Sunday, I submitted a diff file to Hunter so that he can add it to the full project. We decided that we are going to use diff files to continue to patch Obsidian, so we were using this week to standardize the procedure. We ended up closing Issues 7 and 4 over the weekend.

I am sort of struck by a sense of being slightly burned out from investing so much time in the project, and it feels like a lot of the team is getting to be right there with me. It was to be expected as the school year went on and the course load started getting heavier, but it is still disheartening that we seem to be slowing down our progress. I spoke with Hunter about the growing sense of ennui, and he agreed that school was catching up with him as well. I have a feeling that this week is going to be hard to get through, and that we might fall behind schedule here. Since our deadline is so much earlier than the rest of the classes' due to POSSCON, it is imperative that this does not happen. I am going to try extra hard this week to try to push through the rest of my work, so that our project continues to stay on the schedule that we set for it.

Wednesday, February 20, 2013

Line 11: Refactoring Mindset

So, I believe I will start this off by actually talking about some of my experiences at the Alumni Symposium. On Monday, I wrote about what I felt the Symposium would be like, and for the most part I was correct. The speakers had good insight on how to get a job, how to sell yourself, and most importantly how to be yourself in the years after college. There was a Q&A period after the presentations, and they used this time to address many of the concerns that students had about finding and keeping jobs in the industry. The most important takeaway from the whole thing seems to be to just keep learning. Technology is a fast field, and you have to be willing to keep up with the times and learn new techniques in order to be a useful member in a company.

One of the really refreshing things about the symposium was how a few of the recent graduates still seemed to not really be fully sure in their jobs. They say that people treat them like experts, but they have to try just as hard as everyone else to keep up and be relevant. It provided a very humanizing viewpoint on the working world.

There was also a slight discussion about events that we could go to in Charleston to further network with people in the industry. Many were mentioned, but far and above the most important was the Job Fair that we will be having in March. I will definitely be attending this, and will hopefully meet some contacts that will be useful to me in the future.

In Obsidian news, we had a meeting tonight to discuss further bug fixes. We worked as a team to help Joanna figure out her exception handling bug, and I solved my Test Class naming issue. For now, we just gave it a more distinct string to append to the end of class names. We may improve upon this further in the future to make sure duplicate names cannot exist. For now though, the team decided this fix was good enough. We also talked more about the Web App and the website itself, and made a plan to meet on Friday to commit the bug fixes to the project.

Hunter also told us today that we had been granted a table at POSSCON for the 2 days it is running. We will be able to show off Obsidian to local developers, and hopefully gain some more members for our project.

One thing that I am currently worried about is the prospect of having a dead project in the future. A lot of the members of our class have been having issues getting into contact with the developers for their projects, and this is discouraging to them. While I don't want Obsidian to become like one of those projects, I do think that there is a very real danger that it might. We are 5 students, 4 of whom will be graduating this semester. That amounts to a lot of change in the future, so hopefully as we tackle that change, we will also be able to continue to grow and nurture this project.

Monday, February 18, 2013

Line 10: That could be me in x years

Tomorrow, in lieu of class, we will all be attending the Alumni Symposium for the computer science department. The point of this event is to allow graduates to come back to school and recollect on their first year of work. They cover topics like how they got their jobs, how they are fitting in, and what the school taught them that they found helpful in the real world. The whole thing is to get those who are close to graduating, like myself, some helpful advice for finding our own job in the future.

When I went to Sparc a few weeks ago, we met one of the speakers, Joshua Walton, who spoke to us for a moment as we took our tour. Since I already made contact with him, and Sparc seems like a cool place to work, his will probably be the talk I am most interested in. The other speakers seem interesting as well though. One of the interesting things about this symposium is that it focuses mostly on new graduates, but we have a few veteran speakers as well. I think that the input that they can give would really help me in my future job search.

In Obsidian news, we recently solved a slew of bugs. Last Wednesday we had a meeting to report on our solved bugs, and we each submitted our fixes to the repository. It was heartening to solve a bug, and even more so that each of us managed to solve ours with little to no problems. So, because of me and my group, the Obsidian project is now a little bit better. That feels pretty good. For a complete list of what we solved and how we solved it, you can always check our Google Code Issue Tracker. You will have to search through all of them for the completed ones though.

For next Wednesday we will each have hopefully solved another bug. The one I am currently casing out is Issue 3. We need a better naming algorithm for Test Classes because of discrepancies when programmers have already created a Test Class. The current algorithm just adds -Test to the end of the class name, since this is a pretty standard naming convention, whenever Obsidian has to name a Test Class, there is a high likelihood of it being named something like ClassTestTest, which would correspond to ClassTest.java. This confuses Obsidian, because it will look at ClassTest.java, and assume that it is the Obsidian Test Class, when it is in fact another programmer's Test Class. This causes many inconsistencies, and is a problem that needs to be addressed.

To solve it, I am probably just going to make more obscure naming convention, and refactor some code to make the search for obsidian test classes a bit more accurate. I think that this should guarantee that Obsidian always finds the test case that it wrote, and will solve the problem. I trust that the rest of the team will have theirs done by Wednesday as well.