Setting up a custom ‘Weather Reader’ (Part 3) – Using Data


<– Part 2

It would be short work to grab the current observations from the local station’s file, then grab the full projected forecast from the Zone’s XML formatted data file (example for Bremerton). I checked the full forecast XML, and unfortunately it does not include the local current conditions. In the grand scheme, this is not a big deal since I’ll need to grab three forecast files already. One more file for current observations is not that much more of a burden.

This section contains the Maximum Forecast Temperatures, covering outlook:

<temperature type="minimum" units="Fahrenheit" time-layout="k-p24h-n7-1">
<name>Daily Minimum Temperature</name>
<value>40</value>
<value>45</value>
<value>43</value>
<value>44</value>
<value>43</value>
<value>43</value>
<value>42</value>
</temperature>

This section contains the Minimum Forecast Temperatures, covering outlook:

<temperature type="maximum" units="Fahrenheit" time-layout="k-p24h-n7-2">
<name>Daily Maximum Temperature</name>
<value>59</value>
<value>61</value>
<value>60</value>
<value>61</value>
<value>61</value>
<value>60</value>
<value>60</value>
</temperature>

Also in the file is the projected percentage of precipitation:

<probability-of-precipitation type="12 hour" units="percent" time-layout="k-p12h-n14-1">
<name>12 Hourly Probability of Precipitation</name>
<value xsi:nil="true"/>
<value xsi:nil="true"/>
<value xsi:nil="true"/>
<value xsi:nil="true"/>
<value xsi:nil="true"/>
<value>30</value>
<value>30</value>
<value xsi:nil="true"/>
<value xsi:nil="true"/>
<value xsi:nil="true"/>
<value xsi:nil="true"/>
<value xsi:nil="true"/>
<value xsi:nil="true"/>
<value xsi:nil="true"/>
</probability-of-precipitation>

The XML also is kind enough to include the image names.   Based on this, the actual visually rendered page is a style sheet applied to the XML data, providing a human readable web page <i>(something I need to get more familiar with)</i>.

<conditions-icon type="forecast-NWS" time-layout="k-p12h-n14-1">
<name>Conditions Icon</name>
<icon-link>http://www.nws.noaa.gov/weather/images/fcicons/nbkn.jpg</icon-link>
<icon-link>http://www.nws.noaa.gov/weather/images/fcicons/sct.jpg</icon-link>
<icon-link>http://www.nws.noaa.gov/weather/images/fcicons/nsct.jpg</icon-link>
<icon-link>http://www.nws.noaa.gov/weather/images/fcicons/bkn.jpg</icon-link>
<icon-link>http://www.nws.noaa.gov/weather/images/fcicons/nbkn.jpg</icon-link>
<icon-link>http://www.nws.noaa.gov/weather/images/fcicons/shra30.jpg</icon-link>
<icon-link>http://www.nws.noaa.gov/weather/images/fcicons/nshra30.jpg</icon-link>
<icon-link>http://www.nws.noaa.gov/weather/images/fcicons/shra.jpg</icon-link>
<icon-link>http://www.nws.noaa.gov/weather/images/fcicons/nshra.jpg</icon-link>
<icon-link>http://www.nws.noaa.gov/weather/images/fcicons/shra.jpg</icon-link>
<icon-link>http://www.nws.noaa.gov/weather/images/fcicons/nshra.jpg</icon-link>
<icon-link>http://www.nws.noaa.gov/weather/images/fcicons/shra.jpg</icon-link>
<icon-link>http://www.nws.noaa.gov/weather/images/fcicons/nshra.jpg</icon-link>
<icon-link>http://www.nws.noaa.gov/weather/images/fcicons/shra.jpg</icon-link>
</conditions-icon>

Design and coding of the file downloads, processing and construction of the status file is the next step.  One thought I have, is to download and store locally, all the images.  This will keep my page off of their webserver’s request log.  External includes of images can be a burden on a remote server, if you start to abuse it.  No sense in being a bad netizen.  The question that I need to answer is, <i>CAN I</i> get a list of all the potential images (and there are <i>many</i>) and automate the download to system I plan to run this little product upon.

Automation

Automation of the XML downloading and parsing, will be handled by PERL (at least in this first tool, it may be converted to JAVA on a second iteration, once I’ve performed usability testing of this first iteration).

Additional binary libraries are required first:

apt-get install libxml2-dev

So, here is the skinny. First, have to move into the location where CPAN unravels the packages:

cd /root/.cpan/build

Next, move into the directory for XML::LibXML and manually build with these steps:

cd XML-LibXML-1.70-OucP9U
perl Makefile.PL
make
make install

Next build the XML::Atom package:

cd XML-Atom-0.37-pcVvAG/
perl Makefile.PL
make
make install

Next, a few PERL modules must first be installed. NOTE: the XML::SAX modules are suggested, to provide a big boost in XML parsing performance. You might be surprised at how much processing power the typical XML parsing packages require. XML::SAX and XML::SAX::Expat provide a better code for XML parsing.

cpan LWP::UserAgent
cpan HTML::TokeParse
cpan XML::Feed
cpan XML::SAX
cpan XML::SAX::Expat
cpan Data::Dumper
cpan XML::Feed
cpan XML::Atom

NOTE:
As hard as I tried, CPAN would not install XML::LibXML nor XML::Atom. So, I had to get down into the muck and manually build the packages. The trick was getting the libxml2 package talked about earlier.

One critical required step, if you are going to write and use custom PERL libraries, you need to add the following line to a shell initialization file. I’ve been using bash, for lack of any reason to use other shells. Thus, I added this line to my ~/.bash_profile

export PERL5LIB=$HOME/plib

Once that is done, you’ll need to source the updated config file, or logout/login to gain the benefits of the change.

Step 4 – coming soon

Setting up a custom ‘Weather Reader’ (Part 2)

<-- PART 1

Locating Suitable Data Sources

The process of finding the desirable data sources, can be a challenge. I already know which of the 5 day forecast sources I want to use.

Bremerton, WA

Tacoma, WA

Seattle, WA

Maybe I’ll add this one too, just to so I’m reminded of what I’m missing in CA:

Campbell, CA

Next is a page that contains the CURRENT and HIGH / LOW temps. In the past I have located some text based data files on the NOAA.GOV website. I’ll have to dig up my notes one this. From time to time NOAA moves those files and changes the format, so those notes might not end up being that helpful. It is somewhere to start.

This page here, has a pile of nice detailed information (see compressed screen shot) but does not contain everything I’m looking for:

Recent WX from Bremerton National Airport.

XML DATA!. XML is something I know more about, than I really care too, but it is a portable, easily parsable and text data format. I’ve not yet investigated the contents here, but it does look promising!

Washington State WX XML Feeds

TO BE CONTINUED TODAY

Part 3 –>

Setting up a custom ‘Weather Reader’ (Part 1) – Product Plan

What is a “Weather Reader”? Well, it’s like a “News Reader”, but it’s purpose is to check the web for local weather conditions and display them on a computer screen. For this project I’ve revived an old Averatec laptop, installed Ubuntu 9.10 on it and started to write some PERL.

Beat up old Averatec AMD64 laptop, only 1/2 the keyboard works and the battery is shot.

Weather Data

Where to get the weather data? Personally, I like to go to the source. The public source at NOAA.gov. This is a government agency, paid for by my tax dollars (and yours too if you’re a US tax payer.. of which only 53% of working people in the US are, but that’s another story. So, free for the taking as far as I can tell, and am concerned. Which is good, because the real heavy work is up to me. Finding a URL is one thing, using it for something productive is another thing.

To see what I’m looking at as a source without clicking a bunch of links, here is a screen shot of my indented HTML victim:

Seattle Weather from NOAA website.

Now, the only part that I’m interested in is this one:

I’m sure some of you are asking, “WHAT’S THE POINT!?!?!?”. Well, I have several, not all atop my head. As an avid motorcyclist, weather is almost as import to me as mariners and aviators. Weather might look good for the moment, but around here anything can happen. It’s good to know what the forecast is. And not just in one location. Since I transit two area micro-climates commuting to work, knowing that weather will be at the end points of my journey are are a minimum requirement. Plus, I’m lazy. Not so lazy I won’t write a program to do this, but lazy in the larger sense, of I just want to hit a button and see all the data I want, not have to wait for the Weather Chanel to decided it’s ready to dispense it’s forecast, or hunt around on various local news sites. Nor, frankly, have to click on TWO hyperlinks to see what weather will be like HERE and THERE. Nope, I’m just too lazy for that, so I’ll spend 8-32 hours figuring out a way to save myself 2-3 minutes a day (I didn’t say I’m always smart, but always lazy). Remember; “Laziness is the father of invention!”. Digressing….

The Plan

The plan is to use PERL, run every 30 minutes from 5 AM-> 1 AM, and grab the weather page shown above. Parse out only that which I want, and then re-construct my own page on my own server. It’s a basically a mashup page of what I want to see.

Checking the source code of the page, I see that, ugh, NOAA did not supply and useful DIV markers that I can use. So, this will be a rel brute-force process to detect, select, extract and re-construct the page of my dreams. Yes, I can be easily entertained.

<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr valign ="top" align="center">
<td width="11%"><b>Tonight<br></b><br><img src="/images/wtf/nshra50.jpg" width="55" height="58" alt="Scattered Showers Chance for Measurable Precipitation 50%" title="Scattered Showers Chance for Measurable Precipitation 50%" ><br>Scattered<br>Showers<br>Lo <font color="#0033CC">45 &deg;F</font></td><td width="11%"><b>Tuesday<br></b><br><img src="/images/wtf/shra50.jpg" width="55" height="58" alt="Scattered Showers Chance for Measurable Precipitation 50%" title="Scattered Showers Chance for Measurable Precipitation 50%" ><br>Scattered<br>Showers<br>Hi <font color="#FF0000">54 &deg;F</font></td><td width="11%"><b>Tuesday<br>Night</b><br><img src="/images/wtf/nshra30.jpg" width="55" height="58" alt="Scattered Showers Chance for Measurable Precipitation 30%" title="Scattered Showers Chance for Measurable Precipitation 30%" ><br>Scattered<br>Showers<br>Lo <font color="#0033CC">44 &deg;F</font></td><td width="11%"><b>Wednesday<br></b><br><img src="/images/wtf/bkn.jpg" width="55" height="58" alt="Partly Sunny" title="Partly Sunny" ><br>Partly<br>Sunny<br>Hi <font color="#FF0000">57 &deg;F</font></td><td width="11%"><b>Wednesday<br>Night</b><br><img src="/images/wtf/hi_nshwrs30.jpg" width="55" height="58" alt="Chance Showers Chance for Measurable Precipitation 30%" title="Chance Showers Chance for Measurable Precipitation 30%" ><br>Chance<br>Showers<br>Lo <font color="#0033CC">46 &deg;F</font></td><td width="11%"><b>Thursday<br></b><br><img src="/images/wtf/shra30.jpg" width="55" height="58" alt="Chance Showers Chance for Measurable Precipitation 30%" title="Chance Showers Chance for Measurable Precipitation 30%" ><br>Chance<br>Showers<br>Hi <font color="#FF0000">59 &deg;F</font></td><td width="11%"><b>Thursday<br>Night</b><br><img src="/images/wtf/nshra30.jpg" width="55" height="58" alt="Chance Showers Chance for Measurable Precipitation 30%" title="Chance Showers Chance for Measurable Precipitation 30%" ><br>Chance<br>Showers<br>Lo <font color="#0033CC">46 &deg;F</font></td><td width="11%"><b>Friday<br></b><br><img src="/images/wtf/shra.jpg" width="55" height="58" alt="Chance Showers" title="Chance Showers" ><br>Chance<br>Showers<br>Hi <font color="#FF0000">59 &deg;F</font></td><td width="11%"><b>Friday<br>Night</b><br><img src="/images/wtf/nshra.jpg" width="55" height="58" alt="Chance Showers" title="Chance Showers" ><br>Chance<br>Showers<br>Lo <font color="#0033CC">46 &deg;F</font></td></tr>
</table>

Snagging that out of the documents for 2-3 locations will get me what I want. It should look something like this, but the example here does not have any stylesheets applied, it’s a direct rip and mash.

Sample mashup, this was done manually. It at least proved the concept.

There are a couple of problems with that page though, it’s going to take up too much real estate on the final page. Here, it’s almost too large to view on my laptop’s main screen. So, some embedded CSS is in order. This hear overloads the td type, making any text found within anytd rendered at 80% of the normal size. This also overloads creates a style named headish that I is applied to the section titles:

<style>
.headish { 
  font-weight:bold; 
  background-color:#CCC; 
  font-size: 1.2em;}
td { font-size: 0.8em; }
</style>

The result of that very small change, gives me a smaller visual footprint, and formatting at little more pleasing to my sensibilities:

A little more hammering around in the stylesheet, and adding a CURRENT and High/Low temps forecast for the day. A little closer to the desired mockup. I still need to locate a suitable news feed to process:

A little closer to the desired mashup page.

PART 2 –>

Starting gearmand deamon

Getting the gearmand deamon running. Should be simple work, yet, as with a lot of thing in the software world, it’s not quite that simple. My first attempt to start up gearmand failed with the following error:

Corsa-3:~ root# gearmand
Error creating socket: IO::Socket::INET: Address already in use
Corsa-3:~ root#

Now, I’m not sure why that would be the case, since I checked the system process list and did NOT see any other instance of gearman executing (if you are not sure what you are looking at, the only thing found matching gearman, was the grep against the process list itself, not what I’m looking for)

Corsa-3:~ root# ps -ealf | grep gearman
0 33324 32942 4006 0 31 0 2425520 168 - R+ 5bb5a80 ttys000 0:00.00 grep gearman 0:00.00

A check of netstat did not reveal a listener on either of the known gearman ports (7003 or the new official port: 4730 ).

** TO BE COMPLETED **

Wine bottle photography – harsh lessons in relectivity

After my series of Easter Egg Photos, earlier this week, I decided to clear out my ‘collection’ of wine bottles. I keep them, to remind me which wines I liked. Some are quality, some are just a good value (consumable on the cheap).

Combining my desire to clear out a corner of my kitchen, and learn a little more about lighting, reflection and studio product photography, I put together this little experiment.

I quickly learned that shooting objects with high reflectivity, such as glass, is much more difficult to manage than other images. You’ll notice the lighting umbrellas, the wall colors, even a few have reflections of myself in the wine glass.

Some have a large bright reflection on the bottom of the glass. It turns out the white floor in the shop really reflects light well, and shows up on the glass. Putting down an extra black backdrop on the floor took care of that. But the sides and background beyond the camera remained an issue. I have white and yellow curtains there. I guess I need to get black for that as well. Just another set of lessons learned.

The photos are also uploaded to my Flickr account with additional comments on each wine. I’ll copy those comments, and add more info later. For how, I’ll just provide the pics.

McWilliams Cabernet Sauvignon 2007



Wine 2



Wine 3



Wine 4



Wine 6



Wine 7



Wine 8



Wine 9



Wine 10



Wine 11



Wine 12



Wine 13



As you can see in the photos, having a totally solid color, or black studio would produce a better image. That and adjusting the camera to a deeper field of focus. But, this why I’m doing this. To learn those lessons, hone my craft, and have a little fun at the same time.

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.

Racing, Photography, Software and Politics.