This weekend Tonya and I brought Katie to Sacramento to move in with my parents. We didn't wait until Friday night as we usually due to my Aunt and Uncle being in from NJ. Tonya, Katie, and Zoe left Thursday midday. I left late Thursday night at about 11:30pm.
I'm back in Fremont and Tonya comes back to Fremont Tuesday night/Wednesday morning. We will finish packing and bid the bay area, "goodbye". This Saturday is our last day as bay area residents.
Same great taste different IP address...
I'm not expecting any major problem. The DNS record for PQBON.COM has already been updated.
It is a shame... The system hasn't been rebooted for the better part of a year:
Uptime: 254 days 8 hours 34 minutes
UPDATE: Moved and up and running...

Katie's mile route - via Google Maps
Tonya, Katie, and I have been going on walks since Katie was born. It started out with Katie in her snuggly many times inside my jacket. Then we gradually moved on to the stroller. By the time we were out of Pacifica and into Fremont she didn't really fit in the snuggly so we had to rely on the stroller alone.
Tonight was the next big milestone. Katie walked half of our walk on her own two feet.
We have a normal route that goes for about 2.2miles and has a Starbucks in the middle . We walk the first half. Then we stop for coffee and sometimes desert. Then we continue on our way around the block back to our house.
Katie really really looks forward to going on walks. She starts sometime in the afternoon with the question: "Walk?" Which doesn't actually sound much different from one of her other favorite words "Rock!" However, if you listen to her inflection you can tell walk from rock because walk is always a question. (Katie is a little rock hound. She loves few things that aren't Elmo as much as she loves to collect rocks and play with them.)
Tonight, when we agreed to go on a walk, she started saying, "puppy!" When Katie started wanting to actually walk when shopping or at the park or other places Tonya bought Katie a little backpack. This is no ordinary backpack. It is a stuffed puppy with two clips in front to prevent removal and what Tonya calls a tail. The tail is a detachable leash for parents to reign in small toddlers who get over stimulated.
We agreed and we went out into the garage where I reassembled her stroller that had been disassembled to remove a bodily fluid/solid that had soiled it a few days ago. Some may ask, "why the stroller?" We both knew there was NO way Katie was going to walk 2.2miles all by herself in a time frame we would be willing to settle for. On top of that Katie basically weighs 30lbs now. 30lbs is a lot to carry for a mile or more in your arms.
While I put together the stroller a small cat walked up the driveway and rubbed up against Katie. She had no idea what to do but she loved it. Our cat Zoe is not friendly to anyone but Tonya and I. I don't think she would be friendly to me if Tonya and I didn't sleep in the same bed. Once Katie started to pet the cat she got very excited and kind of scared the cat a little. It kept a distance of about 1 Katie stride from her.
So we set off with the stroller and Katie on her feet. In an uneventful walk, we walked from our house to Starbucks. Katie enjoyed walking on the grass and in the dirt along the sidewalk. It was a slight challenge to keep her on the sidewalk. She also partook in her prospecting by picking up and inspecting rocks as we walked.
We got Katie to get into her stroller at Starbucks by giving her her milk and "a muffin". Katie considers anything in a Starbucks pastry bag "a muffin". In this case it was a rice crispy treat. This was also a first for her. She had never had a ricecrispy treat before.
We finished the walk with Katie still in her stroller.
So tonight while I was cooking dinner, Katie was outside playing in the backyard. I saw her running in and out but didn't think much of it. So after awhile of her going back and forth, I looked out in the backyard. She had been taking toys from the living room and throwing them outside. At first, I didn't stop her because she was happy and quiet and leaving me alone to cook dinner. Normally, she's right under my feet and whining while I try to cook, so this was a great improvement. But then I didn't stop her because it was hilarious. If I would have let her keep going, I think everything she could carry would be in our backyard right now. She started throwing our couch pillows out, my shoes, the dust buster, everything. I'm not sure if it was because I had just gotten done cleaning up her toys and had vacuumed. Maybe she thought she was helping. When dinner was done and it was time to get in her high chair, she was very upset that we made her stop. She seemed very proud of her mess. And of course Will and I had to clean it up. Here is some pic's and a video.
Now that I've been shooting film I've been doing more and more scanning of negatives. It takes a long time with my scanner (10 minutes for a black and white frame and 15 minutes for a color frame, yes, a single frame of film).
The other pain is taking all the scanned frames and saving them as TIFF files. I was unable to find a good SaveAll function for Photoshop. So I decided to bust out the Adobe Photoshop scripting guides and write a save all function.
This script opens a dialog box and asks you to select a destination. It then checks the folder for tiff files and gets a count of tiff files. It uses the count of tiff files to find the starting number for numbering the files in the folder. Files are names in the form: ScanXXXX.tif or Scan0001.tif.
After all the open documents are saved new contact sheets are created fro the directory using the Photoshop contact sheet function. These contact sheets contain all the tiff files in the directory. The contact sheets are named: ContactSheetXX.jpg or ContactSheet01.jpg
This script is designed to run over and over on the same directory so that you can scan and save and scan and save. Each time you run the script to save the files the contact sheets are regenerated, however, the previous tiff files are unaffected.
Scirpt is in extended for viewing... File available here: SaveAllTiff.jsx
To run script on either Windows or Mac (I tested both along with CS2 and CS3) choose browse in the script submenu of the file menu and select the script file from your file system. It will pop up a dialog asking you where to put the files. Select the folder and wait for it to complete.
// // Copyleft 2007 - Will Deutsch // // Copyright (C) 2007 - Will Deutsch - wdeutsch@pqbon.com // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see http://www.gnu.org/licenses/. //// Save the current preferences
var startDisplayDialogs = app.displayDialogs;
// Set Adobe PhotoshopCS3 to use pixels and display no dialogs
app.displayDialogs = DialogModes.NO ;
// ask the user for the folder
var FPath = Folder.selectDialog("Save files to") ;
var fileList = FPath.getFiles("*.tif");
var Start = fileList.length;for(var i = 0; i < documents.length; i++){
app.activeDocument = documents[i];
var fName = FPath + "/Scan" + PNumber(Start + i,4) + ".tif";
var tiffSaveOptions = new TiffSaveOptions;
tiffSaveOptions.alphaChannels = false;
tiffSaveOptions.annotations = false;
tiffSaveOptions.byteOrder = ByteOrder.IBM;
tiffSaveOptions.embedColorProfile = true;
tiffSaveOptions.imageContression = TIFFEncoding.TIFFZIP;
tiffSaveOptions.interleaveChannels = true;
tiffSaveOptions.transparency = false;
tiffSaveOptions.layers = false;
var sFile = new File(fName);
activeDocument.saveAs( sFile, tiffSaveOptions, false, Extension.LOWERCASE);
}while(documents.length > 0){
var CloseDoc = documents[0];
CloseDoc.close(SaveOptions.DONOTSAVECHANGES);
}var CtSheet = new ContactSheetOptions;
var fileList = FPath.getFiles("*.tif");
makeContactSheet(fileList, CtSheet);
jpgSaveOptions = new JPEGSaveOptions();
jpgSaveOptions.embedColorProfile = true;
jpgSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
jpgSaveOptions.matte = MatteType.NONE;
jpgSaveOptions.quality = 12;
for(var i = 0; i < documents.length; i++){
app.activeDocument = documents[i];
ctxFile = new File(FPath + "/ContactSheet" + PNumber(i, 2) + ".jpg");
activeDocument.saveAs(ctxFile, jpgSaveOptions, false, Extension.LOWERCASE);
}while(documents.length > 0){
var CloseDoc = documents[0];
CloseDoc.close(SaveOptions.DONOTSAVECHANGES);
}// Reset the application preferences
app.displayDialogs = startDisplayDialogsfunction PNumber(num, prec){
var RetString;
var t1 = 1;
var t2 = 0;
var s1 = "";
for(var i = 0; i < prec; i++){
t1 *= 10;
}
t2 = t1 + num;
s1 = t2.toString();
RetString = s1.substr(1, prec);return(RetString)
}
Katie singing "Twinkle Twinkle Little Star"