All posts by Michael LeBlanc

Anti-Downloading Law Firm Caught Infringing IP

There is a copyright violation here.

It was recently reported by Boing Boing and The Hollywood Reporter that a legal firm called “US Copyright Group” is seeking to sue thousands of Bittorrent users for copyright infringement. The website for this group of lawyers uses stock photography and html frames (who uses frames nowadays?) — it’s a real classy design job. I was curious about these images. Having used some stock photography in the past, I know that, depending on the license, you have to give credit to the photographer, the collection and/or the image company.

Using TinEye it was determined that the stock image used on their “Solutions” page is Getty Images’ royalty-free photo #86512636. But just because it’s ‘royalty-free’ doesn’t mean that the photo can be used without credit. IP lawyers, above all, should know that the license agreement sometimes contains ‘gotchas’. Getty Images’ Royalty-Free Image and Footage License Agreement, Section 4.3, states that:

All Licensed Material used in an editorial context, must include the following credit line adjacent to the Licensed Material: “[Photographer’s Name]/[Collection Name]/Getty Images” or as otherwise shown on the Getty Images website. If Licensee omits the credit, an additional fee in an amount up to one hundred percent (100%) of the License Fee may be payable by Licensee, at Getty Images’ sole discretion. The foregoing fee shall be in addition to any other rights or remedies that Getty Images may have at law or in equity.

And as you can see in this screen shot, there is no photo credit for Getty Images. I wonder what “rights and remedies” the copyright holder will exact from these scofflaws?

What Kinds of People use Internet Explorer?

Web Browser Use by Age and Interest

In addition to chairing the lively Division of Design at NSCAD, I maintain a design consultancy where I oversee and sometimes produce web sites with topics ranging from academic to health-related. Google Analytics is a useful tool and although I don’t make use of it the same way web marketers do, I routinely look at the stats of my sites. The other day I wondered if certain sites attract users of certain browsers, and if there was any way to predict what browser they would be using by the site’s content?

I have a pretty good understanding about what kinds of people visit my sites, and for what reasons; I’ve been working with the Kurt Weill Foundation of Music since 1997 and Origin Biomed since 2001. Other sites are my own, including this blog.

I graphed statistics from the following websites:

  • ericaldwinckle.info: This is a biographical site on Eric Aldwinckle, an official Canadian WWII war artist, illustrator and designer. Typical visitors to this site are looking for information on war artists. Some of these visitors are students, and others are interested in history or art. Average age is around 35 years.
  • kwf.org: This is the official site of the Kurt Weill Foundation for Music, based in NYC. Like ericaldwinckle.info, visitors to this site are interested in the arts, and may range from students and music professionals to music lovers. Average age is around 35 years.
  • this blog: Most of the google searches that hit this site are related to inquiries about the Arduino platform, but a significant proportion of visitors are interested in design or NSCAD University. Visitors to this site are similar to the two above, with the added Ardiuno ‘geek factor’. Average age is the same: 35 years.
  • nscadlab.ca: The NSCAD Design Lab is a client-based projects and research lab. Visitors to this site are interested in NSCAD and Design. Average age of these visitors is around 35.
  • mullercustom.com: This is a ‘boutique’ home renovation company in Halifax, Nova Scotia. Their clientele are homeowners, average age: 40.
  • originbiomed.com: This is the corporate website for a natural health products company based here in Halifax. Their main product is Neuragen, which is used by diabetics and others who suffer from neuropathic pain. The average age of these visitors is around 60 years.
  • wtsmed.com: We’ve worked with this Vermont-based natural health products company for 6 or 7 years. While I’ve not been involved in the design of the main website (the company founder is nervous about changing something that he believes works well), I’ve consulted on several sub-projects for this company, and I get to look at the stats. Typical visitors are naturopaths and other medical practitioners and the general public that is interested in maintaining good health. Average age is around 45 years.

I also included a ‘baseline’ measure from wikipedia which is a median of several reputable browser statistics sites (dotted brown line).

Some Observations

Considering visitor age, it appears that older visitors tend to use Internet Explorer, which younger visitors are more likely to prefer Firefox, Chrome or Safari.

In terms of interest, it looks like the more “artistic” visitors have switched from IE to Firefox, and visitors interested in this blog tend to be early adopters of the Chrome browser (presumably because of the ‘geek factor’ inherent in anything Google makes).

A PDF version of this chart is here.

Testing Results: Oil Level Fuel Gauge

Reed Switch Sensor Array
Reed Switch Sensor Array
Testing the new sensor array
Testing the new array

In “Fun with Reed Switches” I mentioned that field testing of the Fuel Gauge system (as originally designed) was unsuccessful. I attributed the failure to the sensor array, which uses latching hall effect switches. I suspect that the hall effect does not work with extremely slow movements, such as that of the mechanical gauge on the oil tank.

The new package
The new package

So I set out to replace the hall effect array with reed switches. The switches are surface-mounted on protoboard as described here.

I also took the opportunity to completely rework the sender unit, including replacing the Arduino Mini Pro with a minimal ATMEGA8 chip using its internal oscillator. I’ll save my Mini Pro for another project that either requires the 16 MHz clock speed or its 16kb of program memory.

In situ
In Situ

In the original design, the entire unit enclosed the mechanical gauge. In the new design, the sensor array and the microcontroller/transmitter are separate, connected by a ribbon cable.

The Arduino sketch is also optimized (see below). Instead of nested if/else conditionals, I’ve used a much more elegant method. For each sensor level, the system looks for a closed reed switch. When it finds one, it uses bitwise ANDing to match the number of the closed reed switch to a binary value. This binary value is then presented to the transmitter.

/* Oil tank level using reed switches
 v. 2.01 Mar. 21 2010
 by Michael B. LeBlanc, NSCAD University  */

int level;   //the reading from the oil tank gauge

void setup() {
 pinMode(10, OUTPUT);  // warning LED
 pinMode(11, OUTPUT);  // D0 to TX
 pinMode(12, OUTPUT);  // D1 to TX
 pinMode(13, OUTPUT);  // D2 to TX
 Serial.begin(9600);   //FOR TESTING
}

int sensorpin=0;       // What sensor pin we are checking
byte binary;           // This will hold the binary value of the sensor pin
byte D0;               // This will hold the one's bit
byte D1;               // This will hold the two's bit
byte D2;               // This will hold the four's bit

void loop() {
 for (int i=0; i<8; i++)                // Start with sensor 0 and work up to sensor 7
 {
 sensorpin = i + 2;                   // Add 2 to calculate which Arduino sensor pin we want to check
 if (digitalRead(sensorpin) == HIGH)  // If the switch is closed:
 {

 D0 = B001 & i;                     // bitwise AND the binary value of the sensor to mask the 1's bit

 digitalWrite(11,D0);               // write the value to Arduino pin 11

 D1 = B010 & i;                     // bitwise AND the binary value of the sensor to mask the 2's bit
 D1 = D1 >> 1;

 digitalWrite(12,D1);               // write the value to Arduino pin 12

 D2 = B100 & i;                     // bitwise AND the binary value of the sensor to mask the 4's bit
 D2 = D2 >> 2;

 digitalWrite(13,D2);               // write the value to Arduino pin 12
 }
 }

 delay(100);

 // blink LEDs on pin 10 if tank is empty
 if ((digitalRead(10)==LOW) && (digitalRead(2) == HIGH))
 {
 digitalWrite(10,HIGH);
 delay(100);
 }
 else
 {
 digitalWrite(10,LOW);
 }
}

Creative Commons License
Remote Fuel Oil Tank Gauge by Michael B LeBlanc is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 Canada License.
Contact the writer for permissions beyond the scope of this license.