I got an indignant comment on my Stowa post from a Panerai fan:

I don’t get the Panerai link. Sure, it is based on the 6498, but so heavily modified that is stands on its own. This Stowa is not modified at all, so it’s no comparison.

Panerai watches are technical pieces of art. Stowa’s are nice watches, but works of art? Hardly.

Since this particular comment got under my skin, here’s a bit of a stolen- photograph essay to disagree. (Each picture is a link to the page where I found it.) To refresh, here’s the version from Stowa - decorated, Geneva stripes, swans-neck regulator:

movement1

Next up, the Panerai PAM36:

pam36

Yep, dead stock. They even left the screw notches unblued and the less-expensive index regulator. All that’s done is the CNC-engraved logo text on the plates and bridges. Otherwise a dead-stock 6498, and not even an upgraded one at that. Considering that this watch goes for a ton of money, I’m unimpressed.

Now, it should be noted that Panerai used to use Rolex movements, in particular the Cortebert. In some of their 6498 models, they’ve redesigned the bridges and plates to resemble the Rolex movement. Here’s a pic of the Cortebert next to the modified 6498:

eta-rolex

(Rolex on the left)

If you aren’t a hardcore watch geek, those look pretty similar, eh? And if nothing else, at least Panerai is trying here to look like they have their own movements. (Interestingly, the Rolex has a plain index regulator, and the 6498 has a swans-neck.)

For a better example of what you can do to transform the 6498, consider the Omega 2201, as seen in the Railmaster XL handwind:

omega-2201

Now that’s nicely done. New plates and bridges, vertical stripes, much harder to tell that it’s a 6498.

For an even more extreme transformation, Dirk Dornblueth replaces the plates and bridges with a traditional German three-quarter plate:

dornb

Yep, complete with swans-neck, real blued screws and chaton-set jewels. Gorgeous!

That concludes today’s rant. I should note that that Panerai has since created some movements fully in-house - my point is that some of their watches are just overpriced (IMHO) base Unitas movements. Not all, just some. Knowledge is power, folks.

Out the window

June 27th, 2009

I changed offices a few weeks ago from the second to the sixth floor. I don’t have a window, but this is the view along the hallway leading there:

View out horizontally

View out horizontally

and looking down into the courtyard:

Down a bit, bioengineering and CE/CS

Down a bit, bioengineering and CE/CS

Yeah, I am lucky.

Useful zsh tricks

June 26th, 2009

I’m using zsh on my mac, mostly for its better completion system. A coworker asked me for a couple of tweaks, the answers took a bit to find so here’s a FYI for the command line nerds out there.

Q1: The cd command tab-completes files, which is totally broken.

Fix:

 compctl -/ cd
Q2: Tab-completion for git commands, please
Ans:

 compctl -k "(add bisect branch checkout co clone commit diff fetch grep init log merge mv pull push rebase reset rm show status tag)" git
The second just says that that ‘these words in the array are the arguments for the git command.’
There’s also the vastly more elaborate code here, which modifies the prompt to show git status when in a git-controlled repository. I’m trying that now.

Q3: Fix the prompt when using virtualenv
Ans: See this post (especially read the comments). Looks like 1.6.1 of virtualenvwrapper and newer should ‘just work.’

Arduino datalogger is up!

June 23rd, 2009

As previously noted, I decided to make a super-simple office temperature and humidity datalogger based on the Arduino, LM35CAZ and SC600. Today I finally added the resistor and cap for the lowpass filter on the SC600 and the data looks good:

picture-22

Yep, that web page is public. You too can see the ambient conditions in Calit2 room 6402! Temperature is Celsius, humidity is relative percent.

For some reason the temperature data is noisier than I’d expect, but the humidity data looks clean. I’ll have to see if I can pull the data into a graphing page - I’m experimenting with adding it to Cacti (thus the format of the web page, designed for machine consumption) but have not gotten it working yet.(see below)

Here’s an iPhone snap of the completed circuit - really quite minimal. The LM35 needs no external parts at all, and the SC600 just needs the 47uF cap and 100k resistor. Good sensors for this, and cheap too.

img_0005

(Yeah, I really covet the macro photo ability of the new iPhone.)

It turns out that the Arduino outputs 5VDC, so I don’t even need the power supply to run it - all via USB. Elegant, that.

Update 6/26/09: Data in Cacti! I had to prefix the HTML output with a space to get the data ingester to work, and fiddled with the graph settings to get it to display. Check out the page here (login is guest/guest) and admire the data.

Posted in Arduino | No Comments »

Mac page updated and edited

June 18th, 2009

I met a couple of old friends from out of town this week, and was amazed to learn that they still actually use my Macintosh page. So I’ve just finished and edit and update pass on it to bring it up to date. Enjoy!

Snake!

June 16th, 2009

I was up at SDSC today, and saw this out the window:
cables

SDSC is clearing out the old machine room, and had stacks and stacks and stacks of cabling they’ve removed. Newer hardware generally equals fewer and thinner cables; nice, that.

Not again!

Once again, I am considering the purchase of an expensive watch, and once again I am taking refuge in obsessive research. This page documents what I’ve learned, so that others can be amused at my expense and perhaps find it useful. As with the Marinemaster, I don’t have one so all pictures are borrowed as noted. Links and references are at the bottom.

What is it this time?

It’s the Stowa Marine Original Limited Edition II, just announced. 120 pieces total, 80 to the USA. Here’s the official picture:
picture-21
This is a variant on the Marine Original Black:
1244292232-6776

The limited edition is differentiated by having

  1. Matte-finished case
  2. Metallic silver 12 applied (vs painted numerals)
  3. Hand-applied serial number below subseconds
  4. Deployant buckle, hand-stitched leather strap

The plain version is (as of 6/09, matte finish and deployant buckle) 915 Euros or $1267. The LE version is $1460, or $193 more. For that you’re basically getting a nicer dial as far as I can tell.

Specifications

Case

The case is matte-finished 316L stainless steel, 42mm by 10.8mm. Signed crown, waterproof to 50 meters, screwed caseback with sapphire display window and domed sapphire crystal. Not sure if the crystal is anti-reflective or not; I suspect not.
crown

(That’s a picture of the regular edition with polished case)

caseback

(Ditto)

Movement

movement

The movement is a Unitas 6498-1, handwind mechanical, 16.5 ligne, 17 jewels, 18000vph, appx 48 hour power reserve. Blued screws, Geneva stripes (Cotes du Geneve), screw balance. ETA sells movements in five different grades; I would guess this to be Elabore or Top grade (3 or 4), and Stowa adds a nice swans-neck fine regulator too:

regulator

Dial

Here’s a comparison from Stowa of the changes to the LE dial:
molim_4webbild1

and here’s their picture of the non-LE again:
1244292232-6776

Discussion and rambling

This watch really reached out and grabbed me. I’ve been looking for a 6498-based watch for a year or two now, as I quite like the look and the movement. You can read more in the links, but the Unitas movements started out life as pocketwatch movements and have taken on immense popularity in the era of larger wristwatches. They’re reliable, easy to repair and nicely designed. In the higher grades, they keep excellent time and are a more reliable alternative to a vintage handwind. I love the subseconds-at-six design, especially when paired with upright Arabic numerals and vintage hands. Retro, yet functional and uncluttered. It’s a coherent and clean design, which for me is very high praise.

I’ve also thought about the first limited edition, which was in many ways even nicer - white enamel dial with a red ‘12′. It sold out in days, and is selling for more than list price. So maybe the LE2 will retain value better as well, but in watches you should never count on making money. I always assume I’ll pay depreciation costs. The blue-on-white version is quite pretty though:

1233069634-4600

It’d be nice if there was lume for nighttime viewing, but I’ll accept its lack as a design decision.

You can certainly spend a lot more on a 6498-based watch (e.g. Panerai); this is actually a fair market price if not cheap. Sigh.

I spent some time considering the Alpha version with cloned Chinese movement, but I’d rather have a few nice watches and am thus in the middle of an Ebay selloff to fund the Stowa. Look for a review in October or so when it’s supposed to ship. I’ve reserved serial number thirteen!

More information

  1. Watchbuys product page
  2. Non-LE product page at Stowa
  3. ETA pages on the 6498 with drawings, part numbers and other gritty details
  4. Unitas reference site - history, links, other watches with the same movement, etc.
  5. TickTalk on why he likes this movement
  6. Sea-Gull clones are still apparently having QC issues.
  7. You can get a base-grade 6498 from Otto Frei here. These are popular with newbies due to the larger size and robust design.

Arduino and Twisted

June 15th, 2009

The datalogger progresses - now with carefully-soldered SC600 sensor online:
img_0191Still need to add the 47uF cap and 100k RC filter, though, so the humidity data is crap.

I cleaned up the code a bit. The Arduino now simply sends raw ADC counts, and lets the other side do the linearization and conversion. Much more sensible. To make it easy, I have the Arduino send

ADC ADC\n

In other words, value space value newline, which is the easiest possible thing to parse on the other end. Code is now simply:

void setup() {
// initialize the serial communication:
  Serial.begin(9600);
}

void loop() {
  Serial.print(analogRead(0));
  Serial.print(" ");
  Serial.print(analogRead(1));
  Serial.println();
}

Using the magnificent Twisted framework, this is a ‘LineReceiver‘ protocol on top of a serial port, so the code to read it is quite compact. I won’t paste it here, as its 85 lines with all the comments, command line parsing, error handling and such, but here are the key bits:

class Echo(LineReceiver):
    def processData(self, data):
        """Convert raw ADC counts into SI units as per datasheets"""
        if len(data) != 2:
            return

        tempCts = int(data[0])
        rhCts = int(data[1])

        rhVolts = rhCts * 0.0048828125
        # 10mV/degree, 1024 count/5V
        temp = tempCts * 0.48828125
        # TODO need to rewrite this to include thermal compensation as per SC600 datasheet!
        humidity = (rhVolts * 45.25) - 42.76
        logging.info('Temp: %f C Relative humidity: %f %%' % (temp, humidity))

    def lineReceived(self, line):
        try:
            data = line.split()
            logging.debug(data)
            self.processData(data)
        except ValueError:
            logging.error('Unable to parse data %s' % line)
            return
if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO, \
                format='%(asctime)s %(levelname)s [%(funcName)s] %(message)s')

    o = THOptions()
    try:
        o.parseOptions()
    except usage.UsageError, errortext:
        logging.error('%s %s' % (sys.argv[0], errortext))
        logging.info('Try %s --help for usage details' % sys.argv[0])
        raise SystemExit, 1

    if o.opts['baudrate']:
        baudrate = int(o.opts['baudrate'])

    port = o.opts['port']

    logging.debug('About to open port %s' % port)
    s = SerialPort(Echo(), port, reactor, baudrate=baudrate)
    reactor.run()

Gotta love Python! (And Arduino.) Next up is trying to get the data into Cacti or RRDtool…

Update 6/17: Adding a web interface took just a few more lines of code:

class indexPage(resource.Resource):
    isLeaf = True

    def render_GET(self, request):
        ccStr = 'Temp:%f Humidity:%f\n' % (lastTemp, lastRH)
        return ccStr

    root = indexPage()
    site = server.Site(root)
    reactor.listenTCP(2000, site)

Now trying to get Cacti to parse the data it returns.
Posted in Arduino | No Comments »

Progress on the Arduino

June 10th, 2009

I was having a bad karma day (OSX install failing, RabbitMQ borked, Debian server freezing, apt failures, etc, etc.) and worked a bit on the Arduino project as a break. Here’s the LM35 wired up and working:

img_0189

(That’s my ancient self-designed linear power supply with 5/6/12 and LM7805)

Temp out goes to ADC0. Arduino runs

void setup() {
// initialize the serial communication:
  Serial.begin(9600);
}

void loop() {
  // send the value of analog input 0:
  int val = analogRead(0);
  float fVal = map(val, 0, 1023, 0, 500);
  Serial.println(fVal);
  // wait a bit for the analog-to-digital converter
  // to stabilize after the last reading:
  delay(100);
}

and, on the mac, Processing runs

// Graphing sketch

// This program takes ASCII-encoded strings
// from the serial port at 9600 baud and graphs them. It expects values in the
// range 0 to 1023, followed by a newline, or newline and carriage return

// Created 20 Apr 2005
// Updated 18 Jan 2008
// by Tom Igoe

import processing.serial.*;

Serial myPort;        // The serial port
int xPos = 1;         // horizontal position of the graph

void setup () {
  // List all the available serial ports
  println(Serial.list());
  // I know that the first port in the serial list on my mac
  // is always my  Arduino, so I open Serial.list()[0].
  // Open whatever port is the one you're using.
  myPort = new Serial(this, Serial.list()[0], 9600);
  // don't generate a serialEvent() unless you get a newline character:
  myPort.bufferUntil('\n');
}
void draw () {
  // everything happens in the serialEvent()
}

void serialEvent (Serial myPort) {
  // get the ASCII string:
  String inString = myPort.readStringUntil('\n');

  println(trim(inString));
}

Notes so far:

  1. On OSX 10.5, Processing fails with RXTX errors. The solution, found here, was a new version of librxtxSerial.jnilib, which I copied into /Library/Java/Extensions along with the RXTXcomm.jar
  2. Code has a truncation bug - no fractional degrees.
  3. Arduino is pretty easy to code and use; I’m impressed.
Up next is the more complex SC600 humidity sensor, for which I need capacitors and a bit of wirewrap. Wondering how to plot the captured data on a web page…
Posted in Arduino, Code | No Comments »

Arduino!

June 8th, 2009

Yep, I finally had a project where I needed a cheap OSX-compatible analog input (gonna build a temp & humidity monitor using LM35CAZ and Ohmic SC-600), and finally had the forehead-slapping moment of

I don’t need an ADC per se; I need a board with ADCs on it.

Yep, for example an Arduino. So I’ve got one, $34, working already. One trick on OSX that tripped me up - you have to open the Arduino.app/Contents/Info.plist file and set the java version from 1.4+ to 1.5 - OSX bug. Otherwise you get RXTX errors, which are a red herring. Here it is, blink code and all:
picture-2
Nice board. I got mine from Sparkfun, and it was here in a few days. Should be easy to hack on, there sure is a lotta chatter around this board. I suspect that the Arduino, just like my beloved mechanical watches, are fun because they’re hackable and comprehensible, two things that modern computers are increasingly lacking.