Wednesday, December 9, 2009

After All This, Did I Really Learn Anything?

The semester is coming to a close, so this will be my final blog post relating to ICS 613 - Software Engineering. I have verbally committed to a Master's project/thesis with Philip Johnson, so posts on this blog will in all likelihood continue. I also tell myself that I should record some thoughts relating to work on other projects (like my iPhone applications), but we'll see if I ever act on that. Perhaps I'll update my Twitter more often (@keokilee). I'll have more time after this semester since the Master's project/thesis is all I need to complete to graduate. No more classes!

On the very first day of class, Philip pulled me over and told me that he was concerned that I wouldn't learn anything. After all, I had taken the undergraduate version of the class 3 years ago and most of the content is the same. Admittedly, I knew that and still took the class because I know that I want to graduate and go into the industry and find a software development job. I wanted my resume to say that I took a graduate level course in software engineering. So I was a bit selfish, and I feel a little bad about that. Only a little because despite knowing most of the content, I still had to do the work. And there was a lot of work this semester.

One thing that has changed is the "professional persona" component of the course. During the first month, I set up this blog, created a new resume, and set up a Google Site for employers to look at and see my accomplishments. I also set up my LinkedIn and TechHui memberships, both of which I hope to spend more time on now that the semester is ending. At this point, I haven't heard anything from potential employers, but I hope it improves my chances of getting a job.

What I had somewhat forgotten is how important it is to meet regularly when you're working in a group. This isn't to put down my group members, because I think we cranked out some awesome applications. It's just that at the graduate level, it is common to have a part time or full time job while taking classes. It's more difficult to get people together since people can be so busy. I had often made the comment that 613 students have the leg up on 413 students because grad school is our life. But perhaps it is the other way around; that 413 students have the leg up because we tend to have life (aka time-consuming jobs) take up our time.

But the most important thing I got out of this class was the chance to work on new and interesting applications. The projects (save for Robocode in the beginning) were significant and are definitely things to be proud of. These things are definitely going up on my Google site as soon as I have the time to create the screenshots and do the write up. And I mentioned the Master's project/thesis, which will involve further work on Philip's sustainability research. These opportunities alone make taking the class more than worthwhile.

What made the class even more enjoyable was my fellow classmates. I think that we became a pretty tight knit group (which also happened when I took 413). Many of us hung out and tossed around ideas outside of class, even if we were in separate groups. So shout-outs to Aaron, BJ, Dean, Lyneth, Wahib, and Yichi.

And with that, I bid 613 a fond adieu. I wish my fellow students who are working on extra credit all the best and I hope they do well.

E Hoʻomaluō - Version 2.0

After this somewhat long hiatus, I'm back to blogging about software engineering. Over the past few weeks, we worked on improvements to our original web application based on feedback from both Philip and the code reviews. However, we were also tasked with implementing two new pages; a stoplight page that shows the current carbon status and a grid information page that shows a chart of the energy generated by the sources on the island. We already went through the pains of learning Apache Wicket for the first time, so this should be a piece of cake, right?

As is often the case, things are more difficult than they appear. Sticking to our original vision of having AJAX for everything, we decided to implement everything using AJAX. This includes using an AJAX tabbed panel in Wicket to switch between the different pages. This task turned out to be pretty easy, but it also lead to our biggest discovery: Panels as partial HTML.

Panels in Wicket have their own HTML and Java files. They are not to be used as pages in the application; instead, they are designed to be inserted into an existing page. This could be because you want to reuse the component multiple times. In our application, I created a custom loading component that is used twice and can be used even more. However, I also found panels to be useful in that they separate components of a page into separate HTML files. For example, the grid information page has a header, form, and chart. Instead of having these components all in one file, they can be separated into three parts. Given that HTML support in Eclipse is fairly lacking, this made it easier to read since everything isn't in one long file.

What really completes panels though is that they can also be tested separately. Since the form and graph are dynamically generated, they are typically difficult to test. However, the WicketTester class has an option to start from a particular panel class. Then we can test the panel as if it were a page in Wicket, even though it's only a partial.

I also feel that I got more experience doing some web design. I've done some basic web design before, but this is the first time where I was involved with a significant application that was designed by me from the ground up. And I am very much satisfied with the design of the application. The application could've been cleaned up a little, but we simply ran out of time.

I do think our group process left a lot to be desired. The four of us rarely met all at once. Aaron and I spent some time outside of class and I think we got a lot done. But it would've been nice to get all 4 of us together more often. I took a more hands off approach for Dean's and Yichi's work because we rarely met. Our design and code would've been more cohesive if we all got together and worked on it.

Overall, I am quite satisfied with the application. There were many places where we stumbled a little, but I think we came out learning a lot. Development on the system will continue without me, as Philip has decided that any further refinements would be extra credit. On the one hand, I would like to see the project move forward. I have had many ideas for functions that could be added to the current application. However, the extra credit points won't affect my grade and committing myself to extra work for nothing during finals week seems like a really stupid thing to do.

Our project is again located here. There, you can download a distribution of our application.