- To hell with the pig... I'm going to Switzerland.

Phasing out the Blog (Saturday, May 2, 2020)

Long time readers may have noticed that updates here are very infrequent. I really haven't updated the blog regularly since the advent of social media. To that end, I've taken down all the "personal" entries, and left only the technical notes and entries that are still occasionally referenced by search engines. As I try to fully transition to more modern servers, having less content to migrate will make that much easier. The diary blogging era was fun while it lasted!

—Brian (5/2/2020 11:22 PM)

Announcing 3.0! (Sunday, March 10, 2019)

I did it! I have a new professional web site, and it's live: I've migrated the other server from lighttpd to nginx, and instead of antique php, the new system is using jetty. It's almost like I've dragged myself into 2019! With a little bit more work, hopefully I'll be able to get the rest of my online world into the current century.

—Brian (3/10/2019 11:11 PM)

The Relationship Between Testers and Developers (Thursday, October 24, 2013)

My good friend, former colleague, and expert software tester, Lena Houser, recently compiled her take on the relationship between testers and developers, drawing from interviews with developers, including me, on traits they'd like to see in software testers.

Personally, I love testers, and as a developer, it is my mission in life to make their job as easy as possible. I never understood how developers could become defensive when a tester finds a problem. If it doesn't work the way the tester expects, then it probably won't work the way the end user expects, either! The biggest challenge is probably poorly specified requirements - the developer had one way of thinking about it and implemented it that way, while the tester had a different interpretation and wanted it to work another way. As all developers and testers know, getting good requirements is a luxury that few actually get. So it is important that developers and testers work together as a team, rather than as adversaries. It's the only way to produce good software, and it goes a long way to preserving sanity, too.

Lena's post goes over some of the other key qualities in the tester/developer relationship, with ideas from a variety of industry veterans.

—Brian (10/24/2013 10:05 AM)

IT206 005 Object Oriented Programming - GMU Spring 2012 (Friday, January 13, 2012)

(Updated 1/20/2012) It's that time of year again. GMU has finally put my name up on PatriotWeb, assigned to this class, and the Google queries are starting to roll in.

I will be teaching Section 005 of IT206, Object Oriented Techniques for IT Problem Solving, which meets at the Fairfax campus on Tuesdays and Thursdays from 7:20 PM to 8:35 PM in Innovation Hall Room 207. In order to take Section 005, you must also be enrolled in lab section 205, which meets in Innovation Hall 334 on Tuesday evenings immediately after the lecture. The lab instructor for this section is Kiran Thati, who will be assisted by Kruthika Kunduru. I will also be teaching an online section of IT206, Section DL3, for which you must also enroll in lab section 2D3. Kruthika will be the lab instructor for the online sections. The online section will be asynchronous, using recorded lectures that students will watch on their own time. Online students will be expected to attend the midterm exam and final exam in person. You must have earned a C or better in IT106 to enroll in this class, although I understand that some students are transfers and will have a different, but equivalent, course that meets this requirement.

I have found that students very rarely come to fixed, scheduled office hours, even when they really should. Because of that, I generally tell students that office hours are by appointment — if you need to meet with me, please let me know, and I will make myself available. The most convenient time for me would probably be after class on Thursday evenings. More details will follow.

This class will use Deitel's "Java, How to Program" text book, which you will hopefully already own from IT106. I think the department currently encourages the "Late Objects" version, with the red cover, but it has the same content as the blue cover version, with the chapters in a different order. Please remember that I did not choose this book.

IT206 is the middle course in the Applied IT Department's programming sequence, and the last course required for all AIT majors. The course will introduce Object Oriented Programming techniques, and builds heavily on the material from the first course. Programming courses are not like courses in other disciplines where the material is largely independent from one to the next. In this course, you have to understand each topic before you can successfully move on to the next one. The best way to become a good programmer is to write an awful lot of code. If the only time you ever write any code is during your lab section, you will probably find this course very challenging.

This course can be challenging for anyone, so I highly encourage you to ask questions as often as possible, and keep asking until you are sure you understand. Feel free to contact me by sending e-mail to Any message not sent from your GMU account and with "IT206" in the subject line will probably be eaten by my spam filter.

All material for IT206 will be posted on the course section of the MyMason Portal.

—Brian (1/13/2012 12:24 PM)

IT 306 001 Data Structures - GMU Fall 2010 (Wednesday, July 21, 2010)

As luck would have it, I will be teaching another class for the Fall semester. This time around, it's IT 306 - Program Design and Data Structures, the three credit sequel to IT 108. Really, it's the sequel to IT 206, but this will be the first semester that IT 206 has been offered, so no one has taken it yet, so that's where that comes from. The course meets at the Prince William campus in Bull Run Hall, room 247, on Tuesdays from 4:30 PM to 7:10 PM, and I will hold office hours by appointment after class in the adjunct faculty closet on the first floor.

The text book for this class is Deitel's Java, How to Program, which is a bit of a monster, so hopefully you've got bags with wheels. Your TA will be Minu Hariharan.

This is going to be a programming intensive class, where you will be writing an awful lot of Java. It's probably going to take me a while to get all the materials for the semester put together, but I hope to have everything done in advance of the start of the semester, next month. In the meantime, if you need to contact me, please send e-mail to Any message not sent from your GMU account and with "IT306" in the subject line will probably be eaten by my spam filter.

All of the material for this class will be posted on the GMU Blackboard site, as it becomes available.

—Brian (7/21/2010 5:09 PM)

IT 108 001 GMU Spring 2010 Wrap Up (Thursday, May 20, 2010)

Okay, so I'm a little behind on my updates, but I figured I'd better write up my thoughts on IT108 now that the semester is over. My first goal for the semester was to motivate my students, and keep them interested in programming, even if they find it challenging, and aren't sure how it could possibly be of any use to them. Well, out of the thirty students originally enrolled, only a handful dropped the class, and twenty-one students made it all the way through to the end. And most of those showed up to every class. From what I hear, that's a lot better than the average for this class.

What wasn't better than the average were the grades. Only six students passed the class, and that's mostly due to the dismal performance everyone had on the exams. While many students made huge improvements on their programming assignments as the semester went on, the results on the final exam were every bit as dismal as the results on the midterm. Despite the improvements that students made on their programming throughout the semester, their performance on the exams indicates that they really didn't have a firm grasp of what they were doing — you can write a program without understanding how it works. Next semester, I need to work harder to make sure students are understanding, as well as just doing. I think that's going to mean walking through many more examples, and having more practice assignments that resemble the sort of questions the students can expect to see on the exams.

I think one of the reasons the students had trouble, was because I dumped a lot of really heavy theory on the class at the beginning, and I think I need to start with much simpler assignments. On the other hand, the students had tremendous difficulty with even basic problem solving — a skill that all college students should have. I fear many of my students would be unable to coherently explain the steps for solving a problem, even if it didn't involve Java.

Another major problem the students had throughout the semester was meeting the required formatting for their submissions. The design diagrams and Java programs have a specific required format. It should make it easier for them to write, as there are fewer variables — it's like the difference between short answer and multiple choice. When you just have to choose from a handful of operations, and assemble them in the correct order, that should be a lot easier than coming up with your own operations. But the students just couldn't get the hang of it. I gave them a ton of code, but they couldn't recognize the pattern and get the indentation and formatting the same. I don't see how anyone can expect to do well when they won't do the simple stuff.

Of course it's not entirely their fault — there's just too much crammed into one class, and the department recognizes that, and starting in the Fall, they're breaking the programming requirement into two classes: IT106 and IT206. Of course this doesn't really help my students. The students who did not pass have two choices. They can either re-take IT108, in which case the grade for their second attempt will replace this attempt in their GPA; or they can change to the new catalog year and take IT106 and IT206, which would be better for their learning, but worse for their GPA and add yet another semester to their program of study.

So here's my advice. If you averaged better than 80% on the programs and project, then you should probably re-take IT108, and you'll have a much easier time at it. For you, taking IT106 would probably be a waste of time, since you probably already have a good grasp of all the material that will be covered there.

If you did not achieve at least 80% on the programs and project, then you're pretty much going to be starting from scratch either way. Only two of the students who were re-taking IT108 passed on their second attempt. If you aren't at least somewhat confident in your ability to do the projects from the class, you would probably benefit from switching to the two-course track.

If you're not sure what to do, and want advice specific to your case, or if you have Java questions, or IT questions, or really anything, please feel free to contact me. I really appreciate the encouragement and positive feedback I received from the class all semester. It's good to know that I'm making a positive contribution. Now all I need to do is get the pass rate up!

—Brian (5/20/2010 8:50 PM)

IT 108 001 Programming Fundamentals - GMU Spring 2010 (Tuesday, December 22, 2009)

I will be teaching IT 108 Section 001, Programming Fundamentals, for the Applied Information Technology department at George Mason University in the Spring semester of 2010. I've noticed that a number of students have been trying to find out who I am, since my name was added to the course. At some point, all students will have access to Blackboard, where the syllabus and other course materials will be posted. These materials are not yet available, but I hope to have them up well before the start of the semester. The university is also having difficulty provisioning my GMU e-mail account, so right now, there is no good way to contact me for course-related issues. I'm posting this message as a courtesy for students who are like me, and have to know as much as possible in advance. In general, I will not be posting course-related information or material to this site during the semester. Enjoy your winter holiday!

Update! My GMU e-mail account has finally been fixed, so please direct any course related correspondence to Any message not sent from your GMU account and with "IT108-001" in the subject line will probably be eaten by my spam filter.

—Brian (12/22/2009 08:28 AM)

Ignoring Spurious Repeated KeyAdapter Events in Java (Friday, October 9, 2009)

When running in an X11 environment, it appears as though either Java or the windowing system stupidly generate lots of repeated key events when you hold a key down. As it is impractical to get users to reconfigure their systems, and Sun seems unable to fix this issue (having been reported nearly ten years ago). I have written an adapter that is an attempt to filter out the useless events, and released it here as open source software.

Many people have whined about this, but few have fixed it. Some have tried, but their solutions are not as clean as my OCD nature requires. Here are some examples of what this is meant to handle:

The goal is to generate a KeyPressed event when a key is pressed, and to generate a KeyReleased event when a key is released. And ONLY when a key is pressed or released.


—Brian (10/9/2009 9:00 PM)

Disclaimer: Opinions on this site are those of Brian Ziman and do not necessarily
reflect the views of any other organizations or businesses mentioned.