Monday, May 26, 2008

What's the most fun you've ever had ... programming?

While blog-surfing tonight, I came across this entry on Inside the Machine. This has me thinking...

What's the most fun you've ever had... programming?

I think for me, one of my more fun projects was taking part in CodeFest '99 at OOPSLA, during my sophomore year of college. I was part of a team that had to implement a coffee machine design from the DesignFest team.

So... what made this project fun?

  • Working on a team: I had two other people who I had to work with that I had never coded with before. We hadn't really prepared for our trip, but we knew that personality-wise we'd be fine together. But do personalities always line-up to coding styles? Surprisingly, in this case, they did. We were able to work together quite well. We figured each other's strengths and weaknesses and were able to cover pretty much everything amongst the 3 of us.

  • Learning a new language: In the few days that we had to implement the design, I picked up enough Java and Java Swing to be able to run with it. If I get to learn a new language while doing something interesting, that definitely makes programming more fun for me. And yes, we did choose the language because of the coffee-Java relationship.

  • Taking on other challenges: Besides learning Java, we also had to work on changing our code towards the end, when they decided to implement more features in the coffee machine. Other curveballs were thrown throughout the conference, but I think our team handled them well.


That event made quite an impact on me, in ways that I can't fully explain here, but it meant so much to me, that I figured when I returned to developer life, I would return to OOPSLA. This year, I will be doing just that, heading to Nashville at the end of October to participate in DesignFest at OOPSLA. This time, I look forward to being on the other side and putting my design skills to the test and seeing other people's design styles. I haven't seen much in the way of CodeFest mentioned, but I hope that it happens, as it was a great learning experience that I will always remember.

Labels: , , , ,


Share this post: Share on Facebook  Share on del.icio.us  digg this!  Share on reddit  Share on mixx  Share on StumbleUpon  kick this!  live it!

posted by Sarah at 2 Comments Links to this post

Friday, February 1, 2008

The GoF, My GoF Experience, and Design Patterns in General

Recently, the GoF came up in a discussion on Twitter. They were talking of design patterns, and Joel Ross actually had to refer to the book for some reason.

Now to a seasoned programmer, the GoF is well-known. But some programmers out there are not aware of the GoF or their book. They didn't mention it in my data structures classes in college, and we never did look at it in programming paradigms either. For me, I learned about it firsthand at OOPSLA '99.

The GoF was the Gang of Four, referring to the four authors of the book - Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. The GoF is also used in reference to the book, so take the abbreviation in context. The book came out in late 1994, and it was first made available at OOPSLA '94. (Side note: I use the term "was" - sadly, John Vlissides died on Thanksgiving of 2004.)

At OOPSLA '99, the GoF was on trial for crimes against computer science. The trial description can be found at The Show Trial of the Gang of Four For Crimes Against Computer Science panel description. After having spent some of the day coding in Java, a language I was cramming to learn on our off moments, I was glad to get a break and to witness this.

On Wednesday, November 3, 1999, the GoF was found guilty of their crimes. This was probably the best part of OOPSLA '99, in terms of bringing in experts with a great sense of humor. Although I don't remember all of the details of the trial, I do remember John Vlissides kept it interesting. That's what made me curious about the GoF.

After seeing them at OOPSLA, I had to see what their story was. What is a design pattern and why was there such a big deal about it?

A design pattern is a reusable solution to a common software design problem.
Some pattern references can be found here:


The more I had read about it, the more I wished that they would teach as a followup to a data structures course. The data structures teach the basics - loops, clauses, classes, and other building blocks. A class on design patterns would show just how to use those building blocks in real world applications. Sometimes, you need that extra step to show just how everything comes together.

Then again, it could just be the engineer in me that likes to see building blocks being used to build something in the grand scheme of things.


Links for this entry were gathered via a collaborative search on Tafiti, which was recommended by Jeff Blankenburg.

Labels: , , , , , ,


Share this post: Share on Facebook  Share on del.icio.us  digg this!  Share on reddit  Share on mixx  Share on StumbleUpon  kick this!  live it!

posted by Sarah at 0 Comments Links to this post

Saturday, January 26, 2008

Why OOPSLA?

Yesterday, at lunch, one of my fellow programmers asked me "Why OOPSLA? Why not TechEd or some other conference?" Honestly, having been out of the programming realm for so long, I'm not familiar with all the conferences out there for us. So give me links to look into these other conferences. I've already declared 2008 my year of passions - and programming is one of them that I'm focusing on. Give me fuel for my programming passion.

As for OOPSLA, there's a reason why I want to return to it. Nine years ago, I was part of a CodeFest team at OOPSLA '99 in Denver. CodeFest is where selected university teams come out and implement designs that were developed in DesignFest. DesignFest is a part of OOPSLA where developers get together in teams of 4 or 5 and solve a problem given to them. They need to work as a team and come up with all that the coders would need to implement the design effectively.

I worked on a team with two other people from our university's chapter of ACM. One of those teammates was the chair of the student group; I was his vice chair. The other happened to be a great programming friend as well. None of us had worked together on projects or coding, but we were very lucky to work very well together for this. When we got our problem - design and implement a vending machine, we had to then figure out which language would be best for our implementation and then go from there.

Our problem was not just any vending machine - it was a coffee vending machine. That told us there what language we just *had* to use - Java! I hadn't ever used it, so I learned it as we worked throughout that week. Both of my teammates had used it and knew that I'd be fine learning it, so that's what we ended up implementing it in.

Now OOPSLA stands for Object-Oriented Programming, Systems, Languages, and Applications. So the whole point of the conference is to see things and learn things that are all about the OO approach. I had used Visual Basic extensively, which really didn't get into OO notation as much as I needed for the conference. So I figured out that as well.

At the end of the conference, we had to present our project. We had a lot of people watching us throughout the conference, since we were programming out in the open. There were a lot of people in front of us at the conference, watching our presentation. We also never met our design team, so we did what we could with what they gave us. It was a great experience for me - learning a new language, learning about OO a bit more, learning more about the software design lifecycle, and meeting many people.

So why OOPSLA? It was where I realized long ago that I truly am meant to be a programmer. I found things that challenged me and that kept me curious. This year, I want to go to OOPSLA and participate in DesignFest. I enjoyed my CodeFest days, but I also want to see what it's like to work with total strangers on a programming project that we have no prior knowledge of, at the moment. I want to see what it's like on the other side of the OOPSLA 'Fests. And maybe I'll get to see CodeFest teams there who show the same potential that the teams of CodeFest '99 showed.

Labels: , , , ,


Share this post: Share on Facebook  Share on del.icio.us  digg this!  Share on reddit  Share on mixx  Share on StumbleUpon  kick this!  live it!

posted by Sarah at 0 Comments Links to this post

Monday, January 21, 2008

Introduction - Who is the Coding Geekette?

Nine years ago, I was a student at the University of Toledo, studying for my bachelors in Computer Science and Engineering Technology. I was the vice chair for the student chapter of the Association for Computing Machinery, and I was active at both the local and national levels. I was a presenter on SAMBA/SWAT and Squeak for the Toledo Area Linux Users Group. And I was part of the Toledo CodeFest team, representing our university at ACM's OOPSLA '99 conference in Denver.

My co-op experiences started right out of high school, as a Visual Basic programmer, meeting Microsoft SQL Server. The following co-op, I had the joy of having a title that I'll never have again - Y2K programmer. That's where I met the beast known as FoxPro. My last co-op had me doing a migration from Access to VB/MS SQL. After the co-ops, I focused on my studies while working with my favorite guys of Toledo - the Arts & Science College Computing crew.

After graduating from college and having all programming co-ops, you'd think that I'd be a programmer. But I ended up in technical support for an ISP. That's where I met a friend of mine who called me a geekette. He encouraged me to stick with programming, even though I was in support.

After that job, I ended up doing my time as a systems support analyst. I had the programmer role - using Visual Basic 6 and eventually moving on to VB.NET for 1 project. I also was wearing the hats of system administrator, database administrator, desktop support, and report builder. Great experience in becoming familiar with various technologies, but it was tough to keep up with, not having time to pursue my true interests.

Which takes me to where I am today - as a database developer. I spend my days working in C#, doing web development, with a focus on database-driven interfaces. I am finally back in my element, automating things and tinkering and doing things that programmers enjoy doing. Thanks to one of my new friends from work, I'm also back to networking with people in my industry. So this blog is here to give them my perspective on things.

If you ever want to know more about me, feel free to email me at sarah at codinggeekette dot com.

Labels: , , , , , , , , , , , ,


Share this post: Share on Facebook  Share on del.icio.us  digg this!  Share on reddit  Share on mixx  Share on StumbleUpon  kick this!  live it!

posted by Sarah at 0 Comments Links to this post