My last final

I was about to lay down to go to sleep after an exhausting day, when I realized that there was a final that I hadn’t taken yet. Actually, the final is to write a blog post about what I learned during my Information Architecture class. So, I hope I’m not too late in submitting this last final of my college career. Here’s a wrap-up of what I’ve learned through the course of this semester.

One of the main things that I found unique about this semester is that we used blogging as a platform for discussion and class feedback. I think this was inspired by Paul Allen’s Internet Marketing class which also required class members to write in blogs. I had a great experience blogging in Paul’s class, and I also enjoyed blogging about Information Architecture related topics. I am also excited now to have time to blog more regularly about other topics of interest as well.

Service Oriented Architecture

We started out the semester talking about Service Oriented Architecture (SOA). This was quite exciting for me, because I have been a big fan of web services, which has been one of the major components of the Web 2.0 movement. Previous to the class, I had worked on building small mash-up applications using Flickr, Geocoder.us, and a few other popular web services. I had created a few web services of my own, mostly following the REST style of web service. For this class, I created some SOAP web services using php5’s SOAP extension and Ruby on Rails’ ActionService.

I really think that web services are going to be powering more and more organizations’ enterprise applications. There have been interesting debates in the Ruby on Rails world about the decision that Rails won’t support database stored procedures. From the pro-stored procedure side of things, data architects argue that stored procedures are the way to keep data integrity among all of the accessing applications. David H Hansson, the creator of rails, says the following:

“We took a pretty radical stand: Stored procedures and all things that make your database clever are evil… If you tell a lot of IT shops that, they’ll be majorly offended, because that’s just the way they do things.”

Web services help a company maintain data integrity, because all other functional areas of an organization and their applications use the services to access and manipulate data, rather than accessing the database itself. This gives one more layer of abstraction, and serves a similar purpose to stored procedures. It will be interesting to see if Ruby on Rails’ CRUD-style REST web service library called ActionResource takes off in other areas of web development. For more details on this see the slides(pdf) and video.

Model Driven Architecture

The next topic that we covered in depth was Model Driven Architecture (MDA). My last couple of blog posts covered that topic, so I won’t write a whole lot here. I think MDA has made some major strides in abstracting development to a higher level and could prove promising in the years to come. I think it still has some hurdles to overcome such as designing a system based on user interface needs rather than on the data model that sits behind it. Again, I’m not an expert in MDA, and it’s quite possible that systems exist that more fully address my concerns.

Database Scaling and Optimization

Database design is something that I really pride myself in doing well. I had a good time working as a Teaching Assistant to Dr. Gary Hansen’s database design class a few years ago. Although I felt that I could design a solid database schema to handle complex needs, I wasn’t so confident in my abilities in optimizing queries and scaling a database beyond your standard db box.

This semester gave me the opportunity to bring my skills way up in both optimization and scaling. As a team project, we studied MySQL scaling, and set up a master-slave db server configuration. We studied more complex scaling set ups, and I’m confident that I could implement any of these if I needed to in the future.

Our database optimization project was a fun one. We took complex queries the Mountain Recreation Properties site and optimized them to achieve better performance. After studying up on query optimization, I was able to turn one query that took ~5 seconds to process to under a second just by rewriting it. Then, I took it to under .02 seconds by adding appropriate indexes. I feel much more confident in optimizing any crazy slow-running query to achieve faster results.

Logging

The last concept we covered was logging. As my previous post on Log4J mentioned, I never had put much thought towards logging in any of my applications that I’d built in the past. Now that my eyes have been opened to the world of logging libraries and APIs, I am actually performing more logging tasks.

Once again I’ll plug Ruby on Rails as a superior web platform, as it has logging built right into the framework. Rails uses the standard Ruby Logger class, which is really quite good. Maintainable Software wrote a nice article on logging tips for rails. One of the most interesting things I discovered from that article is that you can perform logging out to a Firebug JavaScript console to help debug your AJAX applications. Pretty cool!

Value Added to My Education

Overall, I feel that my Information Architecture class really added a lot of value to my education. As a systems professional, I need to have a solid background in all of these areas to be a successful systems architect.

I’m now done with all of my finals. And I’ll graduate on Friday! It’s been an awesome last semester!