Posts Tagged ‘capacitors’

Fixing an Acer AL2216W LCD Monitor (Delta DAC-19M010 power supply, bad caps)

There are several dozen of this model of monitor at my work since last year or so; the other day I found one on top of the dead electronics plunder pile recycling bin, looking brand new. Googling the model # and terms such as “problems” or “repair” or “won’t turn on” revealed pages of discussion on the badcaps.net forums: it seems this model of monitor is yet another victim of the bad capacitor plague that somehow continues to sweep the electronics world. Upon opening the monitor, this suspicion was confirmed by several visibly bulging capacitors in the low-voltage section of the power supply.

Probable Symptoms:

  • Monitor won’t turn on, no apparent power, black screen
  • Blinking power LED
  • Turns on but shuts itself off without warning*

Note: This power supply board (or very similar model) appears to be used in a variety of monitors from different manufacturers. Depending on which one you have, your symptoms may differ to what I have observed on the AL2216W. In particular, the monitor may simply not turn on (too-low logic voltage or software-controlled shutdown), may blink its power LED to indicate a fault, or may turn on for a few seconds and switch off again. In my case, the monitor showed absolutely no external signs of life (power LED dark and no response to the power switch), but a very brief flash of the backlight could be seen just as the unit was unplugged, confirming it did indeed have power but “chose” not to switch on (likely as a safety feature).

Obligatory Butt Covering Warnings

This is a wall-powered electronic gadget. Opening it and poking around inside carries a small, but non-zero, risk of electric shock even when unplugged. (There is a 100K bleeder resistor across the mains filter cap, but this could fail.) For your safety, wait at least one full minute after unplug to go near the supply board, and use a screwdriver with an insulated handle to short across the leads of the filter cap to be sure it is discharged. If you see a fat spark and blinding flash of light, the safety bleeder resistor has probably failed, and you might want to reconsider poking around in here.

(Opening it and poking around inside while it’s plugged in carries a guarantee of electric shock, just FYI.)

Disassembly

This is fairly straightforward. Pop off the plastic cover hiding the screws that attach the base. Unscrew them and any other visible screws, then carefully pry at the seam where the two halves of the monitor “shell” come together. Once inside, more screws. Note that to get the final metal shields off, the backlight connectors and the ribbon cable to the button panel must be disconnected, then the scew-in posts for the video connectors and two screws concealed in the mains cord socket must be removed.

What’s inside?

Surprisingly little, it turns out. There is one large power supply board (made by Delta Electronics, Inc.) and a much smaller display controller board (marked A220Z1-Z01-H-S6) with only two highly-integrated Realtek ICs and some discrete components. My educated guess is that the controller boards are very unlikely to fail, so start by looking at the Delta board.

Fault Finding

By all accounts, bad capacitors are usually the underlying cause of these problems. Due either to being under-rated or a sordid tale of corporate espionage (see Wikipedia link above), the capacitors will gradually vaporize their electrolyte (and sometimes not so gradually, with a bang) until they can no longer perform their capacitorly duties, causing the monitor to go haywire.

First, inspect all the electrolytic (“tin-can”) capacitors for visible problems. Their tops normally have a score pattern on them, but should otherwise be flat. They should not bulge upward, even a little. Visible bulging, ruptured tops or signs of leakage (e.g. brown goo around the top or seams) are sure signs they need replacing. Note that failed or failing caps will not always show visible signs.

On the Delta DAC-19M010 board, things are divided up into 3 logical sections: the bottom half is a switching power supply that steps your 120/240V wall power down to a 13.8V and 5V rail. Roughly speaking, everything to the left of the large center transformer is its primary (high-voltage) side, and everything to the right is the low-voltage secondary side (the high side may also be marked off by cutouts and/or a line on the underside of the board). The upper half of the board (more or less) is the backlight inverter, with another large transformer to step this low voltage up to the 1kV or so needed to feed the CCFL backlights.

I’m sure you noticed the large, high voltage cap on the high side, right near where the power cord plugs in. You did short it, right? This is the one that can make your skeleton glow even if the monitor is unplugged. Luckily, consensus from the internet is that this filter cap on the primary side rarely fails, so unless it is showing visible signs you can probably leave it alone.

There are seven electrolytic caps on the low-voltage side, all of which should be replaced if you even slightly suspect a capacitor problem. (Technically, the topmost one connects to the backlight inverter, but you should change it anyway.) On my monitor, the 13.8V rail read a tad high (14.x) and the 5V rail showed only 4.1V. There is likely an undervoltage lockout circuit on the controller that prevents operation at this voltage, although there may have been significant voltage ripple due to the bad caps that was resetting or otherwise fouling up the logic directly.

Collateral Damage

With the caps replaced, it’s a good idea to check for any obvious collateral damage. There are several surface-mount fuses (denoted Fxxx) on the bottom of the board which might have been affected (zero-ohm resistors may have been stuffed in place of some fuses; check these too). After you triple-check that the mains filter cap is discharged, also check the through-hole fusible resistor to the immediate left (high voltage side) of the switching transformer. There is also a surface-mount fuse on the controller board near the power entry connector.

Cap List

Here are suitable replacement parts currently available on Digikey. Be careful when removing the old ones, as some of them are near very brittle powdered-core inductors and tacked down with some kind of glue. Note, one of the parts below has a higher voltage rating than the original (this is OK).

Quantity Part# Value Lead Spacing Height
2x 565-1546-ND (220u/25V) 3.50mm 11.5mm
1x 338-2342-ND (2200u/10V) 5.00mm 21.00mm
3x 493-1065-ND (1000uF/25V) 5.00mm 20.00mm
1x 565-1550-ND (470uF / 25V) 3.50mm 20.00mm

* Note, if the screen’s backlight cuts out (often after a couple seconds) but the monitor appears to remain powered, the fault is most likely in the backlights or backlight inverter section of the power supply board, not the low-voltage section. You can confirm whether the entire system or only the backlight has shut off by holding a strong flashlight directly against the screen while a valid video signal is present – if you can see the image around the edges of the flashlight, the low-voltage supply and controller board are probably OK. Replacing C204 MAY solve it, but otherwise, fixing backlight issues is a whole different animal, which I don’t cover here. You MAY be able to identify a single dud tube by unplugging one at a time (WITH THE MONITOR UNPLUGGED!!!) and testing the monitor, but this is not 100% reliable (some inverter circuits will detect a single “open” (e.g. unplugged) tube and shut down anyway).

My next art project…sane?

Given an original piece of music, slice it into arbitrarily small time slices and perform FFT. From a corpus of (1000+) copyrighted songs similarly sliced, find the slice whose frequency content most closely matches the original slice. By pulling in such slices in place of the originals, reconstruct the piece, still sounding recognizably like the new piece but actually containing NO ORIGINAL MATERIAL. Bonus points: calculate how many millenia you could go to jail for for downloading this piece.

Variations: Allow each slice to be replaced by (smallnum >1) slices added together, after applying bandpass filter to isolate only the desired frequency component(s). Amplitude shaping and possibly frequency scaling may also be called for.

Perform the same project on images instead of music.

[citation needed]

[citation needed]
This should be made into a bumper sticker. It would be applied to the cars of 1) Wikipedia editors, 2) Reckless drivers you don’t like.

Real updates coming soonish, I promise.

Blinkenlichten RGB LED controller: protocol / firmware (1.2)


This is the protocol spec and PIC10 firmware download for Das Blinkenlichten (1.2). This version improves handling of the ‘Identify’ command by end devices. Backward compatibility to 1.1 is not affected.

I don’t have pretty datasheets, application notes, timing diagrams, or much example code / pseudocode, but I’m sick of sitting on this thing until I get around to those :-P So I figured I’d just stick it on the internet and see what happens. The rest might be filled in in my future spare time (or by some nice person in the comments)…

Description:
Das Blinkenlichten is an open-source RGB LED lighting system and protocol written for the PIC10F200 microcontroller. A complete node consists of this chip, an RGB LED, three current-limiting resistors and a small capacitor for power-supply smoothing. A single chain can have up to 255 unique nodes (or as many non-unique ones as the wires will carry power/data for, without burning up!). Everything is coordinated by a single master device, which can be any low-cost microcontroller or equivalent with a free I/O pin. The beginnings and goals, etc. of the design are described on this page.

Pretty Pictures
Pic: Blinkenlichten in melty, icicle-like resin
Pic: Swirled around by a girl dancing
Video: Very simple random-color-generator demo
Video: Cool video of blinkenlichten who react to music

Features / Commands in brief:

  • Cheap! At 34 cents each (qty:100), the PIC10 is probably one of the world’s cheapest and simplest microcontrollers. Complete parts cost can be less than $1US per node.
  • Fast 1-wire data bus – complete operation with only 3 wires (power, data, ground)
  • 3 colors (R,G,B) can each be set to one of 9 intensity levels – total 729 possible colors
  • Set Group Address command: control groups of LEDs at a time with a single command
  • Deferred Update command: Allows simultaneous color changes even with a large number of devices.
  • Identify command: Discover the addresses present on the bus.
  • Power Save command: Stop all clocks and enter low-power mode until the next command

Arduino/Wiring library and example
Library and example sketch showing common usages (move to /hardware/libraries in your Wiring folder, close and re-open Wiring. The example will then appear under Sketchbook -> Examples -> Library-Blinken). This library is released under the GPL.

Firmware and source code (PIC10 assembler)
Version 1.3 (“It’s Log!” edition) can be donwloaded in this zip file. A few lines at the beginning will have to be set according to your hardware configuration (see below). The “#define MYADDR …” line contains the address the chip should respond to – change this and rebuild for each chip you program. This version adds a logorithmic color table so that the color intensities you specify will appear linear (evenly-spaced steps) to the human eye. Adding this meant some idiotproofing had to be removed – sending an invalid (>8) intensity value will cause undesired operation. Starting with 1.3, this code is released under the GNU General Public License v3.

Version 1.2 (‘dumb’ linear color table) can be donwloaded in this zip file. A few lines at the beginning will have to be set according to your hardware configuration (see below). The “#define MYADDR …” line contains the address the chip should respond to – change this and rebuild for each chip you program.

Hardware/Schematics:

Basic schematic for an individual node. The schematic shown uses a common-anode LED (common is connected to VCC); for a common-cathode, tie the LED common to Ground instead and change the appropriate #define at the beginning of the code. Different LED packages have different pinouts; test and make sure of them before wiring it up – or especially making boards. (The R/G/B connections to the LED can be easily remapped in software, but you have to get the LED’s common right the first time!)

Basic wiring diagram for a complete string with several nodes and a controller. There is a pulldown resistor between the data wire and ground (recommended value 100k ~ 1Meg). This is necessary for the ‘IDentify’ command to work, and it also helps prevent your string of lights from going haywire if the controller takes some time to start up and the voltage on the line is floating.

The maximum cable length, and maximum nodes reliably driven on it (or maximum speed), depends on how strong your controller drives the data line. As you add length and extra loads (inductance and capacitance) to this wire, the voltages on it will take longer to rise and fall, and be more difficult for the nodes to reliably consider a ’1′ or ’0′. I’ve run them with 6+m of cable without incident, but if you run into problems, reducing the data rate should help. If you don’t care about the IDentify feature, you can add a beefy buffer here to drive the data line harder. If driving long strings, you might also want to add decent-sized electrolytic capacitors between the power and ground wires at intervals along the string.

PCB and Parts List (Bill Of Materials)
This file contains a parts list for both DIP/breadboard and tiny surface-mount versions. Also included is an EAGLE schematic and Gerber files for a miniaturized, wearable board using surface-mount components. These data (schematics, BOM and Gerbers) are released into the public domain.

A picture of the finished SMT boards (panel) is shown below. With a jumbo 10mm RGB LED, the board is almost completely concealed behind the LED and only the sewable connections stick out.

Programming the chips
To write the firmware to these chips requires access to a PIC programmer. The official ones made by Microchip Inc. are quite expensive; fortunately there are many clones out there that work just as well, and some open-source designs you can build yourself. Just make sure that the programmer supports the PIC10 devices; some very simple/cheap designs (e.g. direct to PC serial port) may be designed only for “low voltage program” devices and won’t generate the +13V or so necessary to program this chip. The DIP variants can be programmed in or out-of-circuit; for the SMT variants, you will probably need to solder them to your board (with an appropriate pin header / etc for the programming lines), program the chip, and THEN add the LED (since it shares some of the programming pins and will interfere). For the ready-made SMT circuit board above, the following drawing indicates the pinout of the programming header on the edge of the board. For this, I soldered the wires from the programmer to the “wrong” side of a 5-pin 1.25mm connector (such as Molex 53047-05), then just press the other end into the PCB during program.

Command packet format: (forgive the horrible ASCII art)


     <start> <addr[7..0]><cmd[7..0]><stop>
_____- - - -. . . 16 data bits . . .______

The bus idles low.

Start condition: Bus goes HIGH and stays high for longer than the longest possible loop run (min. ~ 17uS), so that all devices are guaranteed to catch it.

Data bits consist of a low period (low half) followed by a high period (high half). A 1 is denoted by making the LOW half longer than the HIGH half, and a 0 by making the HIGH half longer. Ideally, all bits should total the same length, but since the low half sets the baud rate on a bit-per-bit basis, this is not required. However, any half should be a minimum 18 device clocks (18/1MHz=18uS) for most accurate timing, and should not exceed 255 device clocks (255uS).

Stop condition: Give some time for the cmd to be processed before sending a new one (bus idles low). If you’re in a hurry, this time depends on the specific cmd. Otherwise, you can just wait about 90uS (time for the longest 1-way cmd, activate_deferred, to complete) and not worry about it. (*See special timing notes for Identify cmd.) This is the preferred approach, but you could also just make the START condition longer.

Address BYTE format:

bit <76543210>
AAAAAAAA

where AAAAAAAA is an 8-bit device address (or group address). Address 0 is the broadcast address. Since the ‘Group Address’ cmd only supports addresses up to 64 (0×40), I recommend a handful of low addresses (0×01 ~ 0x0F) be set asdie for group addresses if you plan to use this feature.

Cmd BYTE format:

bit <76543210>
ERGBIIII

E: Extended Command flag. If ’1′, decode remaining bits as Extended Cmd as described under Extended Commands. Otherwise,
RGB: Which color(s) cmd applies to (set ’1′ for each color this intensity applies to)
IIII: Set intensity (0 ~ 8)

Extended Commands

11xxxxxx : Set Group Addr to value xxxxxx
10XXyyyy : Poke "Virtual reg" XX with contents yyyy (see below), where XX is the address of a virtual 4-bit reg and yyyy is the value to poke.

Vreg 00: Flags [x identify activate_deferred power_save]
Vreg 01: Defer buf R
Vreg 02: Defer buf G
Vreg 03: Defer buf B

Detailed description of the virtual registers:

Vreg 01 ~ 03 allow a deferred update to be sent for the R, G and B channel respectively. The new intensity value(s) are stored in memory, but the old intensity values continue to be displayed until an activate_deferred command is executed, at which point the new intensities are displayed. This will be particularly useful for trickling new values over the bus, then sending a single activate_deferred to all devices (addr 0) to give the appearance of a simultaneous update.

Vreg 00 is a virtual register among virtual registers: Rather than writing a value to it, you write to it setting an individual bit to perform the requested action. Once the action is performed, the bit can be considered automatically cleared.

  • Unused (bit 3): “No-Op” – Dummy command, doesn’t do anything.
  • Identify (bit 2): On receipt of this cmd by a given device address, this device shall pull the data line HIGH (internal weak pull-up) for a period of about 512 device clocks (or whatever, plenty long enough for master device to see it). Normal operation is then resumed. (Note that this may disrupt other devices on the bus, who interpret the pullup signal as a new START command. If this is bothersome an Identify command may be followed immediately by a dummy command if a device responds. The device’s response will be seamlessly eaten by the dummy cmd’s START, so it just looks like an extra-long start bit to all devices.)
  • Activate_deferred (bit 1): Replaces the currently displayed intensities with the contents of the Defer (R,G,B) regs if they contain a valid update.
  • Power_save (bit 0): This command will effectively stop the CPU and any pulse modulation activities and enter a low-power SLEEP mode. The device will remain in SLEEP mode until the next bus activity occurs, at which point it will re-awaken. Technically it will be waking up occasionally due to WDT, but these activity periods will be brief.

Quick Examples

Set device id 02 Red to max (8):
<start><02><01001000><stop>

Set device id 02 to bright white (Red, Green, and Blue to max):
<start><02><01111000><stop>

Set device id 02 to arbitrary color (Red 8, Green 2, Blue 3):
<start><02><01001000><stop>
<start><02><00100010><stop>
<start><02><00010011><stop>

Set device id 07 off (Red, Green, and Blue to 0):
<start><07><01110000><stop>

Clear all group addresses to 0 (default):
<start><00><11000000><stop>

Assign device id 0x9F to group (address) 05:
<start><9F><11000101><stop>

Set all devices to power save:
<start><00><10000001><stop>

Advanced Examples

Identify all the devices on the bus (pseudocode):

for (id = 1 to 255)
{
    Send1Wire(id, b'10000100'); // Extended cmd: Identify
    Delay(100); //delay 100 uS, to give device time to respond
    DATA_WIRE = 'INPUT'; // However you switch this pin to an input on your preferred platform
    gotResponse = DATA_WIRE; // read the data line to check if anyone is responding (pulling the data line high)
    DATA_WIRE = 'OUTPUT'; // Switch it back to an output (retaining same value as was read)
    if (gotResponse == 1) // Was there a response?
    {
       print("Found device " , id); // do something with this information, e.g. store active IDs to a table
       Send1Wire(0, b'10001000'); // send dummy command if there was a response.
                                        // Or you can just wait a few hundred msec for the other devices to reset
    }
}

Specific firmware points of interest

The intensity of the LED colors is controlled using pulse width modulation (PWM). The basic operation is that the intensity value for each color (0 ~ 8) is converted to that many ’1′s and stored in a register, and this register’s contents are continually rotated in circles. Each time, the last bit is used to determine the on/off state of the LED. So with 8 bits in a register, it can be on 0/8 of the time (off) or 1/8 of the time or … 8/8 of the time (full brightness).

To provide the fastest possible update rate, it’s necessary to squeeze as much performance out of these cheap tiny PICs as possible. The PIC10 supports only a handful of instructions, no interrupts, and only a rudimentary 8-bit timer. For the PIC10F200, the entire program is limited by memory to 255 instructions. Therefore we can’t afford to be too sloppy.

The code uses look-up tables in place of any loops/math wherever possible. The chip does not support table-indexing operations in ROM (Flash), so this is done using computed GOTO: In many microprocessors including this one, the Program Counter register (which acts as the processor’s bookmark in the code’s execution) can be modified by the program directly. Thus, by writing a new value to the Program Counter you can force the processor to lose its place, resuming program execution from the address you just wrote. By performing math operations directly on the program counter, this method can be used to index a lookup table nearby. In the example below, the intensity value is added to the program counter to make it an index into a table stored just after it. The ‘retlw’ instruction returns from the function with a specific value saved in a register. This code snippet converts the (0 ~ 8) value to a value containing that many ’1′s, using only a few clock cycles.


; Want to return a value containing the number of '1's specified in the intensity
; value. But want to spread them out for faster switching and less perceivable flicker.
setpwm:
    movf INDF, w ; cmd value
    andlw B'00001111' ; mask off bogus bits
    addwf PCL, f ; skip that many instructions
    retlw B'00000000' ; 0x00
    retlw B'00000001' ; 0x01
    retlw B'00010001' ; 0x02
    retlw B'01001001' ; 0x03
    retlw B'01010101' ; 0x04
    retlw B'01010111' ; 0x05
    retlw B'01110111' ; 0x06
    retlw B'01111111' ; 0x07
    retlw B'11111111' ; 0x08 ; last valid value

This same method is used to allow the PWM loops to keep running while receiving data. Each time a bit is received, the PWM loop “jump table” is called. The count of the number of bits received is used as the index into the jump table; instead of a list of data values, each table entry contains a jump (GOTO) to the address of either the red, green or blue updater.

Determining between ’1′ and ’0′ bits on the data wire also takes just a few instructions. For each bit, the line is held low for some amount of time by the controller, then held high. Whether the low or high half was longer determines whether it was a 1 or 0. The way to measure this can be thought of as a stopwatch that counts up during the first half, then down during the second half. If the count goes negative, the second half was longer and we record a ’0′, else we record a ’1′. The ‘stopwatch’ here is the chip’s 8-bit counter/timer register. But it can’t count down, it can only count up! So a little cheating: when finished timing the first half, we complement (invert) the contents of the timer register. Now it’s still counting up, but if the original count was 7, now it’s (256-7) or 249. If the 2nd half is longer, the timer will reach its maximum value (255) and roll over to zero again like an old car odometer (and ending at a low number again, the Most Significant Bit will be a 0). Otherwise it will be a high number, and the Most Significant Bit will be a 1. So, at the end of one up/down cycle on the data line, the timer’s MSB will automatically contain the correct bit as it was sent on the data wire.

You might also have noticed that the PIC10 only has 3 pins that can function as outputs; according to the datasheet the 4th (which I’ve used for the data wire) is input only. The 3 output pins are already being used to drive the 3 LED colors. So how does a node send data back to the controller in response to an IDentify command? There is a register setting that enables weak pullup resistors (~10k-20k) on all the pins. On the output pins this does nothing, but on the input (data) pin this applies voltage to the wire, overpowering the even weaker pulldown resistor (~100k) added to the controller side. (The controller stops driving the I/O pin briefly to await this response.) So by toggling the pullup resistor on and off, we can send data the ‘wrong’ direction :-)

Version History and Compatibility:

  • v0.x (2005) Nora Nightlight edition. Quick n dirty hack with hardcoded timer to distinguish 1/0 data bits. Set Group Address is the only valid extended command. Didn’t get around to touching it again for a long time.
  • v1.0 (2007) Beloved edition, demoed at VNV Nation concert April 07. Changed from fixed-frequency to variable baudrate data encoding/decoding; re-ordered some bits in the command packet format to make more sense.
  • v1.1 (2008) Proper edition; first public release. Implemented remaining Extended commands: power save mode, deferred update stuff, and device identification.
  • v1.2 (2008) More-Proper edition. Improved handling of IDentify cmd; now can avoid flashes during identify as non-responding devices on the bus reset. Compatibility with v1.1 devices is not affected.
  • v1.3 (2009) It’s Log! edition. This version implements a logorithmic color scale in order to better match the human visual response (intensity steps now appear evenly-spaced). Compatibility with v1.1 and v1.2 devices is not affected, unless you are sending invalid (>8) intensity values, which you shouldn’t be!

v1.1, v1.2, v1.3 are backward / forward compatible and can be used on the same bus. V1.0 supports only the basic command set (Set Colors and Set Group Address). Versions prior to 1.0 are not compatible at all…luckily, they basically don’t exist in the wild.

Encryption: Not just against the bad guys anymore! (or, how Comcast contributes to global warming)

In Part 1, we explored evidence supporting the conclusion that Comcast’s well-known policy of blocking / interfering with p2p file transfers (notably BitTorrent protocol) extends to several other legitimate moderate- to high-bandwidth activities, including collaboration via Lotus Notes, remote desktop applications, FTP, and even sending emails with large attachments. A working temporary solution (again, while counting down the days until FIOS comes to your area) is to just encrypt the hell out of everything, every HTTP request, every email sent, every file uploaded, your freaking grocery list, to force Comcast’s braindead filter to leave it alone.

Now, this misbehavior is bad enough while I’m trying to pirate Linux distros, but when I have to disguise my goddamn EMAIL to get it through? Something is very wrong with this picture.

Now, what does that have to do with global warming, the global war on BitTerrorism (net neutrality), and the price of broadband in China? Simple: Until Net Neutrality is enforced by law, the Comcasts of the world (any similarly shitheaded companies) will increasingly turn to methods such as this (nuking “bad customers”) as a profitable band-aid fix for the problem of rampantly overselling their capacity. As is already happening, users and software will respond by increasingly turning to unnecessary encryption in an effort to keep malicious third parties (in this case the user’s own, paid ISP) from tampering with the stream. If it continues, web sites will switch to using SSL (https:// links) by default to ensure their “eyeballs” can reliably reach the site, and soon, encryption of every last little unimportant snippet of data will be de rigeur to limit packet discrimination.

SSL encryption is a mathematically cumbersome, CPU-hungry process. While an average home PC slurping down Internet packets at a rate limited by the connection speed will not be overly taxed by this, the server that has to perform this encryption for thousands of visitors at a time is working up a sweat. A CPU that’s doing heavy math is consuming more power and generating more heat than one that isn’t. Multiply this by the number of Internet users and encrypted-by-default sites, and you see that you are needlessly wasting a huge amount of power to triple-DES Grandma’s grocery lists, and throwing wads and wads of unnecessary heat into the air.

Encryption also counts on generating a stream that looks like random noise. If you can suss out a pattern in an encrypted stream, chances are you can crack it. Consequently, cryptographic engines take great pains to ensure that the streams they generate do not contain repeating patterns. Compression, meanwhile, depends on identifying repeating, redundant data and optimizing it out. Consequently, encrypted streams are ideally uncompressible, which means all the current “mid-pipe”, bandwidth-saving tricks such as transparently compressing traffic between routers, also go out the window. Bandwidth consumption skyrockets and pipes saturate like never before. (Nevermind that under the current scheme, Comcast is already doing this to itself to some degree – see previous post for how my 1-hour FTP upload becomes an all-day FTP upload, continuously restarting the interrupted transfers from the beginning and saturating my upstream for the whole damn day.)

Fixing Gmail, FTP, VNC, p2p, and other legitimate traffic not working in a Comcast Town (part 1: solutions)

As fate (or rather, failure to research local broadband monopolies and factor them into my home-buying decisions) would have it, I am a Comcast cable internet customer, in a Comcast town. As you might now, Comcast has for some time been quietly blocking…er, the polite term is “throttling”, certain types of bandwidth-intensive traffic. While that traditionally has meant BitTorrent (to cite the most well-publicized example), several researchers have presented evidence showing Comcast interfering with other types of traffic, such as Gnutella and even Lotus Notes. Comcast of course openly denies any “blocking” of “applications”* using lawyeresque weasel-words, in effect tacitly admitting to interference that falls just short of outright blocking. (The admission is typically couched in terms such as “traffic management to ensure the best service for everybody”, which is marketing speak for “we ridiculously oversold our capacity, and are blaming Bad Customers** for our mistake. Phooey on them, wanting to actually use the bandwidth they paid for and such.”.) From a technical standpoint, Comcast’s blocking throttling is done using a Sandvine box to sniff the user’s packet stream for possible P2P connections, then inject fake packets into the stream (known as a man-in-the-middle attack). Comcast sends fake RST (reset) packets to both the sender and receiver, spoofed to appear as though the other side sent them. This results in both sides dropping the connection, typically appearing as a “Connection reset by peer” error if the program actually displays errors. BitTorrent clients typically don’t, but other affected programs might.

I have personally found evidence that suggests Comcast’s ham-handed blocking attempts have been interfering with even other types of legitimate traffic, including FTP, VNC and GMail. Yes, Gmail.

Gmail:
Intermittently, certain activities in Gmail (mainly, attempting to send an email with file attachments, although the Chat feature is intermittently affected as well) at home would fail in various nondescript ways – for example, just sit there and do nothing, or pop up a bizarre, title-less lowercase “please try again” Javascript popup that even Google’s tech support couldn’t identify. Of course, trying it from my work connection (same browser version, approximately same time, by the power vested in me by VNC) would always work fine. This would persist for several days at a time, then go away for a while, then come back…

Solution: During one particularly extended period of brokenness, I tried changing the standard “http://” URL to “https://” to force an encrypted connection, and reloaded the page. Lo and behold, everything now worked flawlessly! The only difference “https://” makes is it uses a different portnumber and the traffic stream is encrypted. On Gmail’s side, the same requests are answered by the same scripts, then sent back to me and read by the same browser. The only difference is that Comcast can’t snoop the streams, misdetect one as a bandwidth-hungry file transfer and inject crap into the conversation.

VNC:
Occasionally, I have a need to pull data from my home machine to my work machine, or run a program on my home machine that I can’t or don’t want to re-install at work, so I run a VNC server at home. One day, I could not connect to it from work, although nothing had changed (including IP address) and the server was definitely running (I could connect to it from other machines at home). Likewise, the VNC client at work could connect to other machines, just not on Comcast. Our IT guy at work also reported difficulty with his Comcast connection. Upgrading to the latest version of TightVNC, which uses a newer protocol, on both sides solved it. (So it seems that either my client and server both experienced bit rot, or a certain ISP decided not to like the protocol.)

FTP:
Trying to upload large files to my Web site has been failing with repeated “Connection reset by peer” errors after only a few megs have been transferred. I can let my FTP client run overnight, trying to post 30-meg videos with arbitrarily many retries, and by the morning not a single file has successfully transferred. Hmm, I said. Connection RESETs, that appear to be coming from the peer, why does this sound familiar…? Now to test a theory. As I let the FTP continue to run and fail, I research and find that my Web host supports Secure FTP, which boasts end-to-end encryption. So with only a couple-minute delay to download and install a SFTP client, I replace this simple, time-honored protocol with a CPU-hungry encrypted version, and guess what? The screenshots may speak for themselves.


Unencrypted file transfer over Comcast: no successes. Encrypted transfers over Comcast: no failures!

So it seems, if you’re stuck with Comcast, any type of transfer that doesn’t fit their preferred usage profile (that is, a granny paying $45/mo to send a couple short emails every week) is a potential target for packet discrimination during times of peak demand***. It also seems that the solution so far involves encrypting or obfuscating as much of your traffic as possible. The stream then appears as random noise, and no man-in-the-middle crap can be injected without invalidating the signature. Comcast in my area doesn’t seem to be blanket-blocking encrypted traffic (yet!), so this can be an interim solution while counting down the days until FIOS (or any competition what-so-bloody-ever) is available in your Comcast Town.

(Finally, for actual p2p transfers, this link provides instructions for enabling encryption in BT, as well as some other workarounds.)

* they don’t block applications, they block packets from those applications. The applications themselves are installed on your own PC, which they can’t do anything about without deploying a rootkit.

**there is actually a commercial to this effect running as part of the cable/satellite TV wars, but I couldn’t find a link to it. A bunch of fatcat executives are sitting around a downward-spiralling profits graph, one exclaiming, “I’ve figured out the problem! It’s the CUSTOMERS. They keep calling, and complaining, and wanting better service.” The solution was to fire all the customers and find replacement customers who were more willing to accept crappy service.

***it’s possible that these issues manifest only for users who occasionally run one of the targeted applications, such as BitTorrent (which my housemate often does). Since it is unlikely that even CrapCast would intentionally target e.g. GMail, it may be that their braindead filter just nukes TCP streams from your modem indiscriminately if recetn BitTorrent activity has been detected. Further study will be performed when I can set up a clean test at a friend’s house with Wireshark running on both sides, as the Lotus Notes guy did.

Vibe update

So, Jane and I built the electronics for 30 of them, then I took them home and plugged one in for a test drive. It connected to the USB port, beautifully, then I go to turn up the juice. As soon as there is power going to the motor and it’s getting ready to turn, the USB connection is lost and resets/re-enumerates (Windows makes an unhappy dink-dunk…dunk-dink noise). Try another board, and the same thing happens. The first one built worked just fine (on Jane’s PS2), exact same design and components. What’s going on?

Long story short, scoping on the USB 3V regulator pin reveals a steady 3V when nothing’s happening, but an unstable mess when power is being switched to the motor. Small, almost negligible power dips on Vcc are translating to huge, yawning valleys of undervoltage on the regulator output. This on-chip regulator sucks. Beefing up the storage cap on Vusb does nothing, but another 10uF or so across the power rails seems to solve the problem. The USB specs recommend a power supply bypass cap of no more than 10uF, which is already present in the design, so increasing it further is not my first choice for a solution. Then I had a moment of smartness… I was using the front USB ports on my computer, since they were easily accessible, then I remembered those long, puny little ribbon cables that connect the front ports to the motherboard.

A quick look with the side cover off confirmed that pulling half an amp through one of those puny wires was asking for trouble. Combine that with the new longer, skinnier USB cables, and said trouble answers. Plugging into the rear ports made things much more reliable, as did adding a bit more capacitance across the power rails (reliable rear AND front port operation). But now I have to wonder, just how crappy does USB port wiring in the field come? The last thing I need is a pile of angry returns when people start plugging these things into their eMachines Celerytron craputers, with USB ports wired up using wet cat whiskers and good intentions by China’s most optimistic child labor, and wondering why their vibe doesn’t work…

So, final solution is to add the extra capacitance across Vcc, along with a big dire warning about crappy front ports. Yesterday I also made an enclosure-milling template, basically an aluminum bracket with cutouts in the appropriate spots. Sliding an enclosure into the left or right side exposes only the plastic that needs to be removed for the USB port or vibe connector, respectively. (Yeah, I’m supposed to have made a CNC milling machine for this by now, but haven’t gotten around to finishing it yet…) Now with all this hacking around for suboptimal ports, I need to throw together a long-term automated test script too.

On nomenclature (Soylent Green is… is..)

Ok, so, apparently in certain circles of defense parlance, you do not blow up people. Well, you do, but the correct euphemism is “soft targets” (as opposed to “hard targets”, such as tanks, buildings, etc.). Referring to soft targets as people is rather frowned upon. I managed to inadvertently silence a getting-out-of-hand meeting yesterday as follows:

(various talking, sniggering and head-shaking about ‘targets’ nomenclature)
me: So this thing has about 4 seconds to decide if it’s being shot at buildings or people…
AL: Soft targets!
me: OK, so seriously, in the event of Soft Targets (arf! arf!), 4 seconds to reconfigure?
DE: How about bad people?
me: How about, brown people?

(*crickets*)

Apparently, certain coworkers have far not enough respect for Carlin. (That and, certain coworkers probably now think certain other coworkers have far not enough respect for other cultures and/or not being a racist fuck, even after attempting to explain the Carlin sketch…)

Ok, I’ma just continue sitting on my hands and rocking. (“I am not designing a weapons system… I am not a racist fuck… I am not designing a weapons system…”)

* * *

On a lighter note, from the People who Have Entirely Too Much Fun at their Jobs department…

Toilet colors. The person at toilet companies whose job it is to name the different colors their product comes in* has the Funnest. Job. Evar. One particular model comes in your choice of Thunder Gray, Innocent Blush, or Biscuit.

Hehe…Innocent Blush… “who, me?” Yeah, I’ve had performances like that. Usually a few hours after eating Anna’s.

* * *

Some days ago my girlfriend was staying over, and I was in earshot when she called up her lab to ask someone to turn off an experiment in her hood that was inadvertently left running. My eyes widened and I said, “Whoa, you can do that? You just MeatVNC’d into your lab.” She had no idea what I was talking about and I had to explain. (Meanwhile however, one or more nearby computer geeks were cracking up.)

* not to mention file trademark applications if they Google it and get 2 or less digits of hits. Imagine how that must look on a re`sume`. “I’m also the mark holder for Baby Green(R), Cornfetti(R) and Pilsner Swirl(R)!”

Playing with polyurethane casting material

For a project at work I had to mold some things in this hard clear polyurethane, so my Mechie ordered a giant kit of the stuff – more than the project ever will need (and it has a very limited shelf life). So I mixed up a little more than necessary and used the leftover to pot some Blinkenlichten (intelligent LEDs).

The material used is Smooth-On brand “Clear Flex 95″. This is mainly sold as an industrial product, although smaller quantities (highly recommended! See below for why) may be availble from art supply houses. It comes in 2 separate jugs of syrupy liquid marked PART A and PART B, which are mixed together in a specific ratio by weight.


Clear Flex 95 (casting resin) and mold release spray

For every part, the general process is:

1) Make a mold (basically a pool that is the inverse shape of the part you want to make). A wide variety of shapes are possible, but the shape must be such that you can remove it from the mold again once it’s hardened. Complex shapes with convexities or overhangs might require the mold to consist of two halves that can be clamped together and later pulled apart to remove the finished piece. One good mold should be good for many, many parts. (The Smooth-On site also provides a moldmaking tutorial.)

2) Liberally spray down the mold with a “mold release” agent. This looks, feels and acts pretty much like PAM non-stick cooking spray. Same idea – it keeps the piece from sticking to the mold. (It’s possible that grease or cooking spray could work as well on some materials, but it’s disrecommended by the manufacturer and I haven’t tried it.)

3) Thoroughly but slowly mix up the liquid, being careful not to stir in air bubbles (unless that’s the effect you want – but in general air bubbles are bad news since you can’t easily control where they end up or how they are distributed). Scrape the sides of the mixing container in the process to be sure everything is getting mixed. If you want to add any colorants or other stuff (confetti, metal flake, etc.?) to the mix, now is a good time to do it.

4) Pour the mixed goo slowly, aiming for the bottom of the mold (containing any parts to be encapsulated, if any), letting the material seek its own level and chase out any trapped air. It may help to fill it partway and tilt in different directions to release any air bubbles before filling all the way.

5) (advanced stuff for perfectionists*)

6) After it hardens (see the “demold time” spec on your chosen casting material), open the mold (if applicable) and pull the piece loose. If the mold was designed smartly and mold release was applied, it should come out easily. To finish the hardening process, and clear up any remaining tackiness on the surface, it’s typically baked in a low-heat oven for several hours or left out at room temperature for several days.

Obligatory Warnings: Although you can pick this stuff up at art-supply houses, don’t let this detract from the fact that this is still a nasty industrial chemical product and should be handled with due respect. Wear gloves for mixing and handling (if you get some on your skin, you’ll know within a few minutes by the burning sensation…), and long sleeves. Use in a well ventilated area, or ideally outside. Don’t get it in your eyes, don’t mix it in your favorite beer mug, don’t bake the parts in your food oven.


Aluminum mold for USB gadget (failed unit shown, it’s the one that was handy)


USB gadget (successful unit shown)

For the USB gadget, a 2-part mold was cut from a small block of aluminum to be a bit larger than the board all around. Both pieces were sprayed with mold release. After wrapping some tape around the USB connector in case of drippage, the board was stuck into the aluminum mold block with the connector sticking out. The mix was slowly poured in until the level reached almost to the top of the main part of the mold, then the cover plate was screwed on. The complete mold was then turned upright (USB connector pointing up) and filled to just above the top of the PCB, tilting gently side to side to get the air bubbles out. After sitting like this overnight, it was removed and baked for a few hours at about 150degF in a cheap toaster oven.


Ice cube tray "mold". The first cube in the tray bears a plastic recycling logo, which now appears on one of the molded cubes (whoops!)


Single cube. Note extreme refractive index(?) resulting in multiple reflections of the hardware inside.


Cubes with power/data applied

The LED cubes were done exactly the same way, except instead of a complex aluminum mold the circuits were stuck in a plastic ice cube tray, and the cubes filled with the casting material. The first batch (2 cubes) turned out awesome! About a week later I mixed up a new batch and tried it again…


Fail!

Not sure what went wrong with this 2nd batch, but it remained about the consistency of pine sap (and flowed very slowly, e.g. over the course of a day or two), and after a few days it bubbled up like crazy and stayed that way. Once I returned from a 2-week trip (3+ weeks curing in air), they finally seemed to be hardened. Current theories are a) I mixed it wrong (confused the Part A and Part B) – although I checked and doublechecked… b) it really does go bad that fast after opening, or c) the leftover goo from the fat lip on top of the can (exposed to moist March air for some several straight days) helped poison the mixture. I hope to try it again sometime reasonably soon, but in the meantime it seems like a good idea to get this stuff in as small containers as possible and use it soon after it’s opened. Blowing some dry inert gas into the cans before closing could extend its life a bit.

After the unsuccessful attempt to demold them from the cube tray resulted in “melting” all over my table, the above is the mostly unsucessful attempt to get them back into the cube tray. Each step represents about 2 days’ worth of melting. This could potentially be reproduced intentionally for artistic effect, IF there is some way to force it to harden up at the desired time (such as immersion in straight Part A/B, if it resulted from a bad mix ratio). After several weeks’ exposure to open air, the stuff shown seems to have finally hardened. Comparison of the melty results to the original cubes also shows that they started out completely bubble-free; the massive amount of air bubbles present in the end result most likely formed as the result of some slow chemical process in the dud mix. Small bubbles began to appear by the day after pouring and continued growing until the material hardened. (It may even be continuing still – I’ll find out one day if one of these melty cubes suddenly explodes.)


Bubbles where there were no bubbles before


Being blinked, top side


Being blinked, bottom side


After some days of continuing to melt around in the tray, I looped them over a rod and let them just melt freely. Here is how they finally hardened.


Actually, when lit the melty ones kind of look badass!

* if you really, really don’t want air bubbles, one way to get rid of them is to build a vacuum chamber (the compressor from a discarded cube fridge or dehumidifier, etc. makes a good hobby vacuum pump and compressor). Basically any container you can place the still-liquid mold into and pull a vacuum on it, thus causing any trapped air bubbles to swell and burst (or become buoyant enough to rise to the top and escape). Then, by reversing the pump (positively pressurizing the chamber) until the mix hardens, any small remaining bubbles can be compressed to nearly invisible size :-)

LOLplants

Probably not funny unless you’re a horti/carnivore freak, but I just about rolled when I saw this.

More disappearing…

So, all my last minute work shizzle is for the most part done. Some guys in Cali and a guy in DC will be receiving some (entirely unrelated) totally awesome, kick ass hardware. (The latter, also a hundred-plus-page brick of a Final Report, which he in all likelihood will not read.)

So on Saturday, I am headed to South Africa for the next couple weeks! Long story why (pleasure, not much if any business), and I probably should have mentioned it earlier, but away I go. :-)

Addendum: I will be incommunicado during this time. Internet there is about as fast and reliable as Crapcast is here (or much less so), and as for phone, CDMA actually stands for “Considered Doorstop in Most Areas” (despite what industry trade groups would have you believe).

Some very bulk

OK, this has been a busy little while here, and I forgot that here is where I write what I’ve been up to so I don’t forget :-P And now I’ve forgotten. So, this is the last few months of real-life events…

We last left off with Xmas in Massena, with Kr*’s folks (and, from what I am told, her old man developing a huge man-crush because I like grilling, venison and building shit :-P). So, here is…

New Year’s
In Chicagoland with the folks. Much of the fun (the big newyears cabin party) is in the photo album, featuring a whole lot of people-getting-tipsy and Nando-passed-out-and-getting-stuff-stuck-in-his-hair (not by me!), my bro pissed off about being woken up and giving the ol’ batwing (NSFW!), and what happens when you put a big nuclear cooling pond right next to a major* road in subfreezing temperatures.

[The Obligatory Photo Album]

Also, fun facts on Chuck Norris Saturn vehicles, after one of my friends bricked one by leaving a cellphone charger in the cigarette lighter for a few days: 1) Don’t leave cell chargers (or whatever gadget) in the cig lighter overnight; unlike many vehicles who cut power to the cig lighter when off, on a Saturn it will apparently drain your battery. 2) Don’t leave the keys in the ignition when not in use (even if the car is safely locked in your own garage and this is a good place to not lose your keys), because if you ever leave a cellphone charger in the cig lighter overnight, it will brick your car! You see, for some retarded reason they decided to put the battery in the trunk, which can only be opened by a) the electric trunk opening button, or b) the ignition key, which is now permanently stuck in the ignition, because the key release mechanism is an electric solenoid powered by the battery, which is in the trunk…

Skiing at Sugarloaf
Pictures will be posted as soon as someone uploads them ;-) This was a load of fun. 3-day ski trip featuring my first actual lesson, some adventures with trees, a beautiful run all the way from the summit (nearly above tree line), and the discovery that cellphones are not good for breaking falls (as it turns out, falls are good for breaking phones. Repair will be documented separately…).

* major for rural Illinois, which means one lane in either direction, but a speed limit of 55.

LiveJournal Strike? (Don’t back-down, back-up!)

Today, I logged into LJ (that drug I joined because All my Friends were Doing It), and found out that:

a) As of yesterday (or some other near-term time), free accounts have been discontinued (new users join as Sponsored or Paid accounts)

b) As of about-same-time, some unspecified changes to “Acceptable Content” policies, with the upshot of creating a bunch of new forbidden opinions/topics and unacceptable usernames. I’d really like to know the details of these changes myself*, but they don’t seem to be officially documented and I can’t be ars inconvenienced to dig through five thousand comments on the relevant pressrelease pages to get at the details.

c) Everyone’s going to strike by not reading/writing anything to LJ from 8:00 PM Thursday until 8:00 PM Friday, Eastern Standard Time. A more detailed manifesto is given by the bolded text of this post.

I can well understand the rationale behind discontinuing free accounts**, however, I find the lack of any advance notice or discussion on the matter disturbing (not to mention my content’s wholesale purchase by this “international media company” I’ve never heard of). My main concern, though, is this retroactive “acceptable content” change. This means I and every other LJ user potentially have to go back and sanitize 4+ years’ worth of old posts or have my entire 4+ years’ worth of blog and comments deleted? …Every time they (or parent media conglomerate / ad brokering firm / whomever) decide to tweak the rules? Not to mention anyone whose username or community is now against the TOS; good luck recovering from that. Regardless, the only way a “free” service can turn up the crap and still keep you is if you’re stuck there: you know, like having built several years of content and reputation there that would be immediately forfeited by cancelling your account. Once any “free” service jumps these particular sharks, it’s time to start hedging for the future.

My personal thought is a 1-day boycott would have no more impact than those worthless “buy no gas on (date)…” chain letters – nobody produces or consumes any less, just bumps the usage profile around by a couple days***. And as astutely noted here (and again borne out by the Free Web Hosting era), organizing and participating in boycotts of a service via that service is a good way to get your account whacked.

So fuc inconvenience boycotting. Here’s what I’m doing, and I urge you to do the same. Download a utility such as LJ Backup, rescuing a safe, yours-to-keep copy of your content from the server. You know, just in case. Repeat the process frequently. This way, at some near future time when random popups start coming up on your journal, or your account gets deleted for some uncareful words about some company that’s now a sponsor, or you get a ransom letter saying your own free account is now $5.99 a month, you’re not held hostage by your own content. Spend that few-bux-a-month instead on your own Web hosting, dump the backup to the blog software of your choice and be beholden to no one! RSS feeds are the new Friends Page.

*as someone who blogs stuff an entire category about selling vibrators, plenty of Hate Speech against salesmen, various openly misogynist, racist and homophobic statements under just the right moderator’s eye and/or regexp filter.

**any arguments about whether the company actually needs more money notwithstanding, this is among the most fair of many possible tried-and-true approaches, based on years of experience as a vocal opponent during the heady days when Free Web Hosting companies (and to a lesser extent Free ISPs) were the web 1.0 dot-com bubble rage. Unlike the typical approach, existing members’ pages are not suddenly serving up objectionable and vaguely pornographic popup ads…

***buying your gas a day early isn’t exactly Stickin’ It to da Man. But, if you take this day to put away the keys and air up your bike…

Disappearing act

Going to be holed up at work most of this week finishing up two projects with immediate deadlines. Returning to civilization sometime after next Monday!…

Circle stickers on cars – gettin’ hip with ISO

Sometime after moving to the east coast, I started noticing a few cars driving around with these black and white oval-shaped stickers bearing a random 3-letter code. At first I figured they were some kind of east-coast thing, maybe parking stickers identifying membership in a particular school district, etc. I didn’t think much of it at first, but then they started to multiply. It wasn’t just a “thing”, it was a phenomenon, and I was living under a rock. Was it a new secret society? The Medford Mafia broadcasting their next hits? The movement appeared to be growing so fast, there were even parody stickers of these stickers popping up. This one says ((EARTH))…this one says ((BEER)). This one I ((CAN’T REPEAT IN POLITE COMPANY)). Today I turned to the all-knowing one for an answer. Sooo…

In 1949, the Convention on Road Traffic (Geneva, 1949) came to be. Article 20 calls for “distinguishing signs of the place of registration” of vehicles. Yep, it’s a European thing. The letter code (not necessarily 3 letters) is an ISO country code (more info/pointers/rantables here). In other words, these things Over There are about on par with an emissions sticker; in the US, they mainly represent American suburbanites trying to look Euro. A few municipalities (strangely, many in Connecticut) have adopted this trend wholesale, making up their own fake ISO “country codes” representing their town and handing them out. Naturally, a cottage industry has sprung up to generate fake fake country stickers; odes to sports teams and Jesus Fish and pictures of mooses meece moosii animals.

This research jaunt is kind of a let-down. I want my secret societies, dammit! In the meantime, now I want an oval sticker of my own…

Anonymizer.com Inc. and “Trademark Delusion”

This week I got the following nastygram from Anonymizer.com Inc., a company that runs an anonymizing Web proxy, alleging trademark infringement.


Subject: Trademark infringement
From: "Jason Van Peeren" <withheld>
Date: Mon, February 25, 2008 11:43 am
To: <withheld>

http://cexx.org/anony.htm

I noticed that you are currently using our Trademark Term in a fashion that
infringes on our trademark rights. We kindly ask you to cease and desist
the use of Anonymizer and or any variations of this trademark which has been
withstanding since May 1, 1996. In place of the term "Anonymizer," please
use "anonymous web proxy".

We thank you for your cooperation.

Sincerely,

--

Jason Van Peeren

Web Marketing Manager

Anonymizer, Inc.
Trusted / Proven / Secure

My reply:


From: Tim @ cexx <withheld>
Sent: Wednesday, February 27, 2008 10:07 AM
To: Jason Van Peeren
Subject: Re: Trademark infringement

Hi,
We have received this identical letter several years ago, and replied to it.
Please refer to http://cexx.org/anonymizer.txt
Then go away.

…Yes, the linked reply predates this letter by several years, mainly because I received the exact same letter (right down to the bizarre capitalization of “trademark”) from a different name at the same company that many years before, and already told them to piss off, in the much longer form shown.

The best part is this ruff, tuff legal shark’s reaction to my reply.


Subject: RE: Trademark infringement
From: "Jason Van Peeren" <withheld>
Date: Wed, February 27, 2008 2:24 pm
To: <withheld>

Thanks for your reply. Sorry to bug you Tim

Some additional lessons, as long as I’m mistaking this for Tim’s Law Blog:

1) Use of a(n allegedly) trademarked term in a generic way is ABSOLUTELY NOT trademark infringement. (Infringement would occur if I made shitty pants in my basement and sold them as Levis, but not if I “creamed my Levis” when I saw some new gizmo.) Dilution might be closer to the mark, but even that’s stretching the Silly Putty(R) a bit. (Actually, I think the most correct term for this is genericide, although I believe in this case use of the term generically predates this company and its use of the term as a service mark).

2) And actually yes, we’re talking about a service mark here, not a trademark (Anonymizer.com Inc.’s “The Anonymizer” is a service, not a product.)

3) Oh yes, and if you ever invent, say, the greatest new painkiller since sliced vodka, don’t name it The Painkiller.

Folks, protect your language! Don’t let companies get away with this crap.

Movie meme recap

Eeks, only now did I realize that almost half of these are John Carpenter flicks.

1) I have come here to chew bubblegum and kick ass… and I’m all out of bubblegum.
John Carpenter’s They Live. Only the awesomest alien movie that ever was, starring (Rowdy) Roddy Piper, as the main character, in an actual acting role.

2) If we’ve got any surprises for each other, I don’t think either one of us is in much shape to do anything about it.
The Thing. This is the very last line; neither of the (only) two survivors knows for sure whether he or the other survivor is one of them.

3) It was nothing like that, penis breath!
E.T. magpiefirefly got this one.

4) The tortoise lays on its back, its belly baking in the hot sun, beating its legs trying to turn itself over but it can’t. Not without your help. But you’re not helping.
Blade Runner – parsemand got it! And says there is a newly re-edited version that kicks even more ass than the original.

5) Santy Claus only brings presents to them that’s been good all year. All the other ones, all the naughty ones, he punishes! What about you, boy? You been good all year?
Admittedly this is a tough one, for everyone who doesn’t scavenge the obscure bad-horror-movie bins at their local backwater VHS rental place (remember those? (VHS tapes *or* places that rented them?)). Silent Night, DEADLY Night! If you guessed this movie is about a deranged Santa Claus that goes around killing people, you’d be right.

6) What the hell are you? …The world’s most pissed-off snow cone!
Jack Frost (probably from the same shelf/bin as previous). There are actually two movies by this name; one is about a mutant killer snowman, and one is a mushy family kids movie. The first time, we picked up the wrong one by mistake and spent a good 45 minutes or so going, “Isn’t he going to start killing people yet? Why isn’t he killing anyone?”

7) EXCUSE ME,Jack! You heard the man! My oxygen’s running out! Look, if you don’t help me, you’re going to end up with this microscopic pod floating around your insides with this teeny tiny human skeleton at the helm.
Inner Space. I remember seeing this movie when I was young and liking it a lot, but I don’t really remember most of it.

8) Everything. OK! I’ll talk! In third grade, I cheated on my history exam. In fourth grade, I stole my uncle Max’s toupee and I glued it on my face when I was Moses in my Hebrew School play. In fifth grade, I knocked my sister Edie down the stairs and I blamed it on the dog… When my mom sent me to the summer camp for fat kids and then they served lunch I got nuts and I pigged out and they kicked me out… But the worst thing I ever done – I mixed a pot of fake puke at home and then I went to this movie theater, hid the puke in my jacket, climbed up to the balcony and then, t-t-then, I made a noise like this: hua-hua-hua-huaaaaaaa – and then I dumped it over the side, all over the people in the audience. And then, this was horrible, all the people started getting sick and throwing up all over each other. I never felt so bad in my entire life.
The Goonies! I can’t believe nobody got this one! Everybody who grew up in the 80s should know this one :P

9) Zac Hobson, July 5th. One: there has been a malfunction in Project Flashlight with devastating results. Two: it seems I am the only person left on Earth.
The Quiet Earth. You know, secret government projects involving particle physics always turn out well.

10) My ‘them’. Every paranoid schizophrenic has one; a ‘them’, a ‘they’, an ‘it’. And you want to hear about my ‘them’, don’t you?
In the Mouth of Madness. Shawn on the cexxy side knew this one.

11) Three years ago our Johnny died. We thought there was no hope, but then we discovered the United Appeal for the Dead. They showed us that despite Johnny’s handicap, he could still be a useful member of our family and the community. Our United Appeal for the Dead caseworker showed us that the absence of life from Johnny’s body didn’t have to mean his absence from our daily lives.
The Kentucky Fried Movie. Great shit from the 70s.

12) Don’t mind her. She’s still upset because somebody dropped a house on her sister.
Beetlejuice, beetlejuice beetlejuice! magpiefirefly got this one too. I haven’t seen that in ages.

13) Ok you Primitive Screwheads, listen up! You see this? This… is my boomstick! The 12-gauge double-barreled Remington. S-Mart’s top of the line. You can find this in the sporting goods department. That’s right, this sweet baby was made in Grand Rapids, Michigan. Retails for about $109.95. It’s got a walnut stock, cobalt blue steel, and a hair trigger. That’s right. Shop smart. Shop S-Mart. You got that?
Army of Darkness. jovianconsensus got it. As for the rest of you, I’m disappointed in y’all.

14) I would like… cheese… go… to… hell…
Explorers. The line is actually spoken by a rat who can control a speech synthesizer. Fortunately this is its only line…

15) Gentlemen, you can’t fight in here! This is the War Room.
Dr. Strangelove. jovianconsensus got this one too.

Demotivational posters

So, while waiting for my boards to come back on Secret Project A and Non-Secret Project B, and for the guy at Company C to get back to me on diagnosing a crash between their Windows DLL and my software that is supposed to interact with it, I was…less than motivated, so I made some motivational posters. (No, not by hand; being the motivated sort that I am I found this autowidget online that handles all the formatting and borders and stuff.) The first two images are my own photographs, and the last two are stolen from the on-line.


PATIENCE: They say it’s a virtue. But being virtuous is not necessarily satisfying.

TEAMWORK: This job would have taken a lifetime. Now it will take two.

CONTRACTING: There is never time to do it right, but there is always time to do it over.

QUALITY: Caveat Emptor is not a business model.

Spinlock This: Less productive than reading slashdot all day! Film at 11.

1) Dude. Seriously. The display we’ll be designing into our gadget won’t be ready for 6 more months? You said it was ready a week ago, and that was two months ago. Our customer is crawling up my ass for the prototype we promised them in December. So you gave me this other one and said “prototype with this, it’s exactly the same.” After three days’ strangling a datasheet out of your chip vendor, I got a partial datasheet with NO protocol info. Now three more days and re-pinging your guy I weasel the protocol info from your end, and the protocol on this one bears no freaking resemblance to the one we’ll actually be using. So why am I to be spending the time to integrate this one when 90% of that code will have to be scrapped and rewritten anyway?

2) Dude. Seriously. Tell me mortgage guy, what the hell is mortgagemail.com, and why are you sending me documents through some meaningless middleman instead of just emailing, faxing or dead treeing them to me directly? … Ok, I signed up on this dealy, but it just says “There are no messages to display for the selected month and year.” Also, it didn’t ask for any verification info, address, SSN or anything when I signed up to receive my Super Secure Documents that are apparently too sensitive to email. Did I miss a memo here? …Ohhhh, you didn’t say anything about having to sign up with this specific email address, which you shouldn’t have anyway; I created a new email address for this signup, as I do with every other place I sign up on the green earth. … Dude, seriously. I gave you the correct address to send the stuff to that middleman site with THREE TIMES already. Dude. Seriously. I just gave you the insurance company’s full details and phone number in the email you replied to to ask what the insurance company’s name and phone number is. Open your g*dd*mmuth******in eyes. …Dude. Seriously. I do not sign up for random commercial Web sites using my (only-remaining-spam-free) personal email address. I don’t care if you think this mail-a-dealy thing is the bees’ knees, and I don’t care if you want to save a buck in postage by giving me Yet Another Password to Remember and Yet Another Site to Login and Poll Frequently for New Messages, no frickety way. And if that does not work, I still have a “mail box”, which is still perfectly functional and in fact attached to the very house we are trying to refinance here. In fact, I pass by it on a regular basis, which is more than I can say for “mortgagemail.com”.

3) Ma’am. Seriously. What do you mean you can’t fax proof of homeowners’ insurance to the mortgage guy? I am the policy holder, and I am explicitly authorizing you to do so. They have to call directly..What do you mean I can’t authorize it? I AM THE FRICKING POLICY HOLDER.

4) Dude. Seriously. No less than three admin people and a Director of Mechanical Engineering are in a meeting with a battery and <specialized electronic gadget> company, the goal of said meeting being to discuss combining our technologies into a seamless product, gazing glasseyedly at schematic diagrams on the projector, and you did not think to invite a single electronics engineer to this meeting? (Oh yes, this IS one of the companies that found out about us by meeting me at ESC. I found this out when the DME came running into my office after the meeting with a stack of electronics samples and evaluation kits, asking when I will have a chance to look at them.)

5) Dude. Seriously. Can I get a quote to get these circuit boards made? This is the third time I’ve asked. Yes, I understand I can’t get electrical testing on a multi-project panel, and yes, I know you received the file, but how much will it cost to make them? Dude. Seriously. I know Chinese New Year was last week, but you can’t *still* be hungover, seriously?

6) Dude. Seriously. What do you mean our Molex crimper doesn’t crimp Molex crimp terminals? No, hand-soldering bare wires to 0.5mm crimp terminals in volume quantities is non-trivial. Wait, you already shipped out the gadget that needed the crimp terminals last Friday, without any? Why are you asking me about crimp terminals today?

And I wonder why I spend an entire day and get *butt* done.

[meme] Movies

Stolen from Stormsdotter

1. Pick 15 of your favorite movies.
2. Go to IMDb and find a quote from each movie.
3. Post them here for everyone to guess.
4. Fill in the film title once it’s guessed.
5. NO GOOGLING/using IMDb search functions.

1) I have come here to chew bubblegum and kick ass… and I’m all out of bubblegum.

2) If we’ve got any surprises for each other, I don’t think either one of us is in much shape to do anything about it.

3) [E.T.] It was nothing like that, penis breath!

4) [Blade Runner] The tortoise lays on its back, its belly baking in the hot sun, beating its legs trying to turn itself over but it can’t. Not without your help. But you’re not helping.

5) Santy Claus only brings presents to them that’s been good all year. All the other ones, all the naughty ones, he punishes! What about you, boy? You been good all year?

6) What the hell are you? …The world’s most pissed-off snow cone!

7) EXCUSE ME,Jack! You heard the man! My oxygen’s running out! Look, if you don’t help me, you’re going to end up with this microscopic pod floating around your insides with this teeny tiny human skeleton at the helm.

8) Everything. OK! I’ll talk! In third grade, I cheated on my history exam. In fourth grade, I stole my uncle Max’s toupee and I glued it on my face when I was Moses in my Hebrew School play. In fifth grade, I knocked my sister Edie down the stairs and I blamed it on the dog… When my mom sent me to the summer camp for fat kids and then they served lunch I got nuts and I pigged out and they kicked me out… But the worst thing I ever done – I mixed a pot of fake puke at home and then I went to this movie theater, hid the puke in my jacket, climbed up to the balcony and then, t-t-then, I made a noise like this: hua-hua-hua-huaaaaaaa – and then I dumped it over the side, all over the people in the audience. And then, this was horrible, all the people started getting sick and throwing up all over each other. I never felt so bad in my entire life.

9) Zac Hobson, July 5th. One: there has been a malfunction in Project Flashlight with devastating results. Two: it seems I am the only person left on Earth.

10) [In the Mouth of Madness]My ‘them’. Every paranoid schizophrenic has one; a ‘them’, a ‘they’, an ‘it’. And you want to hear about my ‘them’, don’t you?

11) Three years ago our Johnny died. We thought there was no hope, but then we discovered the United Appeal for the Dead. They showed us that despite Johnny’s handicap, he could still be a useful member of our family and the community. Our United Appeal for the Dead caseworker showed us that the absence of life from Johnny’s body didn’t have to mean his absence from our daily lives.

12) [Beetlejuice] Don’t mind her. She’s still upset because somebody dropped a house on her sister.

13) [Army of Darkness] Ok you Primitive Screwheads, listen up! You see this? This… is my boomstick! The 12-gauge double-barreled Remington. S-Mart’s top of the line. You can find this in the sporting goods department. That’s right, this sweet baby was made in Grand Rapids, Michigan. Retails for about $109.95. It’s got a walnut stock, cobalt blue steel, and a hair trigger. That’s right. Shop smart. Shop S-Mart. You got that?

14) I would like… cheese… go… to… hell…

15) [Dr. Strangelove] Gentlemen, you can’t fight in here! This is the War Room.

This blog is protected by Dave\'s Spam Karma 2: 470478 Spams eaten and counting...