Home
entries friends calendar user info Previous Previous
Ankaerith
ankaerith
Add to Memories
Tell a Friend
ankaerith
Add to Memories
Tell a Friend
ankaerith
Add to Memories
Tell a Friend
I really like this picture. This is straight out of my camera.

Tags: , ,

ankaerith
Add to Memories
Tell a Friend
ankaerith
Add to Memories
Tell a Friend
ankaerith
Add to Memories
Tell a Friend
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: , ,
Current Mood: accomplished

ankaerith
Add to Memories
Tell a Friend
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: ,

ankaerith
Add to Memories
Tell a Friend
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: ,

ankaerith
Add to Memories
Tell a Friend
If you're ever within striking distance of San Juan Capistrano, make sure you hit up the Ramos House Café for brunch. Tucked away on the oldest street in California, it is positively divine.



Strawberry Basil Pain Perdu )


John Q. Humphreys )
ankaerith
Add to Memories
Tell a Friend
ankaerith
Add to Memories
Tell a Friend
I won't subject you to any more of these for a while. I'm a bit disappointed in these pictures actually, but I couldn't bring myself to down another shot of espresso tonight just for a retake.

Tags: , ,

ankaerith
Add to Memories
Tell a Friend
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 CO2, 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: , , , ,

ankaerith
Add to Memories
Tell a Friend

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.

  1. Get s3sync working with Amazon S3; this guide is a good start.
  2. Set up incron and start it running.
  3. Drop s3rep.sh somewhere on your system and edit it to adjust a few of the configuration options to reflect your system.
  4. 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: , ,

ankaerith
Add to Memories
Tell a Friend
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


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 GoodThe Bad
  1. It's a Nikon
  2. It takes great pictures
  3. It's attractive
  4. It has a beautiful 3" LCD (the same as the $8000 D3X)
  5. It can shoot HD video
  6. It's fast, nearly 5 FPS continuous shooting
  7. It makes me never want to touch a point-n-shoot again
  8. It supports GPS for geotagging
  9. It can shoot RAW(NEF)+JPG Fine
  1. It encourages excessive spending on glass
  2. NEF+JPG eats SD cards
  3. I look a bit like the borg with this thing stuck to my eye all day
  4. It makes me never want to touch a point-n-shoot again
  5. It's not a full frame sensor¹
  6. 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: ,

ankaerith
Add to Memories
Tell a Friend
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


Jetway J72F w/ daughter card


PicoPSU 120W


first boot

closed up and ready to go

CF access panel

Tags: , , , ,
Current Music: Morcheeba - Big Calm

ankaerith
Add to Memories
Tell a Friend


-Spotted by my roommate last week in China.
ankaerith
Add to Memories
Tell a Friend
I am very passionate about my personal endeavors. I might suggest obsessive hobbyist, but I wouldn't want you to think I lock myself in a room for weeks at a time surrounded with bits of plastic, decals, and super glue. As often as not, a short half-life makes violent work of the germ, leaving my closet strewn with the skeletons of hobbies past. Surprisingly, this one appears to have flowered.

We'll discuss espresso at a later date, today it's all about aesthetics (latte art.) Click to enlarge.


A large plop

hmm, squiggles

Tulip?

beginnings of a rosetta


where'd that come from?

right shape, horrible leaves

rosetta!

this one ain't bad either


See a pro in action

Tags: , ,
Current Mood: hyper
Current Music: VNV Nation - Genesis

ankaerith
Add to Memories
Tell a Friend
After waiting what seemed like a lifetime for those silly Germans to build and ship my car, I finally picked it up from the dealer a month ago.

After wash and wax:

Click for more


Did I mention this car is really fast?

Current Mood: bouncy

ankaerith
Add to Memories
Tell a Friend


CDW_Article.pdf



More pictures from the shoot:
ankaerith
Add to Memories
Tell a Friend
BMW 135i Coupe
3.0-liter, turbocharged inline 6-cylinder engine
300 horsepower
Rear-wheel drive



BMW 135i Poll )

Current Mood: excited