Improving Senior Project - A Step by Step Guide

My senior project advisor here at Rose-Hulman has asked for constructive feedback on how to improve the Senior Project for future classes and how to improve the CS/SE curriculum as a whole. This post is my attempt at providing that constructive feedback. In each section, I will first list a problem or criticism and then how I think the situation can be improved. Of course, this is just one set of options, but I did my best to carefully consider the senior project scenario and come up with appropriate solutions.

Making Teams Work

When it comes down to it, forming a team at Rose-Hulman with other students will always be a difficult task. Conflicting schedules, interests, and even sleep patterns can lead to the downfall of a team. Right now, team size is limited to 3-4 people. For most projects, that’s a great number. However, its not just the number that is important when you form a team, its who makes up the team that matters. This is where I think the problem comes in.

CS and SE Are Different

It really boils down to this. At Rose, the curriculum for CS and SE students is different, and I think the desired goals for a person of either major is quite different also. Computer Science majors should be whizzes at software implementation, algorithm design, and the low level implementation details that need to be thought out while you’re in the later stages of a project. Software Engineering students should be prepared to take on more of a managerial and design role in a large project like this. Observing this, I suggest the following team composition rules be established.

  1. Each team has at least one SE major
  2. Each team has at least one CS major who is not an SE major (i.e. not a CS/SE)
  3. The team leader is an SE

Since the capstone project should be preparing students for the real world, we should have people doing what they’ll probably be doing when they leave here. Plus, theoretically, the people get to do what is enjoyable to them for the most part, and work is spread out across interests. SEs will get to do a lot of design and documentation work, as well as managing the process and the team. They would still do implementation, but not as much as CS majors. The CS majors will be code-ninjas who sling stuff corresponding to the process that is being used for the team. They get to eat, sleep, code, and be merry.

The Tools Really Matter, Really!

Let’s face it, the way we manage projects anymore is through software tools. These days, there are a lot of advanced, mature tools that people can use to manage their projects, and I propose that each team be instructed to use one of them to manage their project. Off the top of my head, I can think of two tools that would be a real boon to the senior project process.

Basecamp

This product is produced by a company called 37Signals. It is widely reputed as one of the best project management tools out there, and for good reason. I recently took Basecamp for a whirl and was really impressed by what I saw. Multiple users can be added to the system in different roles (team member, advisor, and client in this case) with specific permissions given to each. Project management utilities include an integrated calendar with an RSS feed, support for milestones, assignable task lists, time tracking, and a wealth of reporting tools.

If students would use this product like they should, by making it a part of their daily routine, the project advisor would be able to see, at a glance, just how well a team is doing. Document milestones could be tagged on the project’s calendar and the actual documents could be uploaded to the site (where they can be tagged as corresponding to a milestone). The advisor could see an effort breakdown immediately by viewing certain reports. Again, its an awesome system, and I won’t try to describe it in detail here… but please see this review of Basecamp.

FogBugz

As an alternative to Basecamp, consider FogBugz. This is a solution from Joel Spolsky’s company, with which Rose-Hulman has an amiable relationship. I’m sure you could get copies for a heavy discount or for free if you asked.

The solution is simple, it is easily adaptable to different process models, and its organized around the concept of getting things done. I really won’t expand anymore on this because I’m sure you’ve read at least a bit about it (due to Joel’s sponsorship of a project this year) but consider it carefully.

Blogs

Each team leader should have a blog. This blog should community weekly (preferably on a set day, like Friday) a summary of the previous week’s progress, setbacks, and lessons learned. Why is this important? It makes a team sit up and recognize the things that it is doing well, the things it isn’t doing so great, and more. Allowing comments would make sure that other teams could try to help them. Provide some type of incentive for constructive comments. Perhaps these blogs could serve as a peer reviewing forum with a topic assigned for an extra blog post on certain weeks. I’m not sure how this would work exactly, but blogs allow for an openness that seems to be the thing to do in business today.

Ughhh…. Lectures

I have learned approximately nothing from the lectures that we have had. While we only have one every 3-4 weeks, I still feel they are unnecessary, and many students don’t get enough anything out of them. My recommendation is to have a list of highly recommended books to be read by members of the senior class. This list should include several things. Here is my proposal for the books to see:

  • Code Complete - 2nd Edition
  • Design Patterns
  • Refactoring
  • Patterns of Enterprise Application Architecture
  • Dreaming in Code
  • One of the many books on testing. Suggest a implementation level book for CS students and a system level book for SE students.

There are numerous others that I could have recommended, but I think this covers the basics of what a student should learn about before coming into this project. I’ve read all of these books because they’re extraordinarily interesting. They’ll make people better developers (which is what we need). Joel Spolsky has said that programmers spend less time learning about their profession then they should, and in my experience here at Rose-Hulman that’s definitely true.

Revamp the Document Grading Model

The document grading model is just not very good at this point. While it has been said that you can turn a document in at any point prior to the actual due dates (mid-term and end of term), this does not provide the proper motivation for teams to do so. Since this is a capstone project that should demonstrate our experiences and what we’ll be ready to do in the real world perhaps we should treat document development more like we would in a business.

First, get rid of every template on the senior project website. Why? The answer to this is simple. A template, for college students, promotes a copy and paste mentality and eliminates the critical thinking that needs to be performed when documentation is being created. Isn’t this critical thinking the important part of the process?

In addition to this, most of the templates currently on the site are outdated and bloated. They copy sections from one another without proper linking. Students get confused when they access the site and see 20 different examples of the same document type. In general, its a complete mess.

Second, actively promote individual thought and formatting of the documents. Meet with the team leader of each team to discuss the documents that are appropriate for that team. Keep track of the decisions made in one of the tools covered above, with a due date for each document. Make the teams accountable by enforcing a rough draft to be turned in 4 days before the due date, to be skimmed lightly by the advisor, and returned the next day so that the team can still make changes.

Third, to replace the template documents, create 1-2 case study-like documents for each document type that will be turned in by more than one team. These case studies can act as good examples of what a document could look like. Make these case studies informative, including not only the actual document, but a brief analysis of the document that promotes its high points and critiques the low points. Do not, under any circumstances, use textbook examples. Find real documents from real companies to use. IBM, Google, Intel, and Microsoft would be nice places to start looking.

That’s It

These are my suggestions for senior project as I see them now. Hopefully this feedback provides some impetus for change in a positive way.

A Tale of Two Operating Systems: The Applications

One of the reasons I decided to reformat my computer was because I always end up installing many more applications then I actually need. In addition to that, I often have to install software that I downright hate for some of my computer science classes (Xilinx IDE, I’m looking at you!). Because some applications’ uninstall features don’t actually remove themselves and all their components from the computer, I end up with a bunch of registry cruft and folders on my file system that I’m not particularly happy about.

Of course, a computer can’t really do you any good unless you’re running some type of applications on it. In this post, I’d like to summarize the applications that I’m using on Microsoft Windows Vista and those that I utilize on Ubuntu. In general, I only install applications that I’m actually going to use, and those are the applications that made this list.

Vista Applications

There are two main types of applications that I run on my Vista partition. First is productivity software. These are the applications that I need in order to manage documents, write and process documentation, and generally get by in today’s connected world. The second type of software I run on Vista is utility applications. These are generally small things that I use to speed up my wok or provide some small little pieces of functionality.

Here are the applications that I run exclusively on Vista:

  • Microsoft Office 2007 — Honestly, this is almost a must have for me. I don’t know what I’d do without it, to be completely honest with you. I use Microsoft Word 2007 for creating almost all my documents for school (its what everyone on my teams prefers) and the formatting options are so easy to use that its ridiculously easy to create a good looking document. Outlook 2007 is the best all in one scheduling, tasking, and email application I’ve ever utilized. I used Thunderbird for a while, but Outlook is in a whole other universe when it comes to functionality. Sometimes, I am near amazed by the functionality it provides.
  • Adobe Creative Suite 3 — Without a doubt, this package of software is the industry standard when it comes to creative endeavors. I have the Web Premium edition of the software, and it is awesome in general. I am generally using either Fireworks, Photoshop, or Flash Professional, but I’ve dabbled in Illustrator from time to time. I’m just not that great at using it, yet.
  • Microsoft Visual Studio 2005 — I’m a part time C# developer, so this application is almost a necessity. C# as a programming language is awesome. It is easy to learn for someone with a background in Java, and the design time tools for Windows Forms are easy to pick up. The Visual Studio IDE is very, very powerful and easy to use. If you’re doing any type of .NET development, you should be using this IDE, and I do.
  • TortoiseSVN — This is one of the utility applications that I utilize. It is a great graphical interface for subversion repository access. Without a doubt, if you’re going to use SVN on Windows, you’d be well suited to use this application.
  • Notepad++ — Another utility application, Notepad++ is the best pure text editor that I’ve ever used. It has an extensible architecture that allows for an infinite number of plugins. It can be used for reading plain text files as well as various source code listings. The syntax highlighting is great, and the use of line numbers and other programmer friendly things is awesome. I highly recommend this application for HTML editing over a big IDE like Dreamweaver or something like that.

Ubuntu Applications

For my purposes, Ubuntu is meant almost solely as a development environment. I’m not going to cover the applications that are pre-installed with the operating system unless I explicitly use them and would have installed them if they weren’t present. Instead, I’m going to cover the applications that I installed using the Synaptic package manager or the apt-get terminal command.

  • eclipse IDE — If you’re doing Java development, you have one of two choices when it comes to full featured Java IDEs. The first is NetBeans. It is a lightweight IDE that includes, out of the box, a visual editor for user interfaces. That’s a nice feature to have. My choice of IDE, however, is the eclipse open source IDE. Eclipse is more like an IDE framework then anything else. It originally was meant for Java, but can be used with PHP, Javascript, C, C++, Scheme, and many other languages now. In addition, eclipse has more plugins developed for it than anything I’ve ever seen. It might even have more than WordPress, another really extensible system. My favorite features are the source formatter and class browser. I strongly recommend the use of the eclipse IDE for all Java developers.
  • Pidgin — You can’t keep in touch with anyone anymore unless you’re using some type of instant messaging client. In my experience, Pidgin is a lightweight and responsive IM client. It is another extensible application with numerous plugins providing an enormous amount of extra functionality.

Common Applications

I’ve obviously left off numerous other applications that I use. One example is Firefox, my web browser of choice. I use it on both platforms, Vista and Ubuntu, and love it for its plugins and responsiveness. I also have the JRE installed and other things like that.

In the next part of this series, I’ll be posting my impressions of my dual booting experience and the positives and negatives of the process as I see it. If you know of any other excellent applications that I’m missing, be sure to let me know.

A Tale of Two Operating Systems: The Beginning

Reformatting your hard drive on your laptop can be done if you know what you’re doing, but if not, you could put your computer in need of some serious laptop repair. Whether your laptop LCD screen isn’t working anymore or the reformatting caused the laptop fan to work overtime, get it fixed before something serious happens.

Last week, I started along a path not easily turned away from. I decided it was time to go the route of the dual-boot. I reformatted my hard drives on my laptop and my desktop and set out to install Vista and Ubuntu. Here’s what I did:

Step 1: Backups

The first thing I did, as I’m sure is no surprise to anyone, is backup all my personal and other files on my Windows box. For me, this meant pulling down the tutorials that I had accumulated over the years, saving my various resumes and cover letters, and making sure I saved the pictures that I have on my computer. Since I was going to be reformatting, this backup was an absolute necessity.

After making the appropriate backups, I uninstalled Microsoft Office 2007 and Adobe Creative Suite 3 from my computer. I uninstalled these before formatting my hard drive because they require registration with a product key, and I needed to deactivate the product to make sure I wouldn’t have trouble when installing it again. After doing this, I made a list of the applications I had installed and would want to reinstall after the format I was going to do. Where possible, I downloaded the install utility for the program and stored it on my backup drive so I wouldn’t have to download it once I had reformatted. I did this for Mozilla Firefox, Notepad++, the Windows JDK, and the Windows Live OneCare installer.

Finally, I saved several preferences files to my backup drive including my eclipse preferences and my Firefox preferences and installed extensions. To accomplish the second part here, I used the fabulous Firefox Extension Backup Extension. At this point, each thing that I needed backed up was on my portable flash drive (I only used about a gig of backup space). I downloaded and burnt the ISO for Ubuntu 7.10, and I was ready to go ahead and get started with my OS installation.

Step 2: Partitioning and Windows

To start installing my new operating systems, I had to first decide which to install first. Since I’m definitely more familiar with Windows, I decided to go with Vista first. Anyone who has ever installed windows before knows how to get everything setup here, but I’ll reiterate here for anyone unfamiliar with the process.

First, you’ll want to insert your Vista system DVD into your disk drive and restart the computer. If you’ve set your computer to check your CD/DVD drive during bootup, you should be fine. If it is not set as such, you’ll have to mess with your BIOS settings by pressing F2, F10, or F12 during the start up procedure. There, you’d enabled multiple bootup devices and define your optical drive as the device to examine first. You can find more detailed information here.

Once you’ve booted into the Windows install screen, you’ll have to enter your product key. Do this, and you should be brought to the Windows partitioning tool. Here, you should go ahead and repartition your hard drive to account for your new VIsta and linux installation. The process is pretty intuitive, but the hard part is figuring out how exactly the hard drive should be partitioned.

You’re going to want to create at least 3 partitions, and the way you probably want to do this is to consider the following things:

  • How big do I want my Linux partition to be? — I would recommend, at the least, 10 GB of space for your main Linux partition. If it is going to be your primary operating system, you’ll probably want to allocate more space.
  • How big do I want my Linux swap space to be? — Depending on your hard drive size, you can probably make this as big as you want. I seem to be getting pretty good performance using 1 GB for the swap on my laptop and 2 GB on my desktop, but your experience may vary.

A good reference (that I found after the fact) is the following: Partitioning Reference. It recommends double your RAM for your swap, which I definitely didn’t do. If I could go back and do it again (hassle-free), I would.

After partitioning, select the partition that you set aside for your Windows install, and go ahead and install it. The Windows Vista installer provides step by step instructions for you, so I’m not going to go any farther with that here. All I can say is that you should set up your administrative user, and that is all. Don’t worry about installing anything in Vista until you have installed Ubuntu. That way, if you end up having to start over (corrupted file, something goes FUBAR) then you won’t have wasted a bunch of time configuring things. After following these steps, I was ready to go ahead and get started with Ubuntu.

Step 3: Ubuntu

After making sure Windows installed properly (it boots up, you can log in, etc.), I was ready to start the Ubuntu installation. I inserted my Ubuntu disk that I burned into my optical drive and restarted my computer. Since I was still set up to boot from my optical drive first, I was presented with an attractive boot screen, where I selected the first option to install or use Ubuntu. This is the default, so if you’re following along it should be pretty easy to do. Ubuntu will boot from the CD or DVD that your burnt it to into the actual operating system. This was a nice surprise for sure.

Once Ubuntu had booted up, there was an icon on the desktop titled Install. All I had to do was double click the icon and the install process started. It was straightforward and pretty fast, with explanations every step of the way. It was almost as good as the Windows installer. The only part where you might get confused is the partitioning selection options. When presented with partitioning options, I chose manual, and then assigned the swap and main linux partitions to those that I had created earlier. I honestly don’t know anything about the different formatting options that were available, so I just picked the first one in the list, ext3.

Like I said, the install went quickly, and it automatically installed a boot loader, GRUB, that lets you pick from your installed Operating Systems. So, I booted into Ubuntu to ensure that it worked and I was able to login. On my laptop, Ubuntu recognized all my hardware immediately and had drivers for almost everything. The only exception was my graphics card, which had drivers, they just weren’t able to run the whiz-bang compiz 3d desktop effects that I wanted, so I followed a tutorial to download and compile the official ATI drivers.

Step 4: Wrapping Up

At this point, I had a fully functional dual boot system. I could boot into either operating system, both were functional, and everything was working just dandily. The next step was installing all the programs and packages that I was going to be using, but I’ll save that for the next post in this series. There’s a few things that I did right away, though, that you might want to emulate.

First, I wanted to rename the Vista option in GRUB to strip out the Longhorn reference and make it the default on my desktop. To do so, I opened a terminal window (Applications > Accessories > Terminal) and typed sudo gedit /boot/grub/menu.lst. The file was well-commented, so I was quickly able to figure out what I needed to do. I saved the file, restarted the system, and it was clear my changes had worked.

After this painless install process, I was really stoked about using Ubuntu. Is it possible that everything is this easy and fast? I certainly hoped so. In the next part of this series, I’ll cover the programs and packages that I installed in each operating system, the reasons why, and continue to give some details of my experience.

Technical and Programming Books I Own

As a software developer, I consider it part of my duty to be constantly learning. It seems that I’m always reading something to attempt to improve my skills. My technical books cover a variety of things, but most concern new languages, practices, or software packages that I’m being exposed to or wish to gain a more advanced level of understanding of. I thought it would be fun to list the technical books on my bookshelf. I’ll be organizing them by fully read, half read, and not yet read (a surprisingly large category). In addition, I’ll try to provide a brief description of each book that I’ve read. Here goes:

Fully Read

  • Code Complete - 2nd. Edition - This book is an absolute must-read for anyone who considers themselves a serious software developer. Steve McConnell reviews best practices and principles in this book in a way that is easy to understand the first time through. My favorite chapters concerned object oriented techniques like encapsulation, abstraction, and inheritance hierarchies, but your opinion my differ.
  • Introducing Maya 6: 3D for Beginners - This is a decent book that I’ve read all the way through. It doesn’t assume any prior knowledge of 3D content creation and walks you step-by-step through the process of modeling with polygons, NURBS, and subdivisions. I found it was lacking mostly in texturing information. This book is outdated now (since Maya is all the way up to version 8.5) but it still provides useful information for a cheap price if you’re just going to be using Maya Personal Learning Edition anyways.
  • Pro Drupal Development - I had to learn the Drupal CMS for the job that I currently possess, and my employer was generous enough to send me this book to guide me along the way. Before reading it, I had no idea how to manipulate Drupal. Now, I can make the CMS dance at my fingertips (ok, slight exaggeration, but I did learn a lot.) If you’re going to be doing development with Drupal, I can’t recommend this book enough.
  • Don’t Make Me Think - This is a classic that belongs on every software developer’s book shelf. In this work, Steve Krug examines user behavior and what you should do to enhance the user experience at every interface level. It’s not so much a book about code as it is about the general behavior of software and its interaction with its users. You need to read it if you haven’t.
  • Money for Content and Your Clicks for Free - It’s been a while since I picked this book up, and it’s not really a must-read by any stretch of the imagination. However, if you’re having trouble generating ideas about how to make money with your web site, the work may be worth picking up. It has information on blogging, podcasting, and running membership sites. It also covers the basics of advertising and online revenue generation.
  • The Elements of User Experience - Excellent book and a must-read for every web designer out there. You need to be aware of the principles taught in this work. It’s very similar to Steve Krug’s book except that it focuses exclusively on the web. You’ll instinctively know when you need to rework designs if you read this book, plain and simple.
  • How to Start a Home-Based Web Design Business - I picked this book up on a whim because I am really interested in someday owning my own web development company. I thought this would be a good place to pick up some information that would help me prepare for the future. I can’t say I was disappointed, (I did read it cover to cover) but there were some things that the author didn’t cover in as much detail as I would have liked. For example, his section on finding jobs and clients was a little vague for me. I would have preferred a little more detail and instruction. I’d say you can probably find all the information contained in this book on various web development and design forums and websites. As such, I can’t really recommend this work.
  • The Weblog Handbook - I’m pretty sure I picked this one up in an airport bookstore because I thought it would make an interesting read. I wasn’t disappointed with the material, and the author did a great job of explaining blogging in terms that a non-technically savvy individual could understand. It was a little too basic for me, but I wasn’t really expecting a tough read. Good gift for your significant other or assorted loved ones to better understand why you write on a web site for all the world to see.
  • Beginning CSS - Cascading Style Sheets for Web Design - When I first started getting involved with web development and design, the arena was on the verge of a new day. Out went the font and color tags and in came CSS. I have used CSS for all my web development since the beginning, and this book is a big reason why. It is how I learned and I’ve used it as a reference several times since I initially put it down. This book is great for all beginners to web development and design. In addition, you people still using tables, but this book now.
  • Beginning PHP5, Apache, MySQL Web Development - This was the first programming book I ever picked up. I’m glad I did. It led to a wonderful transformation in my life and now I get paid to do something I would be doing anyways. It’s fun and all it takes is a little brainpower. Because of this book, I’m a pretty good PHP programmer and I have worked to build my skills ever since. If you’re a beginning PHP developer, this will be the only book you need for a while. I guarantee it.

Half Read

  • The Principles of Beautiful Web Design - Around the same time I started learning Drupal development, this book that I had ordered a while ago showed up. I’ve only gotten to read it about half way through, but it’s really good so far, I’d say. I appreciate the approach the book takes more than anything. At heart, I’m a developer who can’t really design, so this book will hopefully change that. I”m going to be designing a web site from scratch in the near future, so maybe this book from SitePoint will help.
  • Building Online Communities with Drupal, phpBB, and WordPress - This is another book provided by my employer to help me get up to speed on Drupal. Frankly, if you’re dealing with a 5.x build of Drupal, you should go with the Pro Drupal Development book listed earlier. However, if you really would like to know a bunch of stuff about three different open-source software platforms, I’d have to recommend this book to you.
  • Beginning .NET Game Programming in C# - I picked this book up on a whim one day because I was interested in creating games and thought the easiest language for implementation would be Microsoft’s C#. I haven’t gotten the chance to work through all the code in the book, but I’ve read a lot of it. It’s chock full of tutorials that really demonstrate the things that you’ll probably want to do if you’re programming a game. In the first chapter it’s already throwing out ways in which you can optimize your game code. I’d say it is a decent resource if you’re interested in doing exactly what the title says.
  • Beginning Game Programming - This is a good introduction to game programming as a whole. It covers a lot of the basics like drawing sprites on a screen, rendering a 3D mesh, using DirectX interfaces, and so on. I’d have to say the best part of this book is the exercises that are at the end of each chapter. I find this really helps me as I’m learning a new language or technology. I can’t say it’s something you absolutely must pick up, but it is worth a read.
  • Introduction to Game Development - I own this book because it is the textbook for my Computer Game Development class at Rose-Hulman. It is nowhere near half read because it is just plain huge. This is a standard sized technical college textbook chock full of information. If there is something you need to know the basics of how to do in game development, this book probably has information on it. I really recommend it as a good book because of the writing style and how knowledgeable the authors seem. All this, and it’s relatively cheap for a textbook. Pick it up if you’re interested in not only in programming games, but how to design and market them as well.
  • Blog Design Solutions - This book is decent. It has information on WordPress, Expression Engine, Movable Type, and TextPattern. I’ve never used anything other that WordPress for my blogs, and that is why this book is in the half-read section. The WordPress portion of the work is well-written and well-thought out, but I felt it was too basic for anyone having messed around with template tags after reading the WordPress codex. Pick it up if you’re going to be using all four CMS platforms, but leave it on the shelf otherwise.
  • Adobe Photoshop CS2: one-on-one - This book was a real eye opener for me as far as the power of Photoshop goes. I’ve always used it for the creation of web graphics and optimizing images for the web. Little did I realize that my visual optimizations were nowhere near the quality they could have been. After reading the first half of this book, I was suffering from a tad bit of information overload so I put it down. I haven’t picked it up since because I found I don’t use Adobe Photoshop that much compared to other tools and technologies.
  • The PHP Anthology: Object Oriented PHP Solutions - Volume 1 - I picked this book up because I wanted to become more well-versed in my understanding of PHP’s object model. About halfway into the book, however, I realized that I was just relearning all the same stuff that I had gotten from my fundamentals of software development class where the tool used was JAVA. It’s a good book for someone who has only ever done PHP before, but if you’ve worked in a stronger typed object-oriented language, I’d say leave this one on the shelf.
  • Professional PHP Programming - This book was another addition to my bookshelf in an attempt to upgrade my PHP skills. Unfortunately, I didn’t pay enough attention to detail and did not notice that this book was somewhat dated by the time I bought it. The best sections have to be the ones that deal with writing secure code, but other than that, the information and best practices portrayed in this work can be found elsewhere.
  • Software Engineering for Game Developers - The format of this book is great. The authors examine, in depth, a real game development project from start to finish and you’re invited to code along with them. However, the main focus of this work is definitely on engineering. How do you go about the process of game development? It’s definitely a good read when combined with the Introduction to Game Development mentioned earlier.

Not Read

  • Professional AJAX - I haven’t gotten the time to go through this one yet. One of the reasons is that most javascript libraries out there right now support some kind of AJAX calls within the framework. That means you don’t have to write your own AJAX code, and so I haven’t had the opportunity to do so yet. I do still mean to read this book, though, if only because of the quality of writing I’ve experienced in previous books by WROX publishing.
  • Game Art for Teens - I honestly cannot tell you why I bought this book. I was probably in the book store and wanted to buy something and this caught my eye. I have not had a chance to look it through even once since I bought it though.
  • DHTML and CSS for the World Wide Web - This is another book that’s fallen victim to the fact that javascript libraries make this stuff so easy that doing it yourself is almost pointless. Sure, I can write something that changes the margins on an item, creating the illusion of movement. Alternatively, I can just tell script.aculo.us to create a sweet new effect.
  • Adobe Illustrator Classroom in a Book - I want to learn this software package so bad, but my creative eye and overall design skills leave so much to be desired at this point that I just can’t bear looking at my own creations. So, this book sits sadly on the shelf, waiting for the day when I give in and test my mettle.
  • Beginning ASP.NET 2.0 with C# - This book is one that I bought recently and am going to work through as soon as I can. Unfortunately, going to school and working 35-40 hours a week doesn’t allow much time for learning. This will eventually get down, I just haven’t gotten a chance yet.