How to easily add customized links to an intranet page

For a long time, I always wished I had an easy way to add a custom set of links to my university’s intranet home page so I could easily access the pages for my current classes.

The idea was to have it look something like the image below. Notice the “Class Links” section above “Home.” The original page only had the “Home” section.

Custom class links embedded into my campus home page

Originally, this seemed to be a bit implausible. Now, thanks to Greasemonkey and Instapaper, it’s actually pretty easy. In fact, the solution I’ve built is general enough that it could be easily adapted to a number of similar situations where you want an easy way to personalize a set of links on a non-interactive page.

I thought that some of my classmates might be interested in this, so this post is to explain how to adapt my code for yourself. This will require some very basic JavaScript skills at one point, but hopefully I’ll be able to make that part easy enough. Continue reading ‘How to easily add customized links to an intranet page’

Birthday surprise

My wife and I wrote this little program for my little brother, who is a freshman computer science major. It was a lot of fun, and brought back memories of my C++ days in school.

Obviously the programming wasn’t challenging, but getting the parameters right was a lot of fun.

#include <iostream>
#include <windows.h>

#define doo 262 //frequency do 262 Hz
#define re 294 //frequency re 294 Hz
#define mi 330 //frequency mi 330 Hz
#define fa 349 //frequency fa 349 Hz
#define sol 392 //frequency sol 392 Hz
#define la 440 //frequency la 440 Hz
#define si 495 //frequency si 495 Hz
#define od 523 //frequency do 523 Hz

using namespace std;

int main()
{  

  Beep(doo,100);
  Beep(doo,100);
  Beep(re,180);
  Beep(doo,190);
  Beep(fa,200);
  Beep(mi,300);
  Beep(doo,100);
  Beep(doo,100);
  Beep(re,180);
  Beep(doo,190);
  Beep(sol,220);
  Beep(fa,300);
  Beep(doo,100);
  Beep(doo,100);
  Beep(od,260);
  Beep(la,260);
  Beep(fa,220);
  Beep(mi,200);
  Beep(re,300);
  Beep(466,100); //b-flat is 2^(1/12)*440 http://en.wikipedia.org/wiki/Note#Note_frequency_.28hertz.29
  Beep(466,100); //b-flat is 2^(1/12)*440 http://en.wikipedia.org/wiki/Note#Note_frequency_.28hertz.29
  Beep(la,260);
  Beep(fa,300);
  Beep(sol,300);
  Beep(fa,300);

  return 1;
}

Microsoft LifeCam VX-3000: Installation & configuration

In a recent post, I wrote about our new webcam and mentioned some incompatibilities I discovered. Here I want to document how I installed and configured the software for the camera, mostly so my family can re-install the camera if they ever need to do so. These notes refer to how I did this on a Windows XP system. Continue reading ‘Microsoft LifeCam VX-3000: Installation & configuration’

Microsoft LifeCam VX-3000: Overview

This Christmas, my mother got the Microsoft LifeCam VX-3000 2 pack so that we can video chat with her when we’re at our home. Although the camera is certainly not a high-end webcam, it is enough for basic video chat needs. I won’t write a comprehensive review here, my purpose is just to clarify a few things that I’ve learned about the camera and then document how I set it up on my mom’s computer so others can properly configure things if anything later goes awry. For a helpful review of the VX-6000 (which appears to be the same camera except for a wide-angle lens and probably a few other perks), see this review from a guy in New Zealand.

The camera itself was fairly easy to install, and the proprietary Microsoft software works pretty well (although it’s a little too resource-intensive for my taste). You don’t have to install Windows Live Messenger to use the camera, but you will need it or Skype in order to make calls with the camera. Continue reading ‘Microsoft LifeCam VX-3000: Overview’

Burning CDs and DVDs in Windows XP… without unusual punishment

Someday, burning optical media like CDs and DVDs may be a fully supported operating system feature. Until then, Windows users have to use burning software packages that unfortunately tend to bundle complexity and cost with a lot of frustration. Windows XP does support minimal burn operations when blank CDs and DVDs are opened as “writable” windows in My Computer, but this is not enough for creating anything beyond basic data disks.

I have used commercial burn software packages (like Nero and Roxio) before, but I chose not to use these packages again for a few recent projects. Here’s why:

  1. For a home user who rarely (read, almost never) needs to burn media anyway, it is difficult to justify the cost of either package.
  2. Both Nero and Roxio bundle a lot of useless junkware into their packages (perhaps partially to justify their pricetag) and all I need is basic burn functionality.
  3. Removing remnants of an expired “trial” version of either is not a task I relish. I’ve found (and Wikipedia concurs) that even licensed copies of these programs are hard to remove.

With this in mind, I set out to find open source or freeware burn software without needless frills. I was looking for actively developed projects which might continue to be useful in the future. Two programs which do just that are InfraRecorder and ImgBurn.

InfraRecorder is an open-source project, and it supports creating various data and audio CDs and DVDs (at this writing, it is in version 0.45). It does not yet support the creation of video DVDs, but it has a fairly simple interface, and enough basic documentation to help most users. I used it to burn a a large collection of MP3 files to a DVD without any problems.

ImgBurn is freeware, and supports data, audio, and video for CDs, DVDs, HD-DVDs, and  Blu-ray (at this writing, it is in version 2.4.2.0). The interface is very clean and operation is straightforward. I probably like this program better than InfraRecorder because its basic approach appeals to me.

Rather than modeling all its operations like other burning software which combine high-level tasks like “Copy disk” or “Burn data disk” with lower-level processes such as creating a disk image, ImgBurn does everything from a low-level perspective. If you want to copy a disk, you first run the process to create an image file of the original disk, and then you insert a blank disk and burn the image file into the new disk. Although this approach may seem more technical to a new user than a higher-level approach, this approach is so simple (and the tutorials so straightforward) that when I first used it I feared that I was missing some detail simply because it seemed too easy to be true.

Amazingly, with all this simplicity, it really does support a high degree of customization for advanced users. The complexity is accessible, but you don’t have to deal with it unless you seek it out.

I’m glad I finally put some effort into finding burn software for future projects. Both of these are good programs that don’t annoy me in any of the ways the commercial packages did, and hopefully they’ll still be useful as technology and media standards progress. At least for now, these two will probably remain my burn packages of choice.