Friday, March 30, 2007

GUI programming in the fall

Yesterday I gave a Tech Lunch talk entitled Introduction to .NET to a pretty full room of grad students. My slides are available here if you’re interested. I had to do a little brushing up before the presentation… I haven’t used Visual Studio in a few years, but I really liked the improvements made in VS .NET 2005.

Preparing for this talk got me to thinking about what I’ll be teaching this fall in my GUI Programming at Harding Univ. When I taught this class in the past, I would first have my students start off writing some fairly simple programs using the Win32 API. After struggling with the API for several weeks, we’d then move on to C# and VB.NET at which point most students thought they’d died and gone to heaven.

But a lot has changed over the past 4 years: a new OS (Vista), new tools (VS .NET 2005 and XAML), and new APIs (.NET Framework 3.0 and WPF). I’m a bit behind the learning curve having not even seen Vista yet. Fortunately, I found a really good article about Vista by Peter Bright which helped me put the changes into perspective.

Rather than teach the Win32 API again, this time I think I’ll just show my students what it used to be like (150 lines of C code for a Hello World application) and then move directly into .NET programming. Although they may not truly appreciate all that the .NET Framework is doing for them, I don’t think spending time learning a deprecated API is going to be of much value. The text we’ll be using is Programming Microsoft Windows Forms by Charles Petzold.

Perhaps I’ll also mix in some GUI development using Java, just so they can see what it's like on other platforms (and appreciate why more developers don’t use Java for GUI development wink). Additionally I want to focus more on the theory behind GUIs. I found an excellent book that I’m going to use called GUI Bloopers: Don'ts and Do's for Software Developers and Web Designers by Jeff Johnson.

Of course I’m open to other suggestions anyone may have.

Monday, March 26, 2007

Jury duty

It took 5 hours of questioning, moving back and forth from one room to another, and sitting for long periods of time with nothing to do before the court finally decided they didn’t need me on the jury. This was my last chance of getting picked, and I struck out again. I think the reason they let me go was because I made the court aware of Becky’s impending due date, and I guess it’s a good thing I got dismissed… otherwise I would have been deciding the fate of a murder suspect for the next couple of days while Becky nervously wondered if I would make it to the delivery room on time if Ethan came early. Still, I would have really liked to have experienced being a juror. Maybe it’s because L.A. Law was my favorite show in my teens, or maybe it’s because I am all about civic duty. Anyway, at least I got $30 for my time. wink

Wednesday, March 21, 2007

You'll see why 2008 won't be like "1984"

If you’re a fan of Apple’s 1984 commercial, you’ll want to see this. Obama says he has nothing to do with the skillfully developed Clinton video.

Tuesday, March 20, 2007

Search engine interfaces and their APIs - How synchronized are they?

A few months ago I gave a little teaser about some research I was doing comparing the results you receive from the search engine APIs of Google, Yahoo, and MSN with the results that you see when you use their web user interface (WUI). The WUI is a fancy term for the little search box that you enter your queries into.

Most API users think that if they search for “march madness”, for example, that the returned results will be equivalent to what they would see if they searched for “march madness” using the WUI. In practice, this rarely occurs.

This leads us to ask, how different are the search engine API results from the WUI results? Are the APIs serving off of older indexes? Smaller indexes? Which search engine offers the most synchronized interfaces?

I will be presenting the answer to these questions at this year’s ACM IEEE Joint Conference on Digital Libraries (JCDL) this June in a paper entitled Agreeing to Disagree: Search Engines and their Public Interfaces. I’ll also be presenting a summary of my findings as a poster at the World Wide Web conference in May. Detailed findings can be found here. If you attend either of these conferences, please come by and introduce yourself... I’d be happy to discuss my findings with you.

By the way, if you haven't heard already, Google's SOAP web search API has been "depricated."

Monday, March 19, 2007


This weekend I spent some time celebrating a friend’s birthday (a lot of fun), seeing 300 (blah), praising God (great lesson, Mike), and trouble-shooting Mom and Dad’s PC. It’s the last event I want to talk more about.

If you have family like me who live in a different town and don’t know the difference between a browser and a cursor, you have probably spent hours and hours trying to talk them through updating their anti-virus software or attaching a file to an email. It can be an exercise in frustration for both parties.

I first tried helping my parents by running Windows XP’s Remote Assistance. It took a while to walk Dad through the process, but eventually we got it figured out. But just when I was about to connect, we discovered that my parent’s computer wouldn’t allow me access… probably because of an ISP firewall setting. Argh.

So next I tried Copilot from Fog Creek. This is a program which was written by a bunch of college interns a few summers ago (their experience was turned into a movie called Ardvark’d).

Anyway, Copilot allows you to connect to the remote computer you are helping via their own servers. This allows you to skirt many firewall issues like the one that made Remote Assistance impossible. A more technical description of how it works can be found here.

Copilot crashed on my Dad at first, but reading through their discussion list, it was due to a proxy setting in my Dad’s browser (still not a good excuse though). Finally we were able to connect, and it hasn’t caused me any problems since.

I only have a few complaints. The response time is a little slow, and every time my parent’s screensaver kicks on, I get disconnected. Also if I have to reboot their computer, I need them to login and re-start the Copilot program. Besides these, at $5 a day, Copilot is a pretty nifty little program.

Friday, March 16, 2007

TechLunches at ODU

On Wednesday we held the first TechLunch at ODU. Brandon Hill (another Ph.D. student) and I organized the lunches as a way for CS graduate students to meet each other and share their research or other expertise with the group. We had 20 students show up for Brandon’s talk on source control software. After taking a vote, it looks like I’ll be presenting an introduction to .NET at the next TechLunch. (That is, if Ethan doesn't come early.)

I’ve wanted to get this started for years, but I was finally motivated to do so when interviewing department chairs a few weeks ago who noted that these types of talks are really useful for cultivating good Ph.D. programs.

If you are in the area and interested in sitting in on the talks, please feel free to join us. I’ve created a wiki at which lists the upcoming talks.

Thursday, March 15, 2007

Petition for OA in US

I was the 1126th individual to sign the Petition for Public Access to Publicly Funded Research in the United States. If you think the US government should pass the "Federal Research Public Access Act, which calls for open public access to federally funded research findings within six months of publication in a peer-reviewed journal," then I recommend you sign the petition as well.

We support taxpayer access

Tuesday, March 13, 2007

March Madness

I just filled out my first NCAA Tournament bracket. I joined the Knights Pool on FaceBook-- apparently I could win $25K just for getting lucky. smile I’ve got ODU winning their first game against Butler (hey, I gotta show my Monarch spirit...), but I don’t think they’ll get any farther than that. But wouldn’t it be awesome though if they could follow in George Mason’s footsteps?

Final Four: UCLA vs. Oregon and UNV vs. Ohio State
Championship: UCLA 86, UNC 83

If you are laughing out loud, just remember this is my first bracket... wink

Update 3/15/07:

Well, ODU played a good first half and went into the locker room ahead by one. Unfortunately, they couldn't keep up in the second half and lost 57-46. Maybe the women can do better on Sat.

Friday, March 09, 2007

Huge demand for CS graduates

There is no doubt that interest in computer science has been dropping over the years from its peak in the 1990s. The statistics show that fewer incoming freshmen are interested in CS, but the question is why? After the dot-com bust and news of jobs going overseas, many parents have steered their kids away from tech-related majors. Unfortunately these parents are hindering their kids from entering one of the hottest job markets around:
"Nationwide, there are more jobs in the U.S. in computing than there ever have been, even at the height of the dot-com craze. The 10-year count for growth in new jobs is that there will be 1.4 million net new jobs over a 10-year period. That’s the hottest growth area of any area at all in the science and engineering fields."
- Jeffrey Vitter, dean of the College of Science at Purdue University
Not only is the job market hot, but it is very enjoyable field to work in. Just a few months ago, Money Magazine rated software engineering as the best job in America. And former students that I have spoken with almost always enjoy their careers in the technology field. It’s been a very long time since I heard from a student who couldn’t find work.

So please, parents and students: If you have any interest in CS at all, give it a shot. It’s not the easiest major, and it’s certainly not for everyone, but it may provide you a very rewarding career for years to come.

For more resources, see The Computer Science job outlook: Myths and Truths and the new ACM Computing Careers website.

Wednesday, March 07, 2007

Software Development Project: any ideas?

This coming fall I will be teaching the senior capstone course (Software Development Project) at Harding University. I’ve only taught this course once before, about 9 years ago, so I’m starting fresh and looking for new ideas.

Traditionally this course has involved dividing the class into groups of 4-5 and leading the groups through a large part of the development cycle (design, implementation, documentation, user testing, etc.) of producing a computer game. Past teams have implemented games like Yahtzee, Spades, Battleship, Checkers, and Othello—normally games that take only 5-10 minutes to play all the way through. Technical testers and user testers rate the games, the AI’s compete against each other to see which is the best, and ultimately one of the teams is selected as the all-around winner.

The class is usually one of the most educational for the students and one of the most enjoyable because of the amount of creativity that they can pour into their projects and the amount of freedom they have in implementing the game. Plus some students really enjoy the competitive aspect.

While this has course has worked out really well in the past, I wonder if any aspects of it should be changed. Should the students modify an open source project already in development? This is the approach that Google Summer of Code takes, and it exposes students to the type of work they will likely encounter when they graduate (most software in not built from scratch).

Or should the software they are building be less game-oriented? I think students are usually more enthusiastic about writing games, but they are more likely to write business-oriented (or at least more practical) applications in the “real world”.

The games the students have traditionally built have been stand-alone applications for Windows that must be installed locally. There’s some advantages to this since students are exposed to the types of problems that such applications run into (e.g., incompatibility issues), but on the other hand, they aren’t being exposed to thin client applications that are becoming more popular today. Should I limit the students to developing only a Web-accessible application, possibly with AJAX, Flash, or (yuck) Java applets?

I’m open to any suggestions, so please let me know your thoughts.

Thursday, March 01, 2007

Long-term preservation on DNA

Have you ever wondered if your digital belongings (photos, video, research papers, emails, etc.) are going to be accessible 5, 10, or 20 years from now? You may be thinking, yeah, they're stored on CDs/DVDs, and they'll last forever. That's what a friend of mine was thinking several years ago about zip disks when she saved her senior project and financial data on one. Unfortunately, she no longer owns a zip drive, so she enlisted my help. After tracking down a zip drive, I attempted to extract the files only to find a handful of them were inaccessible. These ended up being very important, and my friend is now in the depths of depression. wink

Anyway, I say all this because you’re worries are now over: Japanese scientists have discovered how to store data on bacteria DNA. Since bacteria pass on their DNA unaltered from generation to generation, your data can be safely encoded on them for thousands of years. That’s right: God used DNA to store developmental instructions; you can use it to store your Brittany Spears collection. Of course the technology for correctly extracting and interpreting the stored data must also be functional a thousand years from now, but we’ll let the digital preservationists figure that out.

For an enlightening read on the long-term preservation of digital data, see Ensuring the Longevity of Digital Information by Jeff Rothenberg.
"Digital information lasts forever -- or five years, whichever comes first." -Jeff Rothenberg