Archive for the ‘Notre Dame’ Category

A Shift In Directions

Wednesday, June 4th, 2008

If you follow me on twitter, this might be old news and if you don’t, you should. On May 13th, I resigned from Notre Dame as Senior Web Developer. Don’t worry, it wasn’t without a safety net. I’ve joined cahoots with Steve Smith of Ordered List, a former co-worker at ND. We’ve got a lot of big things up our sleeves and are really looking forward to see what we are capable of with only ourselves to blame.

The reaction from folks when I tell them the news has been mixed thus far. About half say you’ll never go back and you’ll go on to great things, and the other half think I’m crazy to leave a good job in a “recession.”

I explain it like this to the haters. You know the look a lion has in the zoo? Now, contrast that with a lion in the wild. The zoo is me at Notre Dame and the wild is what I’m doing now. There is nothing wrong with the zoo. It’s safe, fun and gives you room to grow. Everything is taken care of for you and all you have to do is show up. Over time, I was afraid this would lead to complacency and I didn’t want to go down that road.

I figured right now is probably the only time I would do this as I’m not getting any younger and the longer you do something the harder it is to leave. I figure if this doesn’t work out, I can always go back to corporate/higher-ed but if I can work for myself, why not?

I spent my first few days at Ordered List in Portland, Oregon for RailsConf 2008. This week is my first actual work week from home and it has been great. I’m amazed at the distractions I had in my office at ND. Take lunch for example. At every job I’ve had, lunch is the centerpiece of the day. It doesn’t matter how productive your morning was or whether or not you are hungry, you always take lunch around noon. I’ve been engrossed in what I was doing the past few days and forgot to eat until like 1 or even 2pm. I wake up around 8 or 9, work hard for 5 or 6 hours and then hit cruise control for the rest of the night, tweaking things I did during the day and prepping for the next.

I know I’ll miss the day to day interactions with my ND co-workers as they were a lot of fun but I guess that is what the weekends are for now. :)

Side note: A few people have wondered if joining OL will affect my blogging here and at RailsTips. The answer is yes, but in a good way. I’m hoping to have more time and energy for blogging. The only change around here is the “Hire Me” ad bug in my sidebar and the only change on RailsTips will be a sexy new design (by Steve) and a more stable web host to serve it from.

If you are interested, you can read the welcome post on the new Ordered List site that features our new services and the fact that it is now a “we” instead of a “me.”

An Idea for Website Management

Wednesday, April 2nd, 2008

You may or may not know that I’ve been building a pretty sweet (in my opinion) website management system at Notre Dame. Every content management system of any sort on the web always starts with a text field for a title and a text area for content. Knowing this, that’s how Conductor started. Each page was made up of at least a title and some content.

The Trend

Now, with 13 sites live and another 16 in development, I am seeing a trend. Most pages on the web are more than just a title and some content. Thankfully, when originally developing Conductor, I tweaked some ideas that I liked from other systems and created page parts. Basically, we can put a page part in a template and a new tab will appear in the page editing area. The picture below has a main content area and three page parts (info, thumbnail and url).

page_parts.jpg

The Problem

Nothing seems wrong with that idea, right? It allows us to store content in smaller chunks which gives developers more control over markup, which in turn gives designers more control over layout. Wrong. Exhibit #1: the edit window for a page using a faculty template on the law school website.

faculty_parts.jpg

Below is an example page rendered in the template above.

faculty_page.jpg

We wanted to show things like biography, courses, and contact information in unique ways but not force content owners to mark things up uniquely. Because I assumed that all pages will be made up of huge content regions and not tiny pieces of data, the only way we could do that is by creating a page part for each item we wanted to store separately. This, as you can see in the screenshot above, caused a very tab happy interface. While this works, I believe it creates a sub par experience for the content owner (who does all of the updates). One reason I believe that is now the content owner has an entire text area, to fill in something as small as a website url, which could be better represented by a small text field.

The Solution

All of the above has led me to an idea. It might be something that sounds good as an idea but in reality would be awkward. It might also not be my original idea, as someone else could have used it somewhere in the same fashion I speak of, unbeknownst to me, but here it goes. All you need is a way to store data and a way to present data. Also, those two things are completely intertwined. How you want to display data affects how you want to store it. The more control you need when displaying data means the more separated the data needs to be stored.

Each piece of content that makes up a website needs two templates: one that determines how it is stored and the other how it is displayed. There could also be a third template that is how it behaves but I’ll leave that out for now. I think the ideal website management system has almost a form builder interface for developers to define what they need stored. From there, the developer should also be able to create the xhtml or xml or json templates that determine how the data will be consumed. The final piece of administration would be an area where content owners can fill in those created forms with glorious content.

The Use Case

Here is an example use case. Content owner wants to show courses on their website. Developer creates new content template called ‘Course’. They define the storage half of the template to be name and number as text fields, professor and semester as selects (from comma separated list of options), summary as a text area and order the fields how they should be presented to content owner. At this point, the content owner can begin entering name, number, professor, semester and summary for all their courses, while developer starts creating the other half of the template, which is how it should be viewed by site visitors. Developer dumps in xhtml, css, and javascript to view all the courses styled up to meet a designer’s every whim.

You might be thinking, uh, duh, this is what happens on every web application. Someone needs something stored, so you create your model and your controller and your views and you are good to go. You’re right, but that stuff always happens at the programmer level and requires a programmer to do it. What I’m thinking about would be at the software level and could be done by anyone with front end web development skills (xhtml, css and javascript).

The Conclusion

Once this beast was created, a front end web developer could build dynamic websites very easily tailored to a content owners needs and the administration of the website could be left in the hands of the content owners. The bad news is that I would have to start from scratch to build a pure version of what I just explained. The good news is I can get close to the same result using what I’ve already built in Conductor (more on this at a later date).

The Difference Between Good and Bad Software

Saturday, March 22nd, 2008

I’ve been working on a really cool new feature for our website management system, Conductor. Initially, I drafted up the database tables I was going to need. I poured over them, making sure that I wasn’t forgetting anything. The whiteboard with the database tables is pictured below. Once I was satisfied with how I was going to store the data, I dove into the code and started implementing the whiteboard drawing I had created.

Bad Start

bad_start.jpg

About three or four hours in, I realized that things weren’t going the way I wanted and that it was going to take a lot longer than expected to implement. The solution that I had come up with felt complex and was going to require a big rewrite to our theme system. Anytime something feels complex, I go back to the whiteboard because it usually means I haven’t fully thought it through. A bit frustrated, I went back to the whiteboard. This time instead of starting with how I would store the data, I focused on how I wanted to present the data (the interface that the end user would see). Again, you can see my scratching below.

Good Start

good_start.jpg

As I framed in the interface on the board, the problem started to seem simple and I came up with a new way of doing it that would require no alteration to our theme system or any other existing part of Conductor. Also, this new way makes more sense.

Conclusion

So what am I trying to get at? I think this has taught me the difference between good software and bad software. Bad software starts with the developer thinking how they are going to store the data and technically make it work. Good software starts with the end user. It firsts figures out what will be the easiest way for the user to learn and use the feature and then figures out technically how to do it. I don’t think this is a revelation or that I’ve never built anything in this manner. I am sure, though, that I wasn’t as aware of this before when building applications.

Don’t start technical and force implementation. Start with the interface and let things come naturally.

We Are The Fighting Irish

Wednesday, November 21st, 2007

Tonight, I realized that I hadn’t watched a couple of the “What would you fight for?” videos. Yeah, I make the spaces that the videos play in but sometimes I’m too busy to watch them. I went back and watched the two that I had missed and just like all the rest, I was pumped up at the end. Yes, I work for ND and yes, I’m a huge ND fan but these commercials are great.

Some people might be surprised by this but my favorite part of the new nd.edu isn’t the unobtrusive JavaScript or XHTML Strict doctype. It is the content. Not the text necessarily, but the videos. I have learned more about the University and the really cool things that are happening here in the last 3 months than my first 2 years. Whether or not you like the University of Notre Dame, you should go to the “What would you fight for?” archive and watch them. There are 7 and they are each 2 minutes long. It’s really cool stuff.

I like that the place I work for is a part of the things mentioned in these commercials and that I get to help share the message.

Local News Picks Up ND.edu

Tuesday, August 28th, 2007

This is really just another chance for me to fool around with video but it’s also kind of cool.

Newscenter 16

Deleting the Files

Also, if you are bored and looking for something to watch, below you can check out me deleting the files around 11:55PM on Monday night.

About This Site

Addicted to New is the personal website of John Nunemaker, a Web Developer enamored of Ruby on Rails and a wide-eyed fan of all things new and cool.

You are currently browsing the archives for the Notre Dame category.