Archive for August, 2006

Being a student again

Thursday, August 31st, 2006

Before my first day of classes, I was honestly somewhat nervous.  It had been a very long time since I was in school, this would be my first class in a new CS department, and this is also my first graduate class.

It was amazing how comfortable it felt being back in a classroom.  I guess I have been going to school far longer than I have been doing anything else, but I was still surprised.

On the flip side, it felt very strange doing homework again.  It was also strange to be looking at a calendar that someone else had made that dictated my schedule for the next 3.5 months.  I also have to get back in the habit of writing things down by hand.  That is a skill I have pretty much dropped since graduating.  Reading will be another challenge.  I will read more in the next couple of months than I have in the past couple of years.  That will take some adjustment.

I have to say that, so far, I am impressed by the instructor.  Comparing this course to the software engineering course I took my senior year of undergrad, this instructor is way more modern and experienced.  My undergrad course basically taught the old school water fall model of software development.  My current course discusses that, but mostly to point out why it doesnt work.  Instead we are studying iterative development cycles, and talk a fair amount of taking this to it’s logical extreme — XP.  This is a welcome divergence from what I expected before starting the class.

Also, going to a very large (28,000 students), public unversity is much different than the medium sized private university I got my undergrad at.  To pick something entirely superficial, I have to say the student bodies at CU are much more finely developed…  I think I saw more mini-skirts walking to my first day of classes than I did cumulatively over 4.5 years at Case Western.  It is not a bad thing now that I am older, married, and nominally more mature.  Had the girls looked like this at case, I fear I would have learned much, much less.

Since I am now a student, I need to get out of here and go drink some beers.

Ubuntu in VMWare

Thursday, August 31st, 2006

I have been working on my boss for a while trying to get a macbook. I knew the answer would be no, but I had to at least try. My boss was totally supportive, but I was shot down by IT. So, no macbook for me until I pony up the cash to buy it myself.

The reason I was requesting a macbook is because developing on my windows laptop just doesn’t work well. My production environment is debian/rails/mysql/apache so I would ideally like to replicate that as closely as possible on my development machine.

I have spent huge amounts of time trying to get Ubuntu working on my laptop, but it just doesn’t do well. Power management never quite works right. Wireless is always just a tad better than shakey. Docking/Undocking wreaks havoc on my dual monitor setup. It just doesn’t work.

In windows, my hardware support is basically perfect. Everything just works. However, getting things like ImageMagick and Rmagick working in windows is non-trivial. There are a significant number of other libraries that I use in my web apps that just are not well supported on windows. Oh, and it is slow. Terribly, terribly slow. I know this is caused by the corporate image that I have to use, but the end result is that it is terribly slow.

Macbook, enter stage right. Getting all of the software that I need to develop and serve my webapps set up took about 4 hours on my Mac at home. It just works. And the macbooks are blazingly fast. And Pretty. It would have been a truely ideal solution. But works says “No macbook for you!”

What is a developer to do?

VMWare Server, enter stage left. It is free. It allows me to run Ubuntu on my laptop, and let windows deal with all of the hardware issues. It is surprising fast and usable. If it does not have X running, it is actually quite fast. Because of how much faster my laptop is than my production server, even running through VMWare I wouldn’t be surprised if response times were faster.

So, this is my solution for now. At some point this fall I am going to buy a macbook for personal use. I think I am just going to bring it to work and use it here as well, but for now I have something usable.

ECEN 5543 — Lecture 1 Notes — 08/29/2006

Tuesday, August 29th, 2006
  1. Requirements engineering is a key problem for software development process
  2. “We know why projects fail, we know how to prevent thier failure — so why do they still fail” — Martin Cobb, Cobb’s Paradox
  3. Standish Report (can be viewed online)
    1. Challenged Projects — Delivered, but late or with reduced functionality 52.7%
    2. Impaired — Never Delivered 31.1%
    3. Successful — Delivered basically ontime with full functionality
    4. Success Factors — In order of impact — User Involvement, Executive Management Support, Clear statement of Requirements, realistic expectactions, smaller project milestones (iterative development)
    5. Requirements Volatility should be meaused and reported even if management does not specifically ask for it.
    6. In a timeline from the Tape Disk market, there was a large milestone marked “Miracle Happens Here”. This was taken very seriously in the project group. In this case, in order for the project to be succesful there had to be a technological break through. The project could proceed up to this point, but until R&D made thier breakthrough it would then stall. Example from Prof. Dameron, not report.
    7. Impaired Projects — in order of impact — incomplete requirements, lack of user involvement, lack of resources, unrealistic expectations
  4. What dos a software development process do for you?
      1. You get the info you need
      2. When you need it
      3. in a form that you can use
    1. Effective mangement environment allows itterations to work correctly, without interuption, breaks, lost resources, etc.
    2. UML diagramming vs. Making up your own diagramming is like drawing an electrical diagram and making up your own symbols.

Since all of the presentations and lectures are available online, my notes are probably going to be pretty sparse. However, if I put them online I will have access to them even if I don’t have my notebook handy.

For next lecture:

  1. Read Standish Report exerpt
  2. Read Unfinished Voyages (sorry for the crappy link, but I can’t find it on the Standish site)

A New Morning, Changing Weather

Tuesday, August 29th, 2006

Starting today my life is going to be much more busy.

At 2:00pm I start the first class I have taken in 4 years.  “ECEN 5543 Software Engineering of Standalone Programs“  It is the first class in a 3 course graduate level series in Software Engineering at the University of Colorado Boulder.  At the end of these three courses, I will either get a certificate or apply for the Masters of Computer Science program at CU.

That is still a year away, but today is the first step.  It should be interesting.  My undergraduate coursework was more or less entirely coding.  These courses are much more focused on design, specification, testing, etc.  For me, this should be a good thing.  My projects at work are notoriously short on specifications and design documentation.  As far as I can tell I am the only one who is bothered by this, but it is still something that I would like to resolve.

There are some things that remain to be seen.  Looking at the sylabus, it looks to be based more on old school waterfall style software project management.  That is fine and a widely used model, but I hope there is also discussion of XP and Test Driven Development.  I have started using some of the principles from XP, and have seen a significant increase in my productivity over the past couple of months.

Here is the syllabus from the course a couple of years ago.  To access the current one you have to be a CU student, but this should be representative.  I hope to blog prodigously about these classes.  My plan is to put both the highlights of the lectures, and the entirety of my notes and homework solutions online.  I am pretty lazy though, so you might have to make do with my totally sporadic blogging as usual…

Random Updates

Friday, August 11th, 2006

I guess that I have been neglecting my blog a bit lately. Sorry about that. Here is a brief rundown of what has been going on lately, hopefully I can expand on these a bit more soon.

1. AWD sucks if you have to replace a tire

I love my car. I love all wheel drive. Usually. A couple weeks ago, I had a slow leak in one of my wheels and took it in to be fixed. The leak was caused by a screw in the treads, but when the tire came off the car, my mechanic spotted a blister about the size of a baseball on the inside sidewall of my tire.

Part of the beauty of AWD is that if you have to replace one tire, you have to replace all your tires. Has something to do with differing tire heights between the new and worn tires wreaking havoc on the differentials. Much cheaper to replace 3 extra tires, than any one of my 3 diffs.

Luckily I was able to find a smoking deal from a fellow pirate. I got a set of Konig Rated R 17×7 wheels, with pretty new Bridgestone Blizzaks on them for $400. I’ll post pics of the new shoes soon. This got my car back on the road, but now I am in the market for another set of 17’s with summer tires on them.

2. Closures are difficult to teach to C++ programmers

I gave an hour presentation on Ruby to the Software Reading Group here at work this week. They were looking at me like I was suggesting that we overthrow the emperor.

Almost immediately, they wanted to know how typing worked. The idea of a (more or less) untyped language seemed to freak them out a bit. Then I got to blocks and they seemed truely baffled. After a bit of explaining, some of them got it and some of them thought that I was just using some sort of fancy GOTO. I came to the conclusion though that if you don’t get blocks, you will see no value in ruby. The ones that didn’t quite get it, seemed to think that ruby was no more elegent or concise than C++/STL/Boost.
3. I love digital photography

I have been getting my photos from Glacier ready to send out to be printed. I have been using Adobe Ligthroom for photo management, and Photoshop CS for editing. To be honest, on my old G4 800, both of these programs are pretty slow. I really need a macbook for this…

Anyways, I love digital photography. I shot about 320 frames on my trip, and was able to pick out about 60-70 that I liked. I have now spent a couple of days adjusting exposure, editing out some lurkers from otherwise nice landscape photos, adding in some lighting on faces in some frames shot in difficult lighting, and cropping photos.

In my film days this would have meant paying for 9 rolls of film and development. Not a cheap prospect. The end result would have only been as nice as the 60 frames I liked before editing. This digital thing is much cheaper, and provides me with so much more control. On the screen at least, the end result is significantly nicer than my old photography.

That about sums things up. Stephanie and I are going to a nice dinner tonight, so I should have a good weekend. The chef used to be the private chef to the King of Jordan, so I expect that the food will be very good.