Help for Geeks – My Development Bookmarks

I’ve thought about this many times. What info do I find useful, and would other geeks find it useful too?   Perhaps.    In that spirit here is my current list of Development related bookmarks.   Slightly organized.  You might find some nuggets of info in here that relates to a project you are working on.  Or it might spark and idea to build something new, or re-design a process that is not as optimal is you’d like it to be.

I hope some of these help, as they have helped me over the years.  One note though, I removed all my links to PHP development.  I just can’t stand using it any more, it’s just too easy to PWN.


Apache

libapreq2-2.08: libapreq2: Apache2::Request
Apache2::RequestRec – Perl API for Apache request record accessors – search.cpan.org
Apache2::AuthCookie – Perl Authentication and Authorization via cookies – search.cpan.org
Adventures in the Land of Apache and mod_perl
perl. Computational Chemistry List, perl, mod_perl, modperl2, cgi, Apache, cgi, forms
Combining Apache and Perl
Useful OpenSSL Commands
Creating Self-Signed Certs on Apache 2.2 | CB1, INC.
CB1, INC. is a Minneapolis based software and consulting company specializing in custom development and systems integration.
NSS and SSL Error Codes
Smart HTTP and HTTPS RewriteRule Redirects
Smarter SSL HTTPS to HTTP Redirections in .htaccess using RewriteRule to set an environment variable
Apache Week. Using User Authentication
The O’Reilly Network has teamed with Red Hat Apache Week, the leading commercial Apache site to offer comprehensive Apache information and resources. Apache Week offers news, feature articles, reviews, resources, and documentation.
htaccess rewrite tips using RewriteRule and RewriteCond for .htaccess mod_rewrite
mod_rewrite tips and tricks for .htaccess files using RewriteBase, RewriteCond, RewriteEngine, RewriteLock, RewriteLog, RewriteLogLevel, RewriteMap, RewriteOptions, and RewriteRule
mod_perl: mod_perl 2.0 Server Configuration
mod_perl documentation: This chapter provides an in-depth mod_perl 2.0 configuration details.
Dr. Dobb’s | A mod_perl 2 Primer | December 1, 2004
Though it’s technically not quite ready for prime time, it’s high time we all got a taste of the next version of mod_perl.
Apache2::Status 4.00
apache 2: “private key not found”

HTML / CSS

CSS2 Reference
Free HTML XHTML CSS JavaScript DHTML XML DOM XSL XSLT RSS AJAX ASP ADO PHP SQL tutorials, references, examples for web building.
CSS Tutorial – Border
Place customized CSS borders around your HTML elements with the CSS Border attribute.
How can I make just one cell in an HTML table bordered, or just one side of a cell bordered?
CSS Positioning Properties
Free HTML XHTML CSS JavaScript DHTML XML DOM XSL XSLT RSS AJAX ASP ADO PHP SQL tutorials, references, examples for web building.
Ajaxload – Ajax loading gif generator
Ajaxload – Ajax loading gif generator
workalike for top.location.watch(“href”,fn) in IE? – JavaScript
workalike for top.location.watch(“href”,fn) in IE?. Get answers to your questions in our JavaScript forum.
window.onbeforeunload [javascript] [form]
HTML FIELDSET TAG
Free HTML XHTML CSS JavaScript DHTML XML DOM XSL XSLT RSS AJAX ASP ADO PHP SQL tutorials, references, examples for web building.
wg:Bubble Tooltips
web graphics is a compilation of hypertext design resources, links, and commentary.
lixlpixel CSS tooltips
pure CSS pop up tooltips with clean semantic code – valid XHTML – degrades nicely
Simple Round CSS Links ( Wii Buttons )
HTML URL-encoding Reference
Free HTML XHTML CSS JavaScript DHTML XML DOM XSL XSLT RSS AJAX ASP ADO PHP SQL tutorials, references, examples for web building.
Custom error responses
CSS and round corners: Making accessible menu tabs
Find out how to lose the box layout of your CSS pages and make great menu tabs
A List Apart: Articles: Sliding Doors of CSS
Must CSS layouts be flat and boxy? Nope! Bowman shows how to create slick tabbed navigation using CSS and structured XHTML lists.
Light Weight Low Tech CSS Tabs
An example of light weight tabs by combining the Sliding Doors method with the Mountaintop corners idea.
A List Apart: Articles: Mountaintop Corners
Using CSS to create standards-compliant, mountain top corners
Setting a Minimum Body Height:Solving the ‘Height’ Mystery
W3C Markup Validator
W3C’s easy-to-use HTML validation service, based on an SGML parser.
Private RSS Feeds: Support for security in aggregators – silverorange labs
We’ve been experimenting with security options for RSS feeds for our intranet product. However, we found that there weren’t many resources or guidelines for how encryption or authentification should be handled (either in feeds or in readers/aggregators).
The W3C CSS Validation Service
The Art of Web ~ CSS: border-radius and -moz-border-radius
One of the most keenly-anticipated CSS properties is border-radius. It’s not yet available in Internet Explorer, but there is limited support in Firefox (-moz-border-radius) and Safari (WebKit). Discussion and examples.
removeChild
javascript document object javascript document object model sans serif font document object model removechild: Removing objects from a web page.
Adding elements to the DOM
Click here for an introductory tutorial on the DOM of IE 5/ NS 6, and how to program using it
JavaScript tutorial – DOM nodes and tree
HTTP State Management Mechanism [RFC-Ref]
phone number validation
phone number validation
Validating with XML Schema
HTML Color Names
Free HTML XHTML CSS JavaScript DHTML XML DOM XSL XSLT RSS AJAX ASP ADO PHP SQL tutorials, references, examples for web building.
CSS Color Names
Free HTML XHTML CSS JavaScript DHTML XML DOM XSL XSLT RSS AJAX ASP ADO PHP SQL tutorials, references, examples for web building.
CSS Image Opacity / Transparency
Free HTML XHTML CSS JavaScript DHTML XML DOM XSL XSLT RSS AJAX ASP ADO PHP SQL tutorials, references, examples for web building.

JavaScript

O’Reilly Network — Dynamic HTML Tables: Improving Performance
The widespread browser adoption of the W3C Document Object Model (DOM) and other de facto standards have given developers many ways to repopulate a table. So what’s the best approach? Danny Goodman, author of JavaScript & DHTML Cookbook, investigated…
Managing the Dynamic created HTML table thru javascript – SEO Chat
Managing the Dynamic created HTML table thru javascript- HTML Coding. Visit SEO Chat to discuss Managing the Dynamic created HTML table thru javascript
JavaScript Kit- Text Object
Click here for a complete JavaScript Reference, including array, string, document. window, and more.
How do you know what button was pressed in the submit? – JavaScript
How do you know what button was pressed in the submit?. Get answers to your questions in our JavaScript forum.
The JavaScript Source: Forms : Auto Email Link
Automatically creates a new e-mail utilizing the user’s default e-mail client. The script fills in the subject line and adds the URL of the current Web page to the body. Note: May not be compatible with all e-mail clients.
Javascript – Early event handlers
Javascript – The events
Javascript – Introduction to Events
The JavaScript Source: Forms: Form Focus
Places the focus on the first editable field in a form on any web page. Efficient!
JavaScript Help: How to access parent elements from a child window or frame
Popup Window Tutorials
This series of tutorials takes you step by step thrugh thedifferent ways that you can create and modify popup windows.
DevGuru JavaScript PROPERTY: document::forms
Award-winning web developers’ resource: over 3000 pages of quick reference guides, tutorials, knowledge base articles, Ask DevGuru, useful products.
ActiveWidgets • sorting • download data xls

JAVA

java integer to string – Google Search
Java Dynamic Management Kit 5.1 Release Notes
NetBeans IDE 6.0.1 Download
NetBeans IDE 6.0.1 Download
Welcome to JavaWorld.com
Solutions for Java developers
Your Source for Java Information – Developer.com’s Gamelan.com
Get the latest Java news, articles, whitepapers, analyst reports, and more. This is your one stop for information that will help you make decisions related to Java.
String (Java Platform SE 6)
Arrays (The Java™ Tutorials > Learning the Java Language > Language Basics)
StringBuffer (Java 2 Platform SE 5.0)
Throwable (Java 2 Platform SE v1.4.2)
NetBeans Forums – How to use Netbeans packages?
Javadoc Guide
System Properties (The Java™ Tutorials > Deployment > Doing More With Rich Internet Applications)
Adding Classes to the JAR File’s Classpath (The Java™ Tutorials > Deployment > Packaging Programs in JAR Files)
NetBeans Forums – Create manifest, jar and class file in netbeans
Packaging and Deploying Desktop Java Applications
Creating executable JAR files and deploying netbeans projects
Understanding the Manifest
JAR files can support a wide range of functionality, including electronic signing, version control, package sealing, extensions, and others. What gives JAR files the ability to be so versatile? The answer is embodied in the JAR file’s manifest.
http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#JAR%20Manifest
JAVA Illegal Start of Expression Error – Java
JAVA Illegal Start of Expression Error Java
do-jar-with-main class ‘manifest.available+main.class’ not set. – Google Search
Formatted Printing for Java (sprintf)
The C language utility sprintf is for formatting strings of characters and numbers. This article documents the use of a Java programming language class, PrintfFormat, whose behavior is based on the sprintf specification. Source code is provided.
Java Tips – How to align your components in horizontal or vertical layout
Java Tips — Java, Java, and more Java, How to align your components in horizontal or vertical layout
Java Tips – PointBase Embedded
Java Tips — Java, Java, and more Java, PointBase Embedded
Programming with Java in 24 Hours: Building a Complex User Interface
Questions, corrections and clarifications for hour 16 of the book Teach Yourself Java 6 in 24 Hours by Rogers Cadenhead. The book teaches Java 6 programming for non-programmers, new programmers who hated learning a language, and experienced programmers who want to quickly get up to speed.
Java look and feel Graphics Repository
Welcome to the Java Software Human Interface Group’s Java look and feel Graphics Repository pages.

MySQL

MySQL Stored Procedures / Functions
MySQL AB :: MySQL Forums :: Install :: Comments on my.cnf for high insert volume db
MySQL Configuration
MySQL Performance Blog » Should MySQL and Web Server share the same box ?
MySQL AB :: Index update with update statement
MySQL AB :: MySQL 5.0 Reference Manual :: 18 Stored Procedures and Functions
MySQL Stored Procedures
MySQL Server Tweaking Basics – Admin Zone Forums
This is a basic guide to understanding what the directives in your my.cnf mean, and what they do. We’ll also try to give some general
mySql — CHECK TABLE Syntax
Live Backups of MySQL Using Replication
Russell Dyer, author of MySQL in a Nutshell, walks through the process of using replication for data backups in MySQL.
MySQL AB :: MySQL 5.0 Reference Manual :: B.1.4.1 How to Reset the Root Password
MySQL – best methods for backups
Best way to backup, MySQL/VPS etc Linux
MySQL AB :: MySQL 5.0 Reference Manual :: 12.2.17.1 Troubleshooting InnoDB Data Dictionary Operations
ERROR: database: mysql_error: Can’t connect to MySQL server on ‘10.10.0.7 (110) – Snort Forums Archive
The open source Snort Intrusion Detection and Prevention system is the most flexible and widely deployed solution available.
How to fix error 134 from storage engine – MySQL
How to fix error 134 from storage engine. Get answers to your questions in our MySQL forum.
MySQL AB :: MySQL 5.0 Reference Manual :: 12.2.3 InnoDB Configuration
MySQL Stored Procedures: Part 2
Part 2 of MySQL Stored Procedures covers some more advanced concepts, including conditions and loops.
MySQL AB :: MySQL 5.0 Reference Manual :: 10.11.1 GROUP BY (Aggregate) Functions
Select INTO OUTFILE
MySQL :: stored procedure to list stored procedures
MySQL :: MySQL 5.1 Reference Manual :: 10.4.5 The SET Type
InnoDbEngineStatusAndTuning < Development < TWiki
MySQL :: MySQL 5.0 Reference Manual :: 13.2.11 InnoDB Performance Tuning Tips
Regular Expressions in MySQL
Regular Expressions in MySQL
Dan Winchester – MySQL date_format
MySQL :: MySQL 5.0 Reference Manual :: B.1.2.11 Communication Errors and Aborted Connections
MySQL Bugs: #36910: Mysql Server has gone away
Mysql_User_Add < Development < TWiki
mytop – a top clone for MySQL
Using ON DUPLICATE KEY UPDATE to improve MySQL Replication Performance « Kevin Burton’s NEW FeedBlog
MySQL :: MySQL 5.1 Reference Manual :: 13.11 The FEDERATED Storage Engine
MySQL :: MySQL 5.1 Reference Manual :: 11.4.2 Regular Expressions
MySQL :: MySQL 5.1 Reference Manual :: 18.2 Partition Types

PERL

Proc::ProcessTable – Perl extension to access the unix process table – search.cpan.org
Proc::ProcessTable::Process – Perl process objects – search.cpan.org
perlvar
Perl 5.8 Documentation – Signals
Perl 5.8 Documentation – Signals
khtml2png – Make screenshots from webpages
Sys::Load – Perl module for getting the current system load and uptime – search.cpan.org
The CPAN Search Site – search.cpan.org
Perl HTML::Form
Perl 5.8 Documentation – HTML::Form – Class that represents HTML forms
LWP Cookbook – URL explosion
Reaping Zombies
PERL ‘UTF-16LE’ – MarkMail
urlencode / urldecode in Perl | melecio.org
Regular Expression Examples
how check new URL of redirected page
Getopt::Long – perldoc.perl.org
perl.com: Beginners Intro to Perl – Part 6
Doug Sheppard shows us how to activate Perl’s built in security features.
How can I make one class extend another one?
XML::Generator – Perl extension for generating XML – search.cpan.org
Free Perl source library: unescape
subroutine name: unescape decode URL-encoded string
rami.info » URLEncode And URLDecode For Perl
File Tests in Perl
File Tests in Perl
Page 2 – Build a Perl RSS Aggregator with Templating Tools
Page 2 – Build a Perl RSS Aggregator with Templating Tools
perl.com: Preventing Cross-site Scripting Attacks
Paul Lindner, author of the mod_perl Cookbook, explains how to secure our sites against Cross-Site Scripting attacks using mod_perl and Apache::TaintRequest
libapreq2-2.08: libapreq2: Apache2::Upload
binary data handling – examine a .gif file – Perl example
binary data handling – examine a .gif file – Perl example
PERL — Conversion Functions
LWP::UserAgent
Web user agent class
Fastest XML Parser ?

mod_perl

Practical mod_perl: 6.3.3.6. A third solution
This solution makes use of package-name declaration in the …
mod_perl: HTTP Handlers
mod_perl documentation: This chapter explains how to implement the HTTP protocol handlers in mod_perl.
Installing mod_perl from RPM | O’Reilly Media
It’s easy to install mod_perl using the Red Hat package manager. Configuring it is trickier.
mod_perl: Apache2::RequestRec – Perl API for Apache request record accessors
mod_perl documentation: <code>Apache2::RequestRec</code> provides the Perl API for Apache request_rec object.
How to extract name/value pairs from the query string? | ModPerl | ModPerl
How to extract name/value pairs from the query string? ModPerl ModPerl
mod_perl: Code Snippets
mod_perl documentation: A collection of mod_perl code snippets which you can either adapt to your own use or integrate directly into your own code.

XML

Helpful XML related sites
iWeb Toolkit: XML Validator
XML Schema (REC (20010502) version, as amended) Checking Service
XML Schema Examples
XML::Generator
Perl extension for generating XML
XML DOM – Validate XML
Free HTML XHTML CSS JavaScript DHTML XML DOM XSL XSLT RSS AJAX ASP ADO PHP SQL tutorials, references, examples for web building.

Swish-e

Swish-e :: Re: performance aspects
Swish-e Lightning Talk
Swish-e :: Re: running out of memory during merge
Swish-e :: INSTALL – Swish-e Installation Instructions
Connecting Linux or UNIX system to Network attached storage device
Network attached storage (NAS) allows using TCP/IP network to backup files. This enables multiple servers in IDC to share the same storage for backup at once, which minimizes overhead by centrally managing hard disks. NAS …
How do I access NAS server using automount?
Network-attached storage commonly used to store backup and other shared files over TCP/IP network. For example: i) Corporate e-mail system with multiple, load-balanced webmail servers ii) Load-balanced web servers access the same contents from NAS …
SmallNetBuilder
SmallNetBuilder provides networking and IT news, reviews, help and information for professional and &quot;prosumer&quot; SOHO and SMB users.
IP Subnet Calculator
Online IP Subnet Calculator
10 Steps to Installing PostgreSQL
Remote Network Commands | Linux Journal
Cikul » How to change hostname in CentOS
Thecus User Group – NFS mount failed permission denied
Thecus 1U4500 – Enable root SSH
Wahoo’s Word » Using watch to monitor Javascript
Ascii control codes (control characters, C0 controls)
DOM Based Cross Site Scripting
document.body, doctype switching, and more | evolt.org
A world community for web developers, evolt.org promotes the mutual free exchange of ideas, skills and experiences.
DOM:window.open – MDC
Welcome to Hadoop!
Internationalized domain name – Wikipedia, the free encyclopedia
Code Charts – Scripts
ISO 8859-1 Latin 1 and Unicode characters in ampersand entities
Dig Demonstrations
Re: say if grep can find non-ascii
http://www.ietf.org/rfc/rfc2181.txt
MIL-STD-498,MIL STD 498,MIL-STD,MIL-SPEC,MIL SPEC,Military Standards
MIL-STD-498,MIL-STD,MIL-SPEC,MIL STD,MIL SPEC,Military Standards for ISA
J-STD-016 & MIL-STD-498 vs. DOD-STD-2167A & 7935A
DOD Standards Procedures Collection Document Listing – Page 2
IHS, DOD STANDARDS (MILITARY/FEDERAL SPECS) – General Collection
Fred Morris, project management/distributed systems/practices
Info: (dir) Top
VICNET Help: Online – Web Design – .htpasswd encoder
reminders about programming: Fedora firewall setup is simple using built-in tools
Sample Usability Test Plan
FavIcon from Pics — free favicon.ico for your website (animated, static and marquee icons)
Free and easy to use online tool for creating favicons (.ico, animated, marquee and static) for browser address bars, favorites and tabs, from pictures, logos and other graphics.
How to Obscure Any URL
frames test page for harvesters
IP CIDR Subnet Calculator
Online IP CIDR / VLSM Supernet Calculator
DNS BIND named.conf Parameters
Copy files and directories recursively with tar – Tech-Recipes.com
Copying a directory tree and its contents to another filesystem using tar will preserve ownership, permissions, and timestamps. A neat trick allows using tar to perform a recursive copy without creating an intermediate tar file.
Scrum (development) – Wikipedia, the free encyclopedia
Searching your files with SWISH-E
Disk I/O
Installing and Configuring iptables
How to add an external USB hard drive to your Linux server (Redhat, CentOS, Ubuntu, Gentoo and SUSE) | my-whiteboard
Extenal USB hard disk is really useful (and inexpensive) for backing up your Linux server. Follow these steps to get it to work. 1, Buy a USB hard disk (I have
Which Web Browser is King? – Round 5: JavaScript Library and Framework Tests – OS, Software & Networking by ExtremeTech
Which browser is faster? IE7, Firefox 3, Google Chrome, Safari, or Opera? We run a bevy of tests to determine the king of the Web browser hill.
How to: Debug SSL certificate problems from the shell prompt
OpenSSL is a cryptography toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) network protocols and related cryptography standards required by them. It also includes the openssl command, which provides a rich variety of commands You can use the same command to debug problems with SSL certificates. To test the secure connections to a server, type the following command at a shell prompt: openssl s_client -connect ssl.servername.com:443 Where, s_client : This implements a generic SSL/TLS client which can establish a transparent connection to a remote server speaking SSL/TLS. It’s intended for testing …
Ascii Table – ASCII character codes and html, octal, hex and decimal chart conversion
Ascii character table – ascii ascii ascii ascii and ascii…conversions
How to Copy Files Across a Network/Internet in UNIX/LINUX (Redhat, Debian, FreeBSD, etc) – scp tar rsync
HOWTO: Installing DenyHosts – Page 2 – Ubuntu Forums
Page 2- HOWTO: Installing DenyHosts Tutorials & Tips
sendmail Configuration
history–Show status of files and users
using rsync to copy files from one server to another
CVS Commands
FC5 Repositories & Updates
Multiple Bugzilla databases with a single installation
IP Address Lookup (IPv4 & IPv6)
Determines your IP address and shows information (host, location, whois…) about any IP address entered – Up to 10 IP addresses can be looked up at the same time
FC10 network setup repeatedly overwritten – FedoraForum.org
FC10 network setup repeatedly overwritten Installation Help
Interface Configuration Files
CVS revision numbers
CVS Branch and Merge example
CVS–Concurrent Versions System – Merging two revisions
Linux.com :: All about Linux swap space
When your computer needs to run programs that are bigger than your available physical memory, most modern operating systems use a technique called swapping, in which chunks of memory are temporarily stored on the hard disk while other data is moved into physical memory space. Here are some techniques that may help you better manage swapping on Linux systems and get the best performance from the Linux swapping subsystem.
Zone Files
HowTo Setup an NTP Daemon for Time Synchronization – SIPfoundry sipXecs IP PBX, The Open Source SIP PBX for Linux – Calivia
YAML Ain’t Markup Language (YAML) Version 1.1
Trouble editing whine.txt.tmpl – What variables can I use? – mozilla.support.bugzilla | Google Groups
The Cafes » Privacy Tip #3: Block Referer Headers in Firefox
Writing Software Requirements Specifications | A Technical Communication Community
DiG HOWTO
How to use dig to query DNS name servers.
Behavior Driven Development – Wikipedia, the free encyclopedia
Agile software development – Wikipedia, the free encyclopedia
Waterfall model – Wikipedia, the free encyclopedia

Going old-school, so I can do some more cutting edge photography

Going retro to go modern. Sometimes old-tech really helps with a new concept.

Now, I know that I’m not the first person to do this sort of work. I know this, because I was inspired by the works of other, better photographers that have done this already. But, I still think the effect is modern, fresh and can produce some really interesting imagery. At least according to those that tell me so, and I trust most of them to be brutally honest (as they have been in the past).

A great many years ago, I sold all my Canon A-1 and AE-1 bodies, lenses and accessories to move into the digital SLR age. The first camera I purchased was the 6.3 Mega-Pixel Canon Digital Rebel. At the time, it cost almost $1000. By today’s standards, it’s specifications are quite unimpressive:

Canon Digital Rebel (300D overseas)
Specs:
Type Single-lens reflex
Sensor 22.7 mm (0.9 in) ; 15.1 mm (0.6 in) CMOS
Maximum resolution 3,072 × 2,048 (6.3 megapixels)
Lens type Interchangeable (EF-S, EF)
Shutter Focal-plane shutter, all speeds electronically controlled
Focus areas 7 autofocus points
Focus modes One-shot, AI Servo, AI Focus, Manual
Continuous shooting 2.5 frame/s, up to 4 frames

It worked well enough for long enough. But more resolution and more f/s speed was required. It was not long after the release of the Digital Rebel, that the Canon 10D was released.

Following that was the Canon 20D, with a little larger sensor and a decent f/s speed (5.0 fps!). This was my next Canon digital camera purchase.

Canon 20D
Specs:

Type Single-lens reflex
Sensor 22.5 mm × 15.0 mm CMOS
Maximum resolution 3,520 × 2,344 (8.25 megapixels)
Lens type Interchangeable (EF, EF-S)
Shutter Vertical travel, focal-plane shutter, all speeds electronically controlled
Shutter speed range 1/8,000 to 30 s, bulb
Focus areas 9 autofocus points
Focus modes One-shot, AI servo, AI Focus, Manual
Continuous shooting 5.0 frame/s, up to 23 frames (9 in RAW)

Canon released the 30D seemingly a few months later, meaning the price of the 20D had dropped. During my annual trek to Laguna Seca, I purchased another 20D in Portland Oregon. This started my affair with multiple camera bodies. Having a pair of 20D cameras, each with a different type of lens, opened up a whole new world of shooting opportunity. Instead of having to expose sensors to dust every time I needed a new lens, I simply setup the cameras the night before, and headed on location. Switching from one shooting capability to the next, was as simple as grabbing another camera.

I worked with the 20D camera for many years, until this past month, then I added another body to the camera bag. With the release of the new Canon 7D, prices on the preceding models dropped. This also meant that a number of store demos could be picked up for significant savings. In the case of the Canon 50D, I picked up a demo model for almost $400 of the price of new. It was an opportunity that I could just not pass up.

The upgrade bumped me from 8.3 to 15.1 megapixels of resolution (almost double!). The biggest benefit though, is the new parallel Digic image processors. And of course the dramatic increase in frames per second speed (20% boost) and the big buffer, allowing extensive rapid-fire shooting before having to wait for card writes to finish. There is also the benefit of Ultra DMA support in the 50D, that I did not have in the 20D‘s I’ve been using for a long time.

Canon 50D
Specs:

Type Digital Single-lens reflex
Sensor 22.3 x 14.9 mm CMOS
Maximum resolution 4752 x 3168 (15.1 megapixels)
Lens type Interchangeable (EF, EF-S)
Shutter focal-plane
Shutter speed range 30 s to 1/8000 s, bulb
Focus areas 9 user points (cross type)
Focus modes One-shot, AI Servo, AI-Focus, Manual
Continuous shooting 3 or 6.3 frames/second

For a great many years I was very satisfied with my move to digital. I no longer had to pay for expensive film (I only used Pro transparency film which can be pricey), the processing, wait a week for the slides to be developed and mounted, dealing with dust, etc. etc. etc.

That was true until I started working on my Human Canvas Projects. Suddenly I needed slides. A wide variety of slides. The only slides I had available to me were 5-8 years old, and I didn’t have any way to create more.

Because of this I have been exploring a wide variety of slide creating methods. I even have two rolls of 120 slide film in case I stumble across a good deal on a 120 medium format camera kit (good luck with that, right?!). I checked all the Pawn shops across town, the Craig’s list postings, you name it. Now, I did find some 35mm camera bodies, but all of them were either non-Canon or non EF systems. The best I found was $100 for a very old and very basic Canon AE-1, circa 1980 something. I sold one of these bodies many years ago.

Yesterday, that problem was solved! I was at Glazer’s photo in Seattle to pick up some 60×60 (120 frame size) transparency mounts for the alternative slide creation method I came up with (I might write that up in the coming week). Turns out Glazer’s in-store price was 30% LOWER than the best on-line price I could find, then I had to pay for shipping too. I bought every full box they had.

After dropping the slide mounts off in my car, I wandered across the street to the Camera store (film and lighting is in one store, cameras in another across the street), and looked for any deals on a used 120 body. Nothing was in sight, but as I rounded the back of the store, where I found the 50D I bought from them, a month ago, I saw some new inventory. A nice Canon EOS-1 with auto-winder drive.

The Canon EOS-1, was the Professional body released for the new (at the time in 1989) EOS lens system. I was very excited about the find!

And, best of all, its was only $149 (plus Seattle/WA taxes…). It was already loaded with batteries, ready to go! A couple of other people were hovering around the case, looking over the EOS-1, so I had to decided quickly. Keep looking around, maybe find a good ‘deal’ on an EOS camera at a pawn shop, or pull the trigger on this baby, and head straight to the ferry and back home. So, that’s exactly what I did.

Here is the very camera body I purchased, with one of my Canon macro zoom lenses mounted:

Canon EOS-1

Now, maybe it is, or maybe it isn’t obvious in this photo, but the camera is a beast! Here is a comparison shot of my three current camera bodies (photos taken with my backup 20D body and consumer 18-55 lens).

Canon Cameras (l. to r.) Canon 20D digital, Canon EOS-1, Canon 50D digital

A shot of the rears of the Cameras. Digital cameras have the display screens turned on to illustrate one of the nice improvements in on-board display capabilities between the 20D and 50D cameras. It’s pretty easy to see how massive the Pro body EOS-1 is, compared to my consumer and prosumer Digital equipment.

Canon Cameras (l. to r.) 20D digital, 50D digital, EOS-1

I’m looking forward to seeing the quality of slides I can produce with the EOS-1. I’m used to manual focus film equipment, so the auto-focus capabilities of the EOS-1 are a nice thing to have. I’m not sure I fully understand how to use the new body, and the store was not able to locate a matching owner’s manual. I’ll be playing it by ear. The first roll should be going to the processing company tomorrow, weather and shooting opportunity permitting.

Mobile social networking technology – FourSquare

I noted this a couple of weeks ago, that I was starting to play around with foursquare, the mobile social networking tool. It’s primary advantage is as a Smart Phone app. I, of course, prefer the iPhone 3GS (aka The Oracle) platform for my mobile networking, blogging and just plain monkeying around.

One of it’s features, is the ‘Stats’ page. It gives you a rundown of how often you’ve used the app, what cities you spend the majority of your time in, how many check-ins you average on each day of the week. Anyhow, here are my stats (as of this morning). It’s just and example.

My foursquare stats - Easter Sunday 2010

But, it turns out that it’s much more than a neat tool for big-brother to keep an eye on your travels (frankly, they already know where you phone is 24×7, heck, they can even turn on the microphone and listen to you without you’re knowledge, so you tin-foil that types can just simmer on down), I’ve found that it’s one of the most useful, real world source for finding places and things to do, while traveling, or just putting around your local area!

The way it works is very simple. Using the geoLocation capabilities of your smart phone (now I’m assuming your phone is actually smart.. and can do this) it will show you venues nearby that people have entered into the system. But the real benefit comes for the following three neat features!

iPhone foursquare app - Nearby Venues

1) – Displays nearby locations

Based on your location, it will display all sorts of businesses, parks, eateries, medical facilities, you name it.

Now in my sample image here, you see an number of medical facilities, primarily because I was near the hospital when I snapped this screengrab (another thing that the iPhone is amazingly adept at doing). The list can be fairly long, or pretty short. It all depends on how densely populated the area you are in is, and how many locations people have added to the system. Even out here in the sticks, I’ve found a lot of places entered into the system, presumably by developers, since almost all of them had no previous visitors when I checked in.


2) – Tips and things to do

Now, this is the one I find the most useful! Using this, in places that I’ve been frequenting for years, I discovered some NEW businesses and interesting things to do (or eat/drink) at them. I see this as a great way to explore a new town, or even the one you live in.

Traveling, not familiar with the area? Why not try foursquare to see if you can get some good tips from the locals on things to do (or things NOT to do), places with deals, specials, whatever. This is my favorite and most used part of the app.

Now a nice bonus feature is the ability for businesses to add ‘Specials’ that will pop up on the screen that you can unlock. For instance (sorry, no screen shot here, maybe when I get into the office tomorrow I’ll add that one) the hotel next to my work offers a free coffee in the morning and a $20 off certificate on a future stay, simply by checking in there using foursquare and showing it to the barrista in the lobby! See, you really can get something for (nearly) nothing!


iPhone foursquare app - ToDo List

3) – ToDo lists

This is sort of an extension of Feature 2, but I think it’s useful enough on it’s own to be mentioned.

It’s another neat feature that comes in handy for a traveler. Did you hear about something cool to do on foursquare (a tip) and want to recall it next time you are in the area? Mark it as a ‘To Do’ and it will show up on your list. Simple as that.

“Big Deal!”. you might say,“I can do that with a notepad!”. True enough. BUT, you use the foursquare website to poke around in another city location, look at the tips and remember the ones you think sound interesting, by simply clicking and adding to your ToDo list. And guess what, when you are in the local area, the relevant list items are right there at your fingertip. Seems easy enough!

Final thoughts for today – monitization

Being the semi-paranoid data geek I am, what I don’t get about this application, is how the developers and the operator of the website make their money. I can see where a business might pay a little to offer a deal, but how much $$$ is there, for foursquare, in that? I don’t know. Now I also wonder if they are using this neat pile of data they are collecting on your, and re-selling that to potential marketeers! That would be my biggest concern. And one that I’ll be looking into soon.

For now, it’s fun little app. And honestly, it sort of encourages me to get out of the house more and explore places, looking for things people suggest in the tips.

Unless you are one of those tin-foil hat types, you might check it out.

Easter Eggs – a study in light and egg art

Happy Easter!

It is that time again. When we (well, some people) celebrate the Rising of the Christ. And along with that, goes what I guess is the pagan tradition of the Easter Egg. No matter. It’s a time for the family to goof around and explore some artistic expression.

These are the results. Each of the thumbnails will bring up a larger image.

Some eggs are ‘interesting’, some are messy, some are pretty standard fare. All photos taken in my home studio, using a Canon 50D + Canon 70-200 f/2.8L lens and 600 watts of color-corrected 5600k light, bounced off two Profoto reflectors. Subjects are placed 8′ in front of a black drop.

Magenta Moon
Rocky Shores
Spring Explosion
unnamed 3
unnamed 4
unnamed 5
Humpty Dumpty
unnamed 7
Tranquility Base
unnamed 8
unnamed 9
Europa
Martian Glow
unnamed 10
unnamed 11
unnamed 12
unnamed 13
Easter Morning
unnamed 14
unnamed 15
unnamed 16
unnamed 17
unnamed 18
Cheetah Spots
Hippy Clown Basket
unnamed 20
unnamed 21
Passion Fruit
Deep Venetian Marble

Now, I hope the Easter Bunny can find a place to hide them all!

Installing Gearman APIs for JAVA and PERL


Following yesterday’s marathon package installation ‘experiment’, today I started to acquire and install the Client/Worker API modules.

JAVA – installing gearman-java-0.03.jar

Java modules can be located on the downloads page for Gearman. It is also available at the Launchpad page for Gearman. I selected the code from the gearman.org site to try first, which ended up directing me to: https://launchpad.net/gearman-java.

I downloaded all three available files:

  • gearman-java-0.03.jar
  • geareman-java-0.03-javadocs.jar
  • gearman-java-0.03-src.tar.gz

Once downloaded, I moved all three files, and the original gearmand-C source to my Development directory.

PERL – installing Gearman::XS

For the PERL implementation, I’m going with the PERL wrapper, around the core gearman C libraries. I’d rather leverage as much C as possible. The focus for me is on speed.
It is available via CPAN under Gearman::XS.

Installing PERL packages is generally pretty painless.


#root:  cpan Gearman::XS
[...]
Running install for module 'Gearman::XS'
Running make for D/DS/DSCHOEN/Gearman-XS-0.8.tar.gz
Fetching with LWP:
http://www.perl.org/CPAN/authors/id/D/DS/DSCHOEN/Gearman-XS-0.8.tar.gz
[...]
Writing /Library/Perl/5.10.0/darwin-thread-multi-2level/auto/Gearman/XS/.packlist
Appending installation info to /Library/Perl/Updates/5.10.0/darwin-thread-multi-2level/perllocal.pod
DSCHOEN/Gearman-XS-0.8.tar.gz
/usr/bin/make install  -- OK

With the installation completed, I wrote and executed a very simple script, to test PERL’s ability to locate the new module.


#!/usr/bin/perl -w
use strict;
use Gearman::XS qw(:constants);
use Gearman::XS::Client;

print “\nLoaded and ran fine\n”;
exit 0;

This was the result:

david$ ./gtest0.pl

Loaded and ran fine

Installation of the PERL module Gearman::XS was successful.


NOTE: This is part of a series of posts, centered around installation and evaluation of Gearman as a distributed scheduling product. Here are the other articles in this group:

Installing GEARMAN on MAC OSX 10.6


So, today I set about installing gearmand on my laptop, to test out some massively distributed computing ideas I’m working on. Turns out, it’s not just a matter of downloading the .dmg file and hitting ‘RUN’. Nope.. you better have 1/2 a pot of coffee and your copy of XCode installed on the machine or you are dead in the water.

Actually, you’re going to need more than that, if you are working with a vanilla Snow Leopard install.

Step 1 – install XCode:

But first things first. You can download XCode from the Apple website, or you can install it from your ‘Extras’ folder on the OS disk. I did the later, since the distro is pretty big, something like 600MB. Get that done first.

Step 2 – install MacPorts:

Now this is where the fun begins. Now, if you followed my other blog page on installing MacPorts, you can move onto Step 3. If you have not, then, proceed at hast to installing it (follow this link too).

Step 3 – install libevent

If you enjoyed installing MacPorts, you are going to LOVE this! 🙂 Now, the step of building libevent from source, probably not *required* but, after three installs that were not picked up by the gearmand, I though I’d just, do this the old fashioned way too. I have a writeup for installing libevent here (link to my page).

Step 3 – install wget

wget. How I love you, let me count the ways… MANY. wget is great. It’s a non-interactive text web client. Some of the cool things that wget can do, is recursively traverse a page, grabbing all the content, images, links pages (and their images, objects etc.). It’s also almost impossible to compromise with conventional XSS or other tricky DOM / JavaScript methods. No drive-by downloads here folks!

So, go ahead and get wget installed, because it’s going to be used to reach the final objective, retrieving gearman.

#root: port install wget

For me, on my lousy ComCrap connection, it took me a fairly long time. I think it’s safe to say, run the install command, and walk away. Check back in 10-15 minutes, see if it’s done. How will you konw if it worked? Simple, if you download the file in Step 5, it worked.

Step 5 – Finally, download and extract the Gearman bundle

This is where wget comes into play. Make sure you are in the directly you want. I suggest /opt. And execute the wget command to grab the distro. NOTE: The current distribution might be later than this (higher number). A check of the Gearman main site will probably give you the number you need, if this is not the latest and greatest:

#root: wget http://launchpad.net/gearmand/trunk/0.12/+download/gearmand-0.12.tar.gz
#root: gunzip gearmand-0.12.tar.gz,
#root: tar xvf gearmand-0.12.tar

Step 6 – BUILD!

Build the package. This part is the simplest of all the steps.

#root: ./configure
#root: make
#root: make install

YOU ARE DONE (installing that is)

Next article, will be a writeup on how to use Gearman, some time in the next week.


NOTE: This is part of a series of posts, centered around installation and evaluation of Gearman as a distributed scheduling product. Here are the other articles in this group:

Installing libevent on MAC OSX 10.6

So, today I set about installing libevent on my laptop. It’s a required library for system event handling applications. An example of that would be Gearman.

First off, you are going to need to have install MacPorts installed.

Step 1 – install MacPorts:

Now this is where the fun begins. Now, if you followed my other blog page on installing MacPorts, you can move onto Step 3. If you have not, then, proceed at hast to installing it (follow this link too).

Step 2 – install libevent

If you enjoyed installing MacPorts, you are going to LOVE this! 🙂 Now, the step of building libevent from source, probably not *required* but, after three installs that were not picked up by the gearmand, I though I’d just, do this the old fashioned way too.

First off, run the standard install. This did not toss errors for me on the normal install. You can stop with this Step after it installs and move of if you like. I’m going to show the extra couple of steps I took.

#root: port install libevent

Step 3 – locate tarball, extract and build from source

UPDATE: 6-JUN-2013. Get the latest tarball from [HERE].

Now, move the distribution for libevent, and untar the tarball. The path here is from my current build. The one you eventually get will possibly have a higher number (more recent build). Don’t freak out if this exact path is not on your system. If you are building from source, I’m going to assume you also know how to find things on your computer. The reason I built this from source, was to provide the option –prefix=/usr/local to configure. It establishes where it will deploy it’s libraries.

#root: cd local/var/macports/distfiles/libevent
#root: gunzip libevent-1.4.13-stable.tar.gz
#root: cd /opt
#root: tar xvf libevent-1.4.13-stable.tar
#root: cd libevent-1.4.13-stable
#root: make
#root: make install

Now, you should have a nice clean build of libevent on your computer. Having accomplished this, you can install an array of scheduling and system event driven applications.

Enjoy.

Installing MacPorts on MAC OSX 10.6

Good times, installing MacPorts that is. This is the basis for unleashing the power of LINUX/UNIX/BSD in full, on your MAC OSX system. One of the utilities I’ve used most is wget. I makes short work of taking apart websites you think might be malicious, basically defanging them. Fun times! 🙂

Now, to get MacPorts installed was not small effort, compared to how MANY blogs and posts on the net make it sound. Well, I’m here to tell you that, you got here because those didn’t work, right? Well, maybe you came here first. If that’s the case, I’m going to save some some frustration.

Now, first things first, I’m going to tell you to unlock the root user on your computer. Look, before you become totally indignant, let me beat you to the punch. I’ve been there, done that. I’ve been a professional UNIX (real UNIX HP-UX and SGI’s IRIX, IBM’s AIX just to name a couple) for over 20 years. I don’t want to hear about how ‘bad’ or ‘dangerous’ it is running as root. Tough beans, I don’t care. I’m not a paranoid ninny, I’m a code cowboy. Deal with it. If you prefer, you can prefix all your commands with the less ‘scary’ sudo, but don’t whine to me if something in this post does not work. Not that I’d care anyway.

So, now that we understand each other, let’s move on.

Step 1 — check out the MacPorts source code

I stumbled across this suggestion here: [ Snow Leopard and MacPorts ]. Worked like a charm to get a hold of the latest MacPorts build.

Using svn (aka Subversion, a most detestable tool IMHO), get the source code and plop it down in /opt. This is how I did that.

reguser#: su -
root#: cd /opt
root#: svn co http://svn.macports.org/repository/macports/trunk/base/ macports-svn

Step 2 – build the package from source

OK, I might have lost a couple of your ‘click-to-install’ types with that, but really, as long as it does not nuke itself (you’ll see that happen in other blog articles I have) it’s very straight forward. Run the three commands to build the package, and viola… update your environment and.. bingo.. you’re onto installing your new packages! 🙂

Here is how it’s done. First, move yourself into the package you just checked out:

root#: cd macports-svn

Next, you’ll want to run the configure script to test your system’s capability to compile, and to generate the primary make file:

root#: ./configure

Compile and make the install package:

root#: make

Finally, execute the install:

root#: make install

Step 3 – set your LIBDIR path

That’s about all there is to it! Now, you’ll probably want to edit your ~/.bash_source file, adding the future path of all these cool libs. Believe me when I tell you, it can save you a lot of pain and bewilderment later one, when you’ve compiled those critical libraries and the application you really want to install insists that it cannot find them.

So, here is how I do it, open the file:

root#: vi ~/.bash_profile

Now add the line for LIBDIR to the file and save it. The other line there is helpful too, might as well toss it in, because it makes running port just that much easier.

export LIBDIR=$LIBDIR:/usr/local/lib
export PATH=$PATH:/opt/local/bin:/opt/local/sbin

Now, just editing the file does not do much, unless you reload your user environment (this happens on login, but only at login, so.. you’ll need to do it manually here, using the source operation. Really, it’s much easier than it all might sound.

root#: source ~/.bash_profile

Step 4 – update with the latest Portfiles

So, that’s all I had to do, to get the base MacPorts installed. Now, there are two more commands that you should run now, to make sure that your MacPorts install is all up to date, and registered. Do you need to run both, probably not. But I did, and it worked for me. Now, documentation says this will happen automatically. Didn’t seem to for me, so I ran them myself, just to be certain.

root#: port -v selfupdate
root#: port -r selfupdate

That should just about do it. Now you are ready to install fun extras like webget, libevent and eventually, Gearman.

Now, if you are really picky about your OS’d filesystem, you might go and remove the macports source you checked out. I, personally, hate having to track source code down again, so unless I’m out of disk space, I leave it for future reference.

Saturday trip around Puget Sound with kids and cameras.

One of the things I did today, was sign up for ‘foursquare‘, an app that lets you ‘check-in’ to places, and those with participating incentives will send coupons to your phone. It’s and interesting experiment. I’ll see how that works out today.

M.V. Kitsap mid-sound, enroute Bremerton
Passengers on stern pickle-forks of ferry M.V. Kitsap
M.V. Kitsap about to make starboard turn into Rich Passage.
M.V. Kitsap foreground, Olympic National Park, background.

Sea Lions at the Santa Cruz Beach Boardwalk Pier

Sea Lions! Tons of sea lions!. I’m sure that’s and underestimate.

Normally on the boardwalk you would see a few seals up under the main wharf, but it appears that they have invated the Stagnaro’s boat launch, and, well, see for yourself. It looks like the aftermath of some sort of frat party or Roman toga orgy.

What you used to find, a few stragglers under the wharf.
Now, it's a seal pile!
Marine mamals, everywhere!
It sort of makes you wonder, if they heeded the warning.
I was treated to some mamal aeorbatics.
Some made better choices than others, regarding their LZ.
This provides a little more perspective on the mass of blubber and fins.
This has nothing to do with sea lions, it's the street side of The Boardwalk

Racing, Photography, Software and Politics.