 |






 |
| |
 |
 |
 |
 |
|
 |
 |
I've enrolled in a night class at the local community college. From a strictly academic stand point, Photo 1 might not have been the best choice. Shockingly, I do know about things like aperture, shutter speed, ISO, and depth of field. What Photo 1 is doing, is making me go out and shoot, and shoot manual. An unfortunate side effect of this is I'm rapidly filling up my file server with an enormous number of pictures. Because it is an intro class, the critique is rather restrained; I'd enjoy a bit more rigorous exposure bashing. I'll post a few of the best shots from each assignment. I'd welcome and appreciate any comments—good or bad. All pictures are shot 100% manually; no post production work is allowed (not even cropping). These pictures are straight out of the camera. Assignment one was to shoot a single object at a single focal length from a variety of angles. Meet my fire hydrant; we became quite good pals. Click for larger versions. See the rest.Tags: nikon d90, nottech, photo 1 Current Mood: accomplished
|
 |
 |
 |
 |
|
 |
 |

 |
| |
 |
 |
 |
 |
|
 |
 |
I discovered something interesting last weekend. It turns out that thing we do in our cars every day on the way to and from work isn't driving. Rote operation of a motor vehicle, maybe, but not driving. Driving is altogether more elusive and thrilling. The first track session was all adrenaline and anxious attention to keeping four wheels on pavement. Session two entailed entry, apex, exit, and line, line, line. Braking, shifting, and throttle control were mixed in on the next run. Finally, to the song of a six cylinder choir, mind, body, and machine took a dance across the track in blissful embrace. I've fallen in love with my car all over again and likely acquired a new hobby addiction. If you've never been on a skidpad, git yer butt off the intarweb and into a car control clinic. Tags: dobo, nottech
|
 |
 |
 |
 |
|
 |
 |

 |
| |
 |
 |
 |
 |
|
 |
 |
It was a sunny California afternoon some indeterminate number of months ago and I was at the gas station filling dobo¹ with go-juice. While engaged with this task, an Asian gentleman gets out of his truck and walks over looking slightly agitated. He asks me if I know how to get to UCLA. Yes, of course I know how to get to UCLA, doesn't everyone? You get on this street here; head thataway; get on the freeway; go a while; get off the freeway; turn on some street; turn on some other street by some big buildings, and you're there. It dawns on me that either I've lived in LA four years and failed to learn a single street name, or anytime someone asks you for directions all street names immediately vanish from your mind. The man walks back to his truck looking more agitated. I grab a squeegee and start washing my windows. If only I had access to some global information resource, too bad the Internet is only good for porn. But wait, I have a Jesus Phone! Deus ex machina in hand, I walk over to the gentleman who is now loudly speaking on his cell phone. It occurs to me that he is likely speaking with his kid, a student at UCLA, who apparently doesn't know how to operate the Internet, a paper map, or direct his parents to his own school. I proceed to give him turn by turn directions to UCLA, which he proceeds to shout loudly into the phone. Why, I haven't the slightest, since I assume the person on the other end isn't the one most in need of directions. Rescue of lost parents successful, I walk back to my car, get in, and drive away. ( I only forgot one thing. )¹ : If you're wondering why I call my car dobo, you might find this illuminating. Tags: dobo, nottech
|
 |
 |
 |
 |
|
 |
 |




 |
| |
 |
 |
 |
 |
|
 |
 |
You can't buy espresso in a supermarket. It doesn't come from a bag; you can't press it, siphon it, steep it, or brew it. It's extracted by forcing one to two ounces of 200 degree water under 9 bar of pressure through 14-18g of finely ground beans in 25 to 30 seconds. It's topped with crema, a melange of CO 2, oils, coffee solids, and other goodness, a bit reminiscent of freshly poured Guinness. The four Ms of espresso: Miscela, Macinacaffe, Macchina, Mano ( coffee blend, grinder, machine, barista)
 |
 |
 | | Caffeine Extractinator | Naked Portafilter—scandalous |
 |
 |
| tiger flecked crema | rosetta? apple? ...not quite sure |
After taking my old espresso machine to work; I've become the unofficial office barista. I was pulling shots for the president and two VPs last week. I feel I deserve a raise for taking on additional responsibilities. If you pass through LA, swing by for an espresso; it's much more satisfying to make coffee for others. Tags: cappuccino, espresso, latte art, nikon d90, nottech
|
 |
 |
 |
 |
|
 |
 |

 |
| |
 |
 |
 |
 |
|
 |
 |
I've been using Amazon's S3 service as my "backup in the sky" for quite a while. Combined with s3sync, a ruby script that mimics the functionality of rync, you've got a small footprint backup solution that just works. Shortly after getting it running, I began to wonder how I could improve my super fancy backup system (a couple s3sync cron jobs).
s3sync uses file size and MD5 hashes to determine if a file has changed and if so update it in your S3 bucket. You can force s3sync to not MD5 each file but for a number of reasons, this option won't work for me. As you might guess, hashing every file your backup set will leave your disks and CPU thrashing for quite a while if you have a significant amount of data. I primarily use S3 to keep backups of all my digital photos stored on my file server, not a small amount of data. As a result, I only scheduled s3sync to run once a week. This creates another issue, if I add some photos on Monday, experience an act of god which destroys my file server on Thursday, I'll have lost those pictures since the cron job only runs every Sunday.
Wouldn't it be better if I could just sync a file after it is created or modified?
Enter inotify, inode based file system event notification—perfect. Instead of s3sync running amuck trying to determine if a file changed, the kernel will say, 'Excuse me sir, but I think your photo of Fido was just modified, better upload it to S3.' And that's exactly what you'll do.
Inotify compiled into your kernel by itself isn't that helpful since it requires various system calls to use—not what I'd call user friendly. Luckily, someone's already written incron, a cron-like daemon that uses inotify.
Inotify/incron aren't without some caveats. Neither will recurse sub-directories, which means you'll have to explicitly define each folder path to watch. The incron developer claims he is working on recursive directories but doesn't appear to have made much progress. The bash script I've written addresses the issue of directory recursion.
- Get s3sync working with Amazon S3; this guide is a good start.
- Set up incron and start it running.
- Drop s3rep.sh somewhere on your system and edit it to adjust a few of the configuration options to reflect your system.
- s3rep.sh -a /your/watched/directory
That's it. The script will recurse the path and add each folder to your incrontab and s3sync those folders. Any changes to files will be uploaded immediately in the future. You can also remove folders from the watch list with the -d option. By default the script does not delete items off S3 that are removed from your watched directory. You can enable it by setting deletion to 1. The script will also add and remove any created or deleted directories from the watch list.
I use a slightly modified version of s3sync which utilizes S3's content-MD5 header to ensure uploaded files match local copies. It also supports upload and download throttling. My friend Tienshiao is responsible for the patch, bug him if you'd like a copy. Finally, this is my first foray into bash scripting (and last?). I make no guarantees about the strength of my bash-fu. If it karate-chops your hard drive in half....please send pictures.
At some point I'll probably adapt the script to work with s3fs and rync.
You can download s3rep.sh here.
#!/bin/sh
#
# S3rep.sh version 1.0
# Copyright 2009 Matthew Staver
#
# 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 2 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/>
pid="$$"
# Set type to first argument.
type="$1"
# Set path to the rest of the arguments.
path="${*:2:$#}"
# Default incron mask, if you never plan to use deletion=1 and your
# directories are fairly static you can set this to:
#
# mask="IN_CREATE,IN_CLOSE_WRITE,IN_MOVED_TO"
#
# This may slightly reduce system load, but your incrontab file will
# not be cleaned of watched directories that are moved or deleted.
# I highly recommend you leave this with the default setting.
mask="IN_CREATE,IN_DELETE,IN_CLOSE_WRITE,IN_MOVED_TO,IN_MOVED_FROM"
# The location of your spool/queue directory.
queue="/var/spool/s3rep"
lockfile=/var/run/s3rep.pid
# The location of s3sync
s3path="/root/s3sync"
# The location of your incrontab file
incrontab="/var/spool/incron/root"
# The s3bucket you want to use
bucket="yourbucket"
# Set this to 0 to turn off syslog logging
syslog=1
# Set this to 1 to enable deletion from S3 of removed files/directories
deletion=0
function log () {
[ $syslog -eq 1 ] && logger -t "s3rep[$pid]" "$@" || cat > /dev/null
}
case "$type" in
'IN_CREATE')
exit 0
;;
'IN_CREATE,IN_ISDIR' | 'IN_MOVED_TO,IN_ISDIR' | 'IN_CLOSE_WRITE' | 'IN_MOVED_TO' | '-a')
# If a file or directory is created, edited, or moved into a watched directory
# symlink the it in the queue directory. If no uploads are currently running,
# call this script with the UPLOAD option to start processing the queue directory.
symname="$pid`date +%N`"
ln -s "$path" "$queue/$symname"
log "Queued: '$path' in '$queue/$symname'"
[ ! -e $lockfile ] && $0 UPLOAD &
;;
'IN_DELETE' | 'IN_MOVED_FROM')
# If a file is deleted or moved out of a watched directory: Check to
# see if deletion is enabled in the script. If so, delete it from S3.
[ $deletion -eq 1 ] && $s3path/s3cmd.rb --ssl --verbose delete $bucket:"$path" 2>&1 | log
;;
'IN_DELETE,IN_ISDIR' | 'IN_MOVED_FROM,IN_ISDIR' | '-d')
# If a directory is deleted or removed from a watched directory: Remove
# the directory from the watched list in the incrontab file. Check
# to see if deletion is enabled in the script and if so, remove all files
# from within the watched directory.
sed -i "\|^${path// /\\\ }|d" $incrontab
log "Removing '$path' and all sub-folders from watch list '$incrontab'"
[ $deletion -eq 1 ] && $s3path/s3cmd.rb --ssl --verbose deleteall $bucket:"$path" 2>&1 | log
;;
'UPLOAD')
# Check for lockfile and being uploads if it doesn't exist.
if ( set -o noclobber; echo "$$" > "$lockfile") 2> /dev/null;
then
# Trap exits and clean up lockfile.
trap 'rm -f "$lockfile"; exit $?' INT TERM EXIT
# Pop oldest symlink, store it, and unlink it.
symlink=$(ls -rt1 $queue | sed -n -e '1,1p')
linkpath="$(readlink "$queue/$symlink")"
unlink "$queue/$symlink"
# If it is a directory s3sync the files inside.
if [ -d "$linkpath" ];
then
log "Syncing '$linkpath' and all sub-folders to S3 bucket: '$bucket'"
$s3path/s3sync.rb --ssl -r --verbose "$linkpath/" $bucket:"$linkpath" 2>&1 | log
# Recurse directories, stream edit them to escape any spaces with \,
# append each directory to the incrontab file. NB: For some reason
# incron does not pass trailing spaces in triggered events. I've
# added a trailing \ to the incrontab and this appears to resolve this.
# I assume it causes incron to pass the trailing space and the \, and
# bash ignores the \.
find "$linkpath" -type d |sed -e 's| |\\ |g' -e "s|\$| $mask $0 \$% \$@/\$#\\\|" >>$incrontab
log "Added '$linkpath' and all sub-folders to watch list '$incrontab'"
else
# Upload single file vis s3cmd put.
[ -e "$linkpath" ] && $s3path/s3cmd.rb --ssl --verbose put $bucket:"$linkpath" "$linkpath" 2>&1 | log
fi
# Clean up lockfile
rm -f "$lockfile"
trap - INT TERM EXIT
# Continue processing queue directory if symlinks remain.
if [ "$(ls $queue|wc -l)" -gt "0" ]; then
exec $0 UPLOAD
fi
else
log "Upload $(cat $lockfile) in progress. Failed to acquire lockfile: $lockfile."
fi
;;
*)
echo "Usage: s3rep.sh [OPTION] DIRECTORY"
echo
echo "Options:"
echo " -a add DIRECTORY and sub-folders to incrontab and sync to S3"
echo " NOTE: Do not include a trailing / after DIRECTORY"
echo " -d remove DIRECTORY and all sub-folders from incrontab and"
echo " if deletion is enabled, remove them from S3"
echo
exit 1
esac
exit 0
Tags: amazon s3, backup, tech
|
 |
 |
 |
 |
|
 |
 |

 |
| |
 |
 |
 |
 |
|
 |
 |
No, that's not her actual name, apt though it is. And I'm not here to talk about the Fuzzy Cat today. I'm here to discuss the Nikon D90. A magical, mystical, and wondrous device that has captured Fuzzy Cat in all her fluffy glory.
 |
+ |
 |
= |

105mm, F5.6, 0.4s | 
105mm, F5.6, 1/60s, flash | 
18mm, F5, 1/3s |
| 
18mm, F5, 0.2s | 
18mm, F5, 0.25s | 
35mm, F5, 1/6s |
This isn't going to be a technical review, if you want the nitty gritty details of how the D90 performs, its features and what not, ask the oracle of google. I'm going to simply tell you what I like about it.
| The Good | The Bad |
- It's a Nikon
- It takes great pictures
- It's attractive
- It has a beautiful 3" LCD (the same as the $8000 D3X)
- It can shoot HD video
- It's fast, nearly 5 FPS continuous shooting
- It makes me never want to touch a point-n-shoot again
- It supports GPS for geotagging
- It can shoot RAW(NEF)+JPG Fine
|
- It encourages excessive spending on glass
- NEF+JPG eats SD cards
- I look a bit like the borg with this thing stuck to my eye all day
- It makes me never want to touch a point-n-shoot again
- It's not a full frame sensor¹
- It doesn't fit in my back pocket
|
My Kit:
¹ What's wrong with dreaming of a sub-$1000 DSLR body with a 35mm sensor? Tags: fuzzy cat, nikon d90
|
 |
 |
 |
 |
|
 |
 |

 |
| |
 |
 |
 |
 |
|
 |
 |
For quite a while I was running m0n0wall on an old dell laptop with two NICs. This worked out pretty well because the laptop had a built-in screen, keyboard, and battery backup of sorts. It was also fairly portable. At some point I decided I wanted to do a bit more with my firewall and move to more powerful hardware. In particular, I wanted to try out pfSense, a m0n0wall fork. pfSense contains a package management system that allows you to install a wide variety of services including: Snort, Squid, FreeSWITCH, OpenBGPD, to name a few. I'll return to these in subsequent posts. I also needed more interfaces to be able to properly segregate my wireless network from my wired network. I've been a big fan of the smaller form factor x86 machines for a while. Serapeum was built on a MicroATX form factor as well as my current desktop system. µATX is great for smaller desktop machines but is a bit too large for a firewall solution. ( Comparison of form factors )Mini-ITX seemed like the perfect option. I selected the Jetway J7F2 board with a 1.5Ghz Via C7 processor. Two compelling reasons for selecting this board were the Padlock engine, which provides hardware RNG, AES, and hashing acceleration, and support for daughter cards. Some quick OpenSSL benchmarks using the various engines provided these results: cryptodev kilobytes per second: type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes aes-256-cbc 10166.19k 10492.00k 10832.45k 10520.09k 10871.68k
padlock kilobytes per second: type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes aes-256-cbc 69552.53k 221044.97k 475699.68k 662806.69k 745178.49k
The padlock hardware engine provides a 6850% increase in AES 256 encryption over the software based cryptodev. It peeks at about 5.7 gigabits per second. Cryptodev only achieves 85 megabits per second. Summary of build hardware: Jetway J7F2 VIA C7 1.5Ghz Jetway AD3RTLANG 3 port GigaLAN daughter card Corsair 1GB DDR2 533 Transcend 4GB CF 300x M200 Enclosure PicoPSU-120 Tags: firewall, mini-itx, padlock, pfsense, tech Current Music: Morcheeba - Big Calm
|
 |
 |
 |
 |
|
 |
 |

|
 |
 |