<html>
<head>
<!-- <META HTTP-EQUIV="refresh" CONTENT="30"> -->
<link rel="stylesheet" type="text/css" href="cto4.css" />
<title>Centretown Observatory: News</title>
</head>
<body background="Graphics/CTO/clouds.jpg" bgproperties="fixed">
<center>
<font face="Arial">

<!-- <table width="1080px" valign="TOP" border="0" bgcolor="#000000" cellspacing="0"> -->
<table width="1080px" align="center" border="1" frame="border" bordercolor="black" width="100%" bgcolor="white" cellspacing="0" cellpadding="0">
<tr>
<td valign="TOP">
<table width="100%" border="0" bgcolor="white" cellspacing="0" cellpadding="5">
<tr>
<td width="50%" align="top">
<table width="100%" bgcolor="white" valign="top">
<tr>
<td width="120px">
<img width="120" height="160" src="Graphics/CTO/cto_logo_120x160.jpg"/>
</td>
<td>
<center>
<h1>Centretown Observatory:</h1>
<h2>News</h2>
<b><font color="Teal" size="-1">Times in <@OTZF> (<@OTZS> = GMT<@OTZO>)</b><br><br/>
(To see this page's template code, please <a href="w-news-src.html">Click Here</a>.)
</center>
</td>
</tr>
</table>
</td>

<!-- TOP MENU -->
<td width="50%" valign="top">
<table border="0" width="100%" align="left" valign="top" bordercolor="cornflowerblue" bgcolor="white" cellspacing="0">
<tr>
<td><table class="mcell"><tr><td><a class="mtxt" href="weather.html"><#Spc2>Current Weather<#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="index.html"><#Spc2>CTO Home<#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-about.html"><#Spc2>About<#Spc2></a></td></tr></table></td>
<td><table class="ccell"><tr><td><mctxt><#Spc2>News<#Spc2></td></tr></table></td>
</tr>
<tr>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-forecasts.html"><#Spc2>Forecasts<#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-warnings.html"><#Spc2>Warnings<#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-records.html"><#Spc2>Records<#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-normals.html"><#Spc2>Normals<#Spc2></a></td></tr></table></td>
</tr>
<tr>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-temp.html"><#Spc2>Temps<#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-press.html"><#Spc2>Baro+RH<#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-winds.html"><#Spc2>Winds<#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-rain.html"><#Spc2>Precip<#Spc2></a></td></tr></table></td>
</tr>
<tr>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-today.html"><#Spc2>Today<#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-yesterday.html"><#Spc2><@YDW:TF><#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-tomorrow.html"><#Spc2><@WDW:TF><#Spc2></a></td></tr></table></td>
<td><table border="1" bordercolor="red" bgcolor="white" cellspacing="0"><tr><td><a class="mtxt" href="w-query.html"><#Spc2><font color="red">Query</font><#Spc2></a></td></tr></table></td>
</tr>
<tr>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-thismonth.html"><#Spc2>This Month<#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-lastmonth.html"><#Spc2><@LDM:TF><#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-nextmonth.html"><#Spc2><@NDM:TF><#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="diags.html"><#Spc2>Diags<#Spc2></a></td></tr></table></td>
</tr>
<tr>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-thisyear.html"><#Spc2>This Year<#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-lastyear.html"><#Spc2><@PDY><#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-nextyear.html"><#Spc2><@XDY><#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-notices.html"><#Spc2><i>NOTICES</i><#Spc2></a></td></tr></table></td>
</tr>
<tr>
<td><table class="mlcell"><tr><td><mltxt><#Spc2>CTO<#Spc2></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="YOW/weather.html"><#Spc2>Airport<#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-regional.html"><#Spc2>Regional<#Spc2></a></td></tr></table></td>
<td><table class="mcell"><tr><td><a class="mtxt" href="w-national.html"><#Spc2>National<#Spc2></a></td></tr></table></td>
</tr>
</table>
</td> <!-- End of TopMenu -->

</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%" cellspacing="0" cellpadding="5">
<tr class="groupheading"><td><p class="groupheading">Makeover</td></tr>
<tr class="body">
<td>
<p class="subheading">2016-12-27</p>
I'm giving the site a bit of a makeover. Not messing much with the tables; they are what they are. Hopefully the new colour scheme will enhance readability.<br />
<br />
It's actually just taking a few minutes per page. Most of the changes are CSS adjustments.<br />
<br />
-Bill<br />
<br />
</td>
<tr class="groupheading"><td><p class="groupheading">Sensors Restored</td></tr>
<tr class="body">
<td>
<p class="subheading">2016-11-19</p>
I've taken apart and repaired the main part of our primary sensors; you'll notice we have wind statistics again.<br />
<br />
The rain gauge is still out. It might simply be shot batteries; those will have to wait until I'm working again. Not a huge loss; it's nearly winter, and those who know Ottawa
know it doesn't rain here much through the winter months.<br />
<br />
-Bill<br />
<br />
</td>
<tr class="groupheading"><td><p class="groupheading">Backup Sensors</td></tr>
<tr class="body">
<td>
<p class="subheading">2016-10-02</p>
We're up and running again, on backup sensors. I'm just getting some of the contrast threshold settings tweaked, and MCOCR is back to capturing at close to 100%. This, by the way,
can be verified by visiting the <a href="diags.html">Diags page</a> and checking the daily and weekly Hits vs. Misses.<br />
<br />
In accordance with the loss of three points of data per scan (Wind Bearing, Wind Speed and 5-minute rainfall), each scan now records 7 possible hits, rather than 10. Maximum possible
hits per typical day now 2016.<br />
<br />
I've tweaked MCOCR a bit more; the feature set at this point is nearly complete. I would love to add complete value/character management right on the console, but that would require
rewriting the parameters file, which means an intelligent routine that recognizes what data simply to copy over and what data to replace. Not right now. On my agenda for the near
term: cleaning up the extra-sky buttons and code; doing some tweaks to MCH, and getting some work done on my virtual chip. In my spare time, I'm working on three novels: "Space
Pirate," "The Zero Point" and "Alien Base". (The first, I'm fleshing out and giving a thorough proofing; the second, I'm about two chapters in; the third, I'm writing the outline
and planning the chapters.) I'm also writing a couple of scripts for my radio-comedy show. Busy, busy...
<br />
-Bill<br />
<br />
</td>
<tr class="groupheading"><td><p class="groupheading">Sensors Down</td></tr>
<tr class="body">
<td>
<p class="subheading">2016-09-25</p>
We've been having bad luck recently. In this latest episode, the weather senosrs have gone down. I've tried diagnosiing and fixing the problem, but to no avail.<br />
<br/>
We'll switch over to backup sensors in the next couple of days, and that's how it's going to have to be for a while; I'm unemployed again and can't afford a replacement
weather station. So, for the time being, we'll have no wind or precip data, nor any of their derivatives (e.g. Wind Chill).<br/>
<br />
-Bill<br/>
<br />
</td>
<tr class="groupheading"><td><p class="groupheading">Downtime</td></tr>
<tr class="body">
<td>
<p class="subheading">2016-09-14</p>
Well, we've had some server downtime, for the first time in about 4 years. What I at first thought was a corrupted file turned out instead to be
a byte-sized variable trying to hold a word-sized argument. It took the four years for the value in question to get large enough. It just
emphasizes the importance of appropriate variable sizing and limits checking.<br />
<br />
Once the bug was fixed, it was only the work of a few minutes to re-feed it the live readings it had missed.<br />
<br />
-Bill<br/>
<br />
</td>
<tr class="groupheading"><td><p class="groupheading">More Tweaks</td></tr>
<tr class="body">
<td>
<p class="subheading">2016-07-29</p>
I've overhauled MCOCR and made it much more workable and accurate. First, it now sports a menu bar, with helpful entries that actually work.
Second, you can now 'seed' the precip-to-date recorder with either 0, or the current precip value, to eliminate the persistent-nil that otherwise
haunts a new sensor. Third, there are now fully-working adjustments for the current Location, Value and Character. They are enabled only in
Adjustment Mode (formerly known as "Test Mode"). Fourth, I've reworked the display-current-value routine in Adjustment Mode; it is now quite
responsive. The segment-threshhold tweak from last iteration was just the trick; capture is now all but perfect. I've just a few more tweaks I want
to put into this program, but it'll probably be at a later date; I want to get back to some of the other projects I'd been working on, including
iLog and companion mobile app, a B-Tree unit, a game, a virtual chip, and MCH itself.<br />
<br />
<img width="970" height="546" src="Graphics/CTO/OCR_Software5_970x546.jpg" />
<br />
<br />
-Bill<br />
</td>
<tr class="groupheading"><td><p class="groupheading">Tweaks</td></tr>
<tr class="body">
<td>
<p class="subheading">2016-07-23</p>
I've tweaked MCOCR again, making the vertical scan segments a touch longer. I've also introduced a new 'SegThresh' value to be used
in character definitions, in the .ini file. With SegThresh, you specify a segment number 1-7, and a threshhold value 0-100. That value,
rather than the overall character threshhold value, will determine that particular segment's brightness. This is to allow finer control over
values that often are hard to capture, particularly away from your lighting source where brightness can vary across a character's
width. For example, for some values I get false-positives in the 'bottom' element, but when I adjust the threshhold value downwards, the false-positives
stop and false-negatives creep in, in the the first element. Being able to specify segment threshhold values will eliminate such
results and make the output a little closer to perfect.<br/>
<br/>
-Bill<br/>
</td>
<tr class="groupheading"><td><p class="groupheading">Another Perfect Week</td></tr>
<tr class="body">
<td>
<p class="subheading">2016-05-15</p>
I'm pleased to announce that the CTO has once again captured a perfect week's
observations. In between, we had a week with 1 error. So, in the last three
weeks, the data-capture system has recorded 60,480 discrete items of data and
gotten 60,479 of them correct--a 99.9983% accuracy rate. That's nothing to sneeze
at.<br/>
<br/>
-Bill<br/>
</td>
<tr class="groupheading"><td><p class="groupheading">Paging Radar...</td></tr>
<tr class="body">
<td>
<p class="subheading">2016-04-27</p>
We're having some difficulties with the Environment Canada radar images; they changed
their addresses in the HTML. We're currently tweaking an INI file and should have them
restored shortly.<br/>
<br/>
-Bill<br/>
</td>
<tr class="groupheading"><td><p class="groupheading">A Perfect Week</td></tr>
<tr class="body">
<td>
<p class="subheading">2016-04-24</p>
Well, lightning has struck for a second time at the CTO, in terms of a perfect capture week.<br/>
<br/>
<img height="525" width="960" src="/Graphics/CTO/CTO_Diags_Perfect_20160424_960x525.jpg"><br/>
As you can see from the image above, "Data-Capture Accuracy" (based on Optical Character Recognition
from the LCD weather display), last week, out of 20,150 discrete weather readings,
all 20,150 were valid.<br/>
<br/>
-Bill<br/>
</td>
<tr class="groupheading"><td><p class="groupheading">Downtime</td></tr>
<tr class="body">
<td>
<p class="subheading">2016-04-14</p>
We had some unanticipated downtime on Tuesday, while Hydro Ottawa did some work nearby.<br/>
<br/>
When I got home from work that day, I went to restart the server. It was dead. I happened to notice
that it wasn't even registering that it was plugged in. Well, it turned out that the power supply was
dead, and because I don't easily throw anything away, I had a spare. Problem solved. *Phew*!<br/>
<br/>
-Bill<br/>
</td>
<tr class="groupheading"><td><p class="groupheading">MCXML</td></tr>
<tr class="body">
<td>
<p class="subheading">2016-03-06</p>
I've updated MCXML to v1.20. The changes affect the long forecast string.
It now supports lows expressed as 'plus somethingorother' or 'zero'. Already supported 'minus'. Also,
if there is a POP (probability of precipitation) value for that forecast
period, a 'POP whatever%.' is added.<br/>
<br/>
-Bill<br/>
</td>
<tr class="groupheading"><td><p class="groupheading">Airport Site</td></tr>
<tr class="body">
<td>
<p class="subheading">2016-02-16</p>
I've updated the look of the Airport site; it now features a cleaner, much-brighter
look, with background images. Now to add some pages, and I'm set.<br/>
<br/>
-Bill<br/>
</td>
<tr class="groupheading"><td><p class="groupheading">Ahhh...</td></tr>
<tr class="body">
<td>
<p class="subheading">2016-01-13 (Updated 2016-01-26)</p>
Weather forecasts are restored, as you can see. The outage was caused
by the federal government's changeover to the WET4
format (the standard look-and-feel for all government websites).<br/>
<br/>
Basically put: the format change included adding nights. This and
other things, such as slicing-and-dicing high and low temperature and
POP values, rendered the HTML file from which
I grab forecasts elements much less useful. Now, it's true I could have come up
with a way of deciphering it, going HTML tag-by-tag, but I just wasn't interested. I'm working
again and have limited free time.<br/>
<br/>
I did notice, however, that the old XML feed was being provided again.
It was just a couple of days' work to hack up something that
reads the XML file and extracts the various forecasts elements. It
should work until the XML feed disappears again.<br/>
<br/>
It's not quite perfect yet, but getting there fast. (2016-01-26: It's there.)
I need to modify it
to add the low temperature to each day's spiel, and this morning I
noticed it wasn't capturing the forecast; must look at the XML tomorrow
morning, if it happens again.<br/>
<br/>
In keeping with the new naming convention, I've dubbed it "MCXML". After
adding in some niceties as a help screen and command-line parameters to
control log outputs, it stands at version 1.08.<br/>
<br/>
In other news, I've just about solved my daytime contrast problem. In
Canada's (relatively) northern latitudes, the winter sun shines from a
very low angle, typically 20-25 degrees at noontime. That tends to light
up the CTO Data Capture Stage (which changes the contrast of the image
taken). I've taken measures to ameliorate that,
and they're largely working. I've draped dark cloth over a few areas and
tweaked the contrast settings in my OCR-capture program. By damn, I'll
get it to perfection yet! (2016-01-26: pretty much there.)<br/>
<br/>
I'm back to active development. There will be some updates to MCH soon.<br/>
<br/>
-Bill<br/>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Aha!</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-10-25</p>
<p class="datumn">I had an aha! moment yesterday.<br/>
<br/>
As you may be aware, I was having trouble with my local-data-capture program (wxOCR, not to be confused with the existing open-source product
of the same name). It seemed the top segement was not being captured properly with certain characters, causing confusion and bad data. This was
particularly problematic with the precipitation sensor, where errors can cause a certain amount of precip to be recorded repeatedly.<br/>
<br/>
Yesterday I turned my full attention to the problem and realized it was happening mostly with characters where the upper-left bar was extinguished (2, 3 and 7). Aha!
After a bit of thinking, I realized what the problem was: the detection zone for the upper bar for those characters was too long and was picking up some
whitespace.<br/>
<br/>
Time to get technical.<br/>
<br/>
The program works by measuring the pixel values within each segment, and coming up with an average value. For each character in the detection grid,
you have to specify a contrast value--it's the only way to get reliable results across an image of varying
brightness. Essentially, you have to tell the program where the cutoff value is between dark (lit segment) and light (extinguished segment).
But this presumes that all segments are all-black or all-white. Mixing in some whitespace caused it to fail by lightening the average brightness of that
particular segment. With some
characters, this wasn't a problem; the error-correction recognizes partial characters which, for the most part, are unambiguous. But a seven missing its
top segment is a 1--a legitimate value--and that wreaks havoc with the precip readings when it happens over and over again.<br/>
<br/>
Why primarily the top segment? Because in almost all segemented displays (LED, LCD, etc.), the characters are slanted.<br/>
<br/>
The solution, in a nutshell, was to shorten the upper segment and move it over a bit, so that it only captured the darkened segment. It's now capturing at
near 100% accuracy. Error-correction is kicking in at only a fraction of its former frequency.<br/>
<br/>
Whew!<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Templates Code</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-06-25</p>
<p class="datumn">I've started rolling out template-code view of selected pages; it will eventually encompass the entire site.<br/>
<br/>
Template View is much like the "View Page Source" in your browser, except that it shows the actual source code the page was generated from.
Embedded tags take <#ThisForm> <@OrThisForm>. Tags which borrow from another location's data (for example: YOW) take <@ThisFormat:L YOW>.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Update</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-05-28</p>
<p class="datumn">I'm taking a little break from developing. Job search is not going well, I'm just about out of money,
I've lost my enthusiasm for most things, and I just can't be bothered. So, for a while, the forecasts will be broken.<br/>
<br/>
The City has now painted an embarrassing red X on the sole remaining ash tree out front. Therefore, sometime in the next
three or four years, the skycam field will become completely unoccupied for ten or fifteen years, until the replacement grows
into view. I say three or four years because the City first sprayed a red X on the other tree (cut down just a few weeks ago)
three years ago.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Input Values</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-05-09</p>
<p class="datumn">I've bumped up WxOCR to V2.04. It now displays the indoor Humidex.<br/>
<br/>
I've adjusted the test values for Humidex in systemproperties.ini; you should now see Hx values.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Forecast format change.</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-04-28</p>
<p class="datumn">Environment Harper Canada has adjusted the format of their forecasts. It may be a couple or three days before I can get to it.<br/>
<br/>
In the meantime, the forecasts on the weather page will be messed up.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Musings</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-04-25</p>
<p class="datumn">I've updated WxOCR to V2.02; I upped the number of character validation entries to 60--the list is getting long with partial-character entries.<br/>
<br/>
This week, the City came and cut down the diseased ash tree next door. You can see the results in the <a href="w-querycam.html">webcam query page</a>. Despite having a clear view if I shift the webcam
slightly to the left, I've decided, for at least the time being, to keep the other two trees in view, for a fixed reference point. Rationale: more than half the frame is now
open, and I've set the sweet spot (i.e. the one-ninth section that WxSky uses to recognize the sky condition) in WxSky to Zone 6 (lower-left-hand corner). This patch is (now)
always guaranteed open; so shifting the cam gains me only some more empty sky.<br/>
<br/>
I've also changed the look of the security cam picture in the <a href="home.htm">home page</a>; I moved the banner to the top and added in the seconds, since it actually images
four times per minute.<br/>
<br/>
I'm having a whale of a time with MCH. Every time I get to a certain point, it starts failing; a data structure that exists is fine on the first two passes, then disappears.
I'm pretty sure I've run into a compiler bug; I'm now perusing FPC/Lazarus bug reports and investigating work-arounds. <i>NB: it </i>is<i> a compiler bug, and I am now working on workarounds.</i><br/>
<br/>
That's it for now.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Oops</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-04-18</p>
<p class="datumn">Version 3.82 didn't fly. There was a weird bug when trying to open readings--I'm just glad I caught it before the restart.
Too many changes to the code in one go. I've reverted to version 3.80 and am rewriting the changes.<br/>
<br/>
I've really focused on trying to find work--anything!--the last few weeks.<br/>
<br/>
I have tweaked WxOCR to return nil values for dew point upon nil inputs. I was having a problem with the wrapper routine. Fixed. V 2.00.<br/>
<br/>
See you in a few more weeks.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">v 3.82</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-03-28</p>
<p class="datumn">I've got MCH v 3.82 queued up for the Sunday-morning restart.<br/>
<br/>
This version much improves records generation. In addition, there are internal checks to make sure bad dates don't get into the dataset.<br/>
<br/>
I've also added a form to the Queries page: Stats Input Form.<br/>
<br/>
The Extra Sky page has been updated with new options. WxOCR up to v 1.94, for those who are keeping score.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Updates</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-03-25</p>
<p class="datumn">WxOCR, the local-data-capture program, is up to v 1.92. I squashed an emergent bug to do with precipitation.<br/>
<br/>
The update to MCH is taking longer than anticipated. I'm still getting odd values for precip and sunshine. I'm debugging heavily to try and
find the problem; it seems to be related to an odd value being kept for sunshine when (otherwise) zero. I'll try something today and see if it
works.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">New Diagram</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-03-21</p>
<p class="datumn">I submit to you a functional block diagram of the system as it now stands. It gives a very good idea of how the programs all work together.<br/>
<br/>
<img width="960" height="720" src="Graphics/CTO/Functional_Diagram.jpg"/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Perfection</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-03-19</p>
<p class="datumn">I'd just like to point out that the data capture has been, thus far this week, perfect. There--that's bound to jinx it in the next few minutes! [Surprise, surprise--
it didn't; the entire week was perfect.]<br/>
<br/>
That's not to say that the OCR program isn't making a few mistakes. However, it's automatically correcting the mistakes it is making. It's funny--auto-correction is an inherent
property of the system, even though it wasn't planned that way.<br/>
<br/>
Speaking of said OCR program, it's up to v 1.90; I've added buttons for other conditions and added carry-through between runs, so a longer time period for a second sky condition
is not a problem. A countdown timer (which resets to 20 minutes) indicates how long is left. Here's a screenshot:<br/>
<img width="800" height="450" src="Graphics/CTO/ocr_software3_800_450.jpg"/>
<br/>
Needless to say, me happy and looking forward to getting a build in for the Sunday-morning restart.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">More Tweaks</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-03-12</p>
<p class="datumn">I've gone ahead and released v 3.80, which fixes an obscure internal time bug and introduces daily rollover to the location stats. It also fixes the
forecasts-submissions bug - I had to!<br/>
<br/>
Should be the last significant change for a while.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Tweaks</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-03-11</p>
<p class="datumn">I've added a multiplier (4.0x) to the wind speed, to generate more-realistic values. In doing so, I had to tweak the local-data-capture program.
That's WxOCR v 1.84c.<br/>
<br/>
I know there have been lots of little changes lately. That's likely to let up for a while; I'm going to concentrate on bug fixes and just let the system do its thing.
I don't have any good ideas for new features for now. I'll give that some thought.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Additional Observation Form</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-03-09</p>
<p class="datumn">I've added a new form, to allow additonal sky conditions to be reported.<br/>
<br/>
The <a href="w-extrasky.html">Additonal Observation Page</a> allows you to specify a second sky condition and a duration in minutes. I've hooked it up through the CGI-BIN
interface, and it should just work for you. Remember to use the "submit outside" button (there's a better way, and I'm working on it), and also remember that it may take
up to five minutes before your update shows.<br/>
<br/>
Also, now when rain is detected (and lately it has, as the rain sensor slowly thaws out), the second sky condition is set to 'Rain' for 20 minutes, automatically.<br/>
<br/>
WxOCR is now up to v 1.82, and wxupdates to v 1.22, for those who are keeping score.<br/>
<br/>
Incidentally, on the Diags page, the number of forecasts accepted will always be a little higher than submitted. This is because the forecast is stored in an external file and
read at runtime. As it doesn't go through the usual submission process, it's not counted as a submission. A bigger hassle to fix than just to leave alone.<br/>
<br/>
Enjoy!<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">New Versions</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-03-07</p>
<p class="datumn">I've released a new version (1.78) of the OCR local-data-capture program (WxOCR) (which, incidentally, has been operating almost glitch-free this week).<br/>
<br/>
This verison includes buttons to temporarily manually assign a second sky conditon (ie "Cloudy, Light Snow"). A covenience for when I'm around and note phenomena that the
station isn't good at catching in realtime--rainfall, snowfall, visibility. I'll work in a way and a form to submit the same thing remotely.<br/>
<br/>
I've also upgraded MCH to v3.78. This includes extended enhanced statistics, as seen on the <a href="diags.html">Diags page</a>.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Input Fix</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-03-02</p>
<p class="datumn">I believe I've finally resolved a long-standing bug with erroneous dew point values. Make that v. 2.16 for wxhtml (the program that captures
web data every five minutes).<br/>
<br/>
While I was at it, I beefed up the <a href="w-regional.html">Regional</a> and <a href="w-national.html">National</a> pages to display extra stats and get rid of others.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">v3.76</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-02-27</p>
<p class="datumn">I've released v 3.76, which (a) fully fixes yesterday's fix (had a bug with dates); and (b) changes the system so that it won't just grab the first forecast
for a new period; it will grab all subsequent, as the forecast sometimes changes. (Forecasts are updated every five minutes from source.)<br/>
<br/>
Enjoy.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">v3.74</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-02-26</p>
<p class="datumn">I've released v 3.74, which changes the way submitted values are read: now a NIL value will not replace a valid value. This is in effect
for normals and records import.<br/>
<br/>
Had a little fall-apart for a few hours yesterday morning; forgot to use the test server, and web-captured values were all over the place. Won't make that mistake again.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Enhanced Stats</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-02-22</p>
<p class="datumn">I've released version 3.72, which incorporates an extended statistics set. The new values are on the <a href="diags.html">Diags page</a>.<br/>
<br/>
There'll probably be more of these little enhancements over the next little while.<br/>
<br/>
This project is slowly growing beyond my ability to maintain it--it's up to 14,812 lines of source code, plus all the auxiliary files. At the same time, I can see
how much work I have to do before I open-source it. Kind of a catch-22.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Master Recalc Appears</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-02-21</p>
<p class="datumn">I've released version 3.70, which supports a Master Recalc query. Just give me a day or two to work on the <a href="w-masterrecalc.html">page itself</a>.<br/>
<br/>
Enjoy.<br/>
<br/>
-Bill<br/>
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Wind Chill</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-02-16</p>
<p class="datumn">I noticed in the wee hours last night that the Wind Chill value was not getting passed to the front end. After a lot of investigation into the capture program,
which, incidentally, was working just fine, I realized that my bounding values (in the System Properties) were incorrect. Those were something I'd only recently added.
As a result, Wind Chills greater (lesser) than -10 were being thrown out. Simply adding a zero to a single parameter fixed it permanently. Wind Chill is tracked both for CTO
and for the airport.<br/>
<br/>
The lesson here? Be very mindful of operating parameters.<br/>
<br/>
Oh, and I've changed the live-data-capture program always to give a value for wind chill for ambient temperatures at or below -5C.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Troubles</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-02-15</p>
<p class="datumn">The Master Recalc function is taking a little longer than anticipated. It's a huge procedure (nearly 700 lines so far),
and there's a lot of math and a ton of transactions involved. As my primary focus at present is to obtain employment, it'll be ready when it's ready.<br/>
<br/>
I have upgraded the web-capture program to catch wind gusts; something I overlooked earlier. You'll notice that on the <a href="/YOW/weather.html">Airport page</a>.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Master Recalc</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-02-09</p>
<p class="datumn">Coming in the next 48 hours or so: Master Recalc. This lets you recalculate the data from source (live
readings or daily observations). Optionally, you can recalculate Limits (highs/lows/averages), Extremes, Records, and Normals.
You can select for daily, monthly or yearly recalculation. It's really a multipurpose query. I've got just a few little bugs left in it,
then I set it loose.<br/>
<br/>
A page is in the works. You can see it <a href="w-masterrecalc.html">here</a>. It's under the queries page.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Version Release</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-01-25</p>
<p class="datumn"></b>The software is up to v 3.60.<br/>
<br/>
Among the changes: added system properties defining data-parameter bounds for better data verification.<br/>
<br/>
I'm working on the time problem with displaying sunshine. Should be done soon.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Records</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-01-24</p>
<p class="datumn"></b>You'll notice on the Records page a couple of new sections: Administrative Info and Calculate Records. The latter allows
you to calculate records over any date range (bearing in mind that data has been collected at CTO only since 2001). Be the first in your
neighbourhood! Just remember to use the [submit outside] button.<br/>
<br/>
This section took some work. A lot of variables being manipulated.<br/>
<br/>
My test machine has been invaluable, these past few releases. It lets me fully debug my software in s simulated production environement
before releasing it. There may still be a glitch or two in this latest release, but I'll iron them out quickly enough.<br/>
<br/>
Incidentally, the wind sensor came back at about Noontime Thursday. Guess the days have gotten long enough for it to build up a charge.
I am tracking it again.<br/>
<br/>
The software is now at version 3.54. I also added support for a couple of new directives (regenerate a location, or all; and reload system
properties.) Several new data-output tags are also available, associated with records.<br/>
<br/>
Now to update the documentation. Eesh!<br/>
<br/>
Enjoy!<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">System Properties</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-01-15</p>
<p class="datumn"></b>I've added some System Properties. There's now a number of parameters set in there, and it will expand in future.<br/>
<br/>
A System Property is just a basic string, integer or boolean setting with a name. I've written a module to handle them almost transparently.<br/>
<br/>
I'm using them to handle list-type settings; what to track for the hit-accuracy counter, things like that. You'll notice I've disabled tracking the
wind readings for the winter.<br/>
<br/>
Still working on records recalculation. That's still going to take a bit of time.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">New Feature</td></tr>
<tr class="body">
<td>
<p class="subheading">2015-01-11</p>
<p class="datumn"></b>As promised. a new feature has been added to the system: <a href="w-normals.html">Normals</a>.<br/>
<br/>
The new normals page displays the normals for the day, month and year. It also displays some administrative information about
the normals set. Finally, a section at the bottom allows you to calculate normals for yourself.<br/>
<br/>
Note that normals are currently limited to temperature and precipitation, just as with the government. This may expand in future.<br/>
<br/>
Next up: recalc records. That's a little more of a challenge; it'll take a little while longer.<br/>
<br/>
I did fix a bug. Recently, I had added a new debug module, which works much more like the java module I'm accustomed to. That meant
deleting quite a few lines of code. An unplanned
side-effect was that for any location that had records passed to it, that location's pages wouldn't be updated (unterminated begin..end block
[don't you laugh--curly braces mean the exact same thing!] leading to another block which tested for the need to regenerate the pages).
As the Airport always has records passed to it, that means the Airport pages weren't being updated. Moving a comment marker five characters
to the left fixed it.<br/>
<br/>
Actually, make it two bugs: I've fixed the forecast-graphics bug.<br/>
<br/>
Incidentally, my wind sensor seems to have frozen up for the winter. Made in California; what can one expect? Bah!<br/>
<br/>
Enjoy.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Data Feed</td></tr>
<tr class="body">
<td>
<p class="subheading">2014-12-27</p>
<p class="datumn"></b>Environment Harper Canada changed their page layout around mid-October; the feed has been down since that time.<br/>
<br/>
I've finally finished rewriting the data-capture tools. There are two of them: wxhtml, which pulls observations, statistics and the forecast
out of the page; and wxrec, which harvests data (normals and records) from the records page for a given location. I'm pleased to report that
they largely work as advertised, again. One little bug to iron out with nightly forecasts--should get it tonight.<br/>
<br/>
Regional and National feeds have been restored.<br/>
<br/>
Hopefully, it will be some time before another page redesign.<br/>
<br/>
Incidentally, as you can see from the Capture Accuracy indicator, I'm still using the OCR system to capture local data. It's working quite
well, and provisioning a windows machine 24/7 just for data capture is too much. I'm not going to use the automatic data collector dongle.<br/>
<br/>
Also incidentally, I'm working on adding a couple of new features to MCH. One will calculate normals for a given range of dates and also
report back on whether they meet the WMO criteria for normals. The other will recalculate records. Expect these new features in the next couple
of weeks.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Growing Pains</td></tr>
<tr class="body">
<td>
<p class="subheading">2014-07-11</p>
<p class="datumn"></b>Lord dying, there's days when I just want to pull my hair out.<br/>
<br/>
You may have noticed the other day that readings got really screwy for some hours. It all started with adding a new feature to the
OCR program the system uses for local data capture. Well, I decided I wanted to add math parameters; adjust values before output.<br/>
<br/>
Now, y'know me by now; I like to KISS, wherever and whenever possible. I added parameter support, and it just worked. Happy, I let the
new release loose. Within 15 minutes or so, it was applying the adjustment I had specified for the barometric pressure, to everything!<br/>
<br/>
Out come the development tools. And, a whole bunch of hair-pulling later, a version of the software which would do as it was intended to
do.<br/>
<br/>
Phew!<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">New Equipment</td></tr>
<tr class="body">
<td>
<p class="subheading">2014-07-05</p>
<p class="datumn"></b>New equipment arrived last night; a Lacrosse 2811U. Setup complete.<br/>
<br/>
Wind and precip readings (such as they are) are restored. And, should I choose to use it, it comes with data-capture capability to a
PC. As it stands, the OCR software is capturing nigh-perfectly; might not choose to use it.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">24/7</td></tr>
<tr class="body">
<td>
<p class="subheading">2014-06-29</p>
<p class="datumn"></b>The server is now running 24/7, with a reboot on Sunday mornings to clear out the cobwebs.<br/>
<br/>
New hardware is clearing customs now and should be in my hands within a week or so.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Nice</td></tr>
<tr class="body">
<td>
<p class="subheading">2014-06-21</p>
<p class="datumn"></b>My test environment has been a godsend; I've released two bugfixes since I set it up.<br/>
<br/>
I have new hardware coming; a Lacrosse model. Should hopefully be here by the end of the week.<br/>
<br/>
Today is the solstice; in less than an hour's time, in fact. Sad, really, that summer's just getting going, and it's all downhiill
from here.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Oh Yeah</td></tr>
<tr class="body">
<td>
<p class="subheading">2014-06-14</p>
<p class="datumn"></b>I really should have set up my test environment long ago. It just makes things so much easier.<br/>
<br/>
Bugfix: changed how warnings were timing out. The upshot is that YOW weather warnings will again be replicated on the CTO weather screen, and
all warnings should time out after six hours. That figure may be adjusted.<br/>
<br/>
Software is up to v 3.16.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Test Environment</td></tr>
<tr class="body">
<td>
<p class="subheading">2014-06-06</p>
<p class="datumn"></b>I realized recently that the code needs a bit more work before I release it. To this end, I'm creating a test environment,
should have, in fact, long ago.<br/>
<br/>
I've provisioned a virtual machine and installed my favourite brand of Linux, Debian. I'm in the process of setting it up; then I'll have a
proper test environment for my software.<br/>
<br/>
Of course, I've fashioned a shell script to divert all the incoming data to the virtual machine (as well as the eerver). There are numerous
points where files are moved around; a single DIVERT command sets this up automatically.<br/>
<br/>
I'm liking this very much. I can now play with my software in a stable test environment until I get it right, and the 'official' server just
runs and does its job; no fuss, no muss. as they say.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Some Changes</td></tr>
<tr class="body">
<td>
<p class="subheading">2014-05-11</p>
<p class="datumn"></b>About two weeks ago, I had Bell Fibe installed; TV, Internet, home phone. Good deal; beats the hell out of the Rogers
serivce we've been stuck with for years.<br/>
<br/>
There have been several side effects. First off, the standard install comes with a wireless router, so I gradually got all my network switched
over to that. That went relatively painlessly, though there were a few hiccoughs around changing over from a 192.168.* schema to a 10.0.*.--mostly
with the wireless TV receivers. But I got there in the end.<br/>
<br/>
The second was a little tougher to figure out. As you know, I keep a dynamic hostname to allow Internet access to my site; it's updated
automatically by a client, and it always seems to work.<br/>
<br/>
For a few days, it stopped working. This was partially my fault; I had had my old router doing the updating, and it wasn't getting the right
address. I switched over to the new router, and it started working. In the meantime, there was a problem with my old router insisting on behaving
like a router and not a simple network hub. So off to buy a network switch.<br/>
<br/>
I got the switch installed; bam--up comes the Internet. Problem: I can't access the dynamic hostname. Later in the day, from work, it was working.
When I got home, it wasn't working again. Curiously, this happened for the next two days, until I figured it out: locally, the system was no longer
allowing access through my dynamic hostname. I pointed all my browsers to the source machine--gypsy--instead, and all was working.<br/>
<br/>
The last change I made was to my custom homepage (<a href="http://mizar64.dyndns-home.com:64180/home.htm">http://mizar64.dyndns-home.com:64180/home.htm</a>
if you're interested), to allow access to the Raspberry Pi from home or work. It's kludgy, but it works.<br/>
<br/>
Incidentally, I'm working again and temporarily taking a break from developing (I'm a developer professionally, so I've got my eyes full of Java
code during the daytime). I'll get back to it in a couple more weeks.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Data Glitch</td></tr>
<tr class="body">
<td>
<p class="subheading">2014-04-01</p>
<p class="datumn"></b>The past few days, readings have been sparse. The OCR program was crashing out, and I didn't have time to see why.<br/>
<br/>
I finally got a look a few moments ago and immediately noticed why: one of the elements of the OCR program is the ability to define
'validation mappings' for each character. In other words, this combination of elements lit up equals character X. I had originally allocated
for 12 validation mappings per character; but recently I realized that the OCR program could actually do error-corrections: if a certain pixel
is added to or removed from certain characters, a distinctive pattern appears. So why not harness that and make the OCR program much more
fault-tolerant? Well, it turned out that in adding the additional mappings, I overshot the limit of 12. Easy fix; five minutes.<br/>
<br/>
The lesson to be learned here? Always allocate amply for your data needs.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Open-Sourcing Headaches</td></tr>
<tr class="body">
<td>
<p class="subheading">2014-03-15</p>
<p class="datumn"></b>Open-sourcing this project is taking rather longer than expected.<br/>
<br/>
As I go through the various codebases and document everything, I can see a bunch of little deficiencies, which I'm correcting as I go.<br/>
<br/>
Probably not going to go open-source until next month, at the earliest.<br/>
<br/>
Ah, well; a necessary evil.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Makeover</td></tr>
<tr class="body">
<td>
<p class="subheading">2014-03-03</p>
<p class="datumn"></b>'Working on the site aesthetics' meant 'giving all the pages a makeover and enforcing more CSS compliance.' Tis nearly
done, now; just a few pages to polish off.<br/>
<br/>
I've been working on documenting the system, prior to open-sourcing it. I'm up to about 60 pages so far and have barely begun documenting all
the little programs that help make up the system.<br/>
<br/>
Definitely a work-in-progress.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Getting Ready to Go Open Source</td></tr>
<tr class="body">
<td>
<p class="subheading">2014-02-13</p>
<p class="datumn"></b>I've decided to open-source the system; it's matured to that point, I think. So time now to turn it loose and see
if the public chews.<br/>
<br/>
Not much development work going on lately; with the addition of the ability to detect whether a tag has data, or not, it does everything
I want of it. I'm only working on the site aesthetics, now.<br/>
<br/>
To that end, I've been working on documenting the entire system, including something like 7 support programs. I'm up to 41 pages, now,
and still have probably 20 to go. Then I've got to invent and document the install process (the original system evolved in-place); and
I've provisioned a machine for that.<br/>
<br/>
I'd estimate that the code will go up on SourceForge within the next couple of weeks, if I don't find work; or a couple more if I do.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Bigger Outage</td></tr>
<tr class="body">
<td>
<p class="subheading">2014-01-31</p>
<p class="datumn"></b>Our outage the other day turned out to be more major. In the act of replacing the batteries on the receiver,
I managed to break the thing; it just resets now, over and over.<br/>
<br/>
We're now running on backup sensors, which means no precip or wind data. Until I'm working again, and can afford a replacement, this is
indefinite.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Outage</td></tr>
<tr class="body">
<td>
<p class="subheading">2014-01-24</p>
<p class="datumn"></b>We had an outage this morning, as the batteries in the CTO weather receiver
gave out.<br/>
<br/>
It is testament to the system that it took just minutes to get back online.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">New Page</td></tr>
<tr class="body">
<td>
<p class="subheading">2014-01-17</p>
<p class="datumn"></b>I've added another new page to the system: <a href="w-querycam.html">Webcam Query</a>.<br/>
<br/>
This page lets you look up archival webcam snaps from the last two years.<br/>
<br/>
Enjoy.<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Yet Another New Page</td></tr>
<tr class="body">
<td>
<p class="subheading">2014-01-02</p>
<p class="datumn"></b>I've added a new page to the system: <a href="diags.html">Diagnostics</a>.<br/>
<br/>
This page displays some internal data about the system and the 29 locations it tracks.<br/>
<br/>
Also, I tweaked how Daylight Saving Time was displayed. It was an hour later, rather than an hour earlier. Output issue only.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">Another New Page</td></tr>
<tr class="body">
<td>
<p class="subheading">2013-12-30</p>
<p class="datumn"></b>I've added a new page to the system: <a href="w-national.html">National</a>.<br/>
<br/>
Just to demonstrate the power of the system, adding in 15 new locations today took just a few hours, most of that looking up information
and messing with support scripts. Still hasn't added appreciable load to the system.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>
<tr class="groupheading"><td><p class="groupheading">New Page</td></tr>
<tr class="body">
<td>
<p class="subheading">2013-12-27</p>
<p class="datumn"></b>I've added a new page to the system: <a href="w-warnings.html">Warnings</a>. Again, it merely recaps info
available elsewhere in the system.<br/>
<br/>
Inicidentally, although I doubt you'll notice it, wxhtml (the component that reads in stats and observations from Environment Harper Canada)
has been tweaked to output stats for the proper day. Prior to this, the values were only correct after the 5am forecast, and always
backdated.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>

<tr class="groupheading"><td><p class="groupheading">Graphic</td></tr>
<tr class="body">
<td>
<p class="subheading">2013-12-25</p>
<p class="datumn"></b>I've put together a graphic showing the various components of the system. Mostly because I'm proud of it and
what it can do. Note that while outside data is not currently received, there is no reason why it can't, by way of the CGI-bin interface.
Also, technically, the Query form operates through the CGI-bin interface as well. The Stats Form you don't see, as it is for entering
stats directly into the database. The Web Capture involves all the outside stats and images, including everything from Environment Harper Canada.
The web pages are refreshed every five minutes, as new local readings come in.<br/>
<br/>
Some other changes recently include the breakout of precipitation data and the introduction of the Stats form itself. As mentioned, it is
available only to me, to input stats directly into the system. Some things are not automatically measured, here at CTO, and one of them
is snowfall. I can now input my daily estimates of snowfall, making the breakout possible.<br/>
<br/>
Here's the graphic:<br/>
<img src="Graphics/MCHBlockLayout.jpg"/><br/>
<br/>
-Bill<br />
</p>
</td>
</tr>

<tr class="groupheading"><td><p class="groupheading">New Addition</td></tr>
<tr class="body">
<td>
<p class="subheading">2013-12-18</p>
<p class="datumn"></b>Special Weather Statements from Environment Harper Canada are now supported. They'll now show up, at the top
of the page with other weather warnings, in grey. When there are no warnings, nothing is displayed.<br/>
<br/>
The government recently changed its regional warnings graphic, which has been restored. I had to change how the image
link was extracted.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>

<tr class="groupheading"><td><p class="groupheading">New Function</td></tr>
<tr class="body">
<td>
<p class="subheading">2013-12-17</p>
<p class="datumn"></b>I've added a new page: <a href="w-query.html">Query</a> and highlighted it in the menu.<br/>
<br/>
The Query Page lets you perform live queries of the database, but it takes a little learning,
as data tags are involved. It took little new coding; I easily adapted from existing code for grids. The Query Page is
based heavily on JavaScript and sends the data by POST to the CGI-BIN server, in XML format. The queryhost waits around just
long enough to see the response file from the server, waits one second longer for any write-file/close-file issues, and feeds
it back to you. I'll soon add one to the Airport.<br/>
<br/>
Just give me a couple days to get the help pages in order; I'm busy looking for work.<br/>
<br/>
The power of the tagset becomes clear once you get used to the page. Try opening the
<cite>CLICK HERE FOR HELP</cite> in a separate tab, and beware--it changes according to the interval you've selected
(and whether or not you've entered a start time).<br/>
<br/>
The real star of the show is the One-Time interval, as it allows you access to the entire tagset. Each of the others is
necessarily limited.<br/>
<br>
Incidentally, I'm now hosting my sourcefiles on subversion. Fairy easy to set up, and a breeze for keeping sourcefile issues
straight.<br/>
<br/>
Enjoy.<br/>
<br/>
-Bill<br />
</p>
</td>
</tr>

<tr class="groupheading"><td><p class="groupheading">New Pages</td></tr>
<tr class="body">
<td>
<p class="subheading">2013-10-04</p>
<p class="datumn"></b>
I've added two new pages to the system:<ul>
<li><a href="w-regional.html">Regional</a></li>
<li><a href="w-forecasts.html">Forecasts</a></li>
</ul>
<p class="datumn">So far, nothing special about those pages--they just recap information found elsewhere
on the site.<br/>
<br/>
-Bill<br />
</td>
</tr>

<tr class="groupheading"><td><p class="groupheading">System Restarts</td></tr>
<tr class="body">
<td>
<p class="subheading">2013-09-21</p>
<p class="datumn"></b>
I've restarted the system a number of times this morning; the only way you'd know
were if you tracked the new Capture Accuracy stat, which I've added to the main page;
for each of the major items fed into the system from the capture system (Temperature,
Relative Humidity, Wind Speed and Bearing, Precip, Sunshine, Barometric Pressure)
, it records a
hit (record received intact as expected), or a miss (record received as Nil).<br/>
<br/>
I've added this in as a check against accuracy and just because it's another little
nicety to have.<br/>
<br/>
At this point, the system is humming along with no remaining bugs; it's time to start
working on a scripting language.<br/>
<br/>
-Bill<br />
</td>
</tr>

<tr class="groupheading"><td><p class="groupheading">Records Reset</td></tr>
<tr class="body">
<td>
<p class="subheading">2013-09-14</p>
<p class="datumn"></b>
I've reset the all-time records for the CTO location, as it was giving me grief
although the code looked fine. Turns out the data file was corrupted, and I'll
keep an eye on it for the next little while.<br/>
<br/>
Precipitation has been tracked for about the past week, although not reliably,
as the sensor is heavily overgrown with delicious beans at the moment. Nonetheless,
it gives a good picture of the precip goings-on here at the CTO.<br/>
<br/>
That's just about all remaining issues. Now to move onto implementing some
niceties from my wish list.<br/>
<br/>
-Bill<br />
</td>
</tr>

<tr class="groupheading"><td><p class="groupheading">Remaining Issues</td></tr>
<tr class="body">
<td>
<p class="subheading">2013-05-25</p>
<p class="datumn"></b>
After some hiccoughs, the system is now working excellently. Error rates have dropped well
below 1%.<br />
<br />
I still have issues with the preciptation sensor and its spurious readings. I've been desperately
waiting for it to rain, during a time I'm home, to see if I can do anything about it.<br/>
<br />
Data-capture from Environment Harper Canada is nigh-perfect, with just one issue remaining on
overnight forecasts. I expect I'll remedy that today.<br />
<br />
I'll be posting new pics today of the operational elements of the system.<br />
<br />
-Bill<br />
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">Changes</td></tr>
<tr class="body">
<td>
<p class="subheading">2013-05-01</p>
<p class="datumn"></b>
There've been a few changes over the past little while.<br />
<br />
First off, the system now includes a Dr. Tech WA-1070T wireless
Solar system (though I'm still reading values off an LCD). Second,
the data-capture system now runs on the former server. Third, the
new server is a laptop of ca. 2005 vintage, with 1MB of RAM and scads of
disk space. It hardly feels the load.<br />
<br />
The system now records wind velocity and bearing (although, given
the proximity of trees and buildings, it must be taken with a grain
of salt), plus precipitation. Which doesn't work, due to the spurious
readings it's inclined to give.<br />
<br />
The data-capture software has been upgraded and now scans the LCD
pixels quite efficiently. The input includes a sky component and auto-
calculation of Dew Point, Wind Chill and Humidex values.<br />
<br />
Environment Canada very recently changed their data format, ending their
support for RSS (xml) products. This necessitated a complete rewrite of
that capture software, which now takes its inputs directly from the
html publicly available.<br />
<br />
Everything is <i>finally</i> ticking over nicely again.<br />
<br />
-Bill<br />
</td>
</tr>
<tr class="body"><td> </td></tr>

<tr class="groupheading"><td><p class="groupheading">Oops...</td></tr>
<tr class="body">
<td>
<p class="subheading">2012-08-25</p>
<p class="datumn"></b>
Operation has been slightly spotty in the past few days, due to limited disk space.<br>
<br>
The system makes a backup of all data, every night. Given that, for example, the Ottawa Airport has daily records going back to 1938,
plus backups of all data captured since early this year (one of my prime tenets is that the preserved input data must be able to
reconstitute the full dataset--just in case), that's a lot of data on an older, storage-limited computer.<br>
<br>
I've freed up some space and will now teach the system to run one full backup per week, plus incremental backups of the input data only.
That'll greatly cut down on space requirements while still preserving the full dataset.<br>
<br>
There is a major error in the YOW precipitation data. I'll correct that in the next week or so (by reconstituting the dataset).<br>
<br>
-Bill<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">Looking Better</td></tr>
<tr class="body">
<td>
<p class="subheading">2012-07-12</p>
<p class="datumn"></b>
I've been tinkering with the system now and then, when I have time. Over the last month or so, I've added weather warnings, an events
calendar, and graphics for current and forecast conditions. The images I created myself; they're cartoonish, but they get the job done.
I'll package them up and release them free, at some point; if you'd like a copy, email me at mizar64@gmail.com.<br>
<br>
I'm now incorporating some JavaScript into the pages. It's trivial to interface the stats system with JS, through data
tags in each page. This allows for on-the-fly conversions (and once I decide on how to effect data persistence, you'll be able to set a
preference when you visit the site), or for math (differences between actuals and normals, for example), without
having to add more code to the system and further complicate the output language.<br>
<br>
I'm quite pleased with the Events system; the calendar is a simply-structured text file, and some fairly flexible tag syntax gives access to
events sorted by time and category. Coupled with the introduction of macro loops, it allows things like showing lunar events separately from
the other events in a given time frame (check out any of the year pages), or all of the seasonal milestones over a given period forward or
backward.<br>
<br>
I'm working on a scheme to give some access to the webcam archives (and will soon write a program to generate an interesting thumbnails poster).
It's turning into a scheme to index and allow access to custom input data, such as lists of dates and filesnames, or other data collected on a
periodic basis. That data, too, will be available via some clever tag language. Coding won't actually take very long for this, as I can largely
adapt code from existing routines.<br>
<br>
Here and there, I'm continuing to work on the pages, to make them more readable. As I'm really not adept with design, it goes slowly and with a
very utilitarian theme. Now, pay me to do this eight hours a day, and I might get good at it.<br>
<br>
I'll play with graphics again, in the near future, and probably introduce some more charts.<br>
<br>
Have a good summer.<br>
<br>
-Bill<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">Update</td></tr>
<tr class="body">
<td>
<p class="subheading">2012-06-08</p>
<p class="datumn"></b>
A brief update.<br>
<br>
No work has been done on the program code for a while, in favour of structural and cosmetic work on the web pages themselves. My next coding
work will involve bugfixes and a forecast parser, leading to the addition of weather condition and forecast graphics.<br>
<br>
There now is a separate set of pages for the Ottawa Airport, with the same in-depth analyses as for CTO data. In fact, the dataset is larger,
including wind, visibility and precipitation data which cannot be collected reliably at CTO. We're still working on the colour scheme. Next up
will be a Regional section, with somewhat expanded data for the sites we track; and then a National section covering the capitals coast-to-coast.
I won't bother adding a World section, as global weather summaries infest the Internet as fleas a stray.<br>
<br>
Data-capture accuracy is close to 100 percent since the last hardware/software update; we're now confident enough to resume data feeds to WUG and
PWS.<br>
<br>
We didn't bother addressing Tuesday's Venus transit, as, like the partial eclipse a few weeks ago, it began so late in the day that there really
wasn't much to see. I did watch the beginning of the event, and tried unsuccessfully to snap some low-quality photos; but no dice. I was able to
show Goddess (the other pink-skinned inhabitant at the CTO Weather Centre) a peek at the event, by projecting the sun's image onto the kitchen
wall with a pair of binoculars; but it was impossible to hold still enough to snap a picture.<br>
<br>
The media actually got things right about the transit, except for being much less diligent in warning about trying to view the event without
appropriate optical protection. Roughly every 105 years, we see a pair of Venus transits (I'll call them VTs, for short), eight years apart. This
was the second transit, the first having been in 2004; the next won't come until 2117. I'm not making plans for that event.<br>
<br>
Most folks are a bit puzzled about why VTs are so rare, though perhaps not bothered enough to ask why. The answer involves several factors, but
bear with me. First, Venus and Earth orbit the sun at different speeds, Venus faster than Earth by dint of being only about two-thirds as far out.
This means that Venus aligns with the sun and Earth more than once per (Earth) year. However, both Earth's and Venus' orbits are tilted relative to each
other by several degrees--and the Sun is only a half-degree wide. Also, because Venus <i>is</i> two-thirds as far from the sun as Earth, the
relative Angle of Venus to the sun is magnified, as it were. This means that, except for two specific windows, just a few
days wide, in our 365-day orbit, Venus will pass slightly
above or below the Sun while overtaking us in her lower, faster orbit. It just so happens that when these factors are combined (i.e. both planets
arriving at just the right place and time), it's 105 years between alignments, at which time we get one with Venus transiting above or below the sun's
equator, and a second, eight years later, with Venus transiting to the other side of the sun's equator. In 2004, Venus was north of the solar
equator; this year, south.<br>
<br>
Each pair of transits occurs on the same side of our orbit, and therefore in the same month (June, this
time round); the following pair of transits, 105 years later, takes place on the other side of our orbit (December). So, the whole cycle is actually
about 210 years long.<br>
<br>
You might find it interesting to know that, as one moves farther out from the sun, Venus transits become more common and last longer, due to
perspective.<br>
<br>
This information can help to illuminate astromers' search for extrasolar planets, which orbit other stars. The transit search method monitors stars
continuously, looking for short periods of time where they dim very slightly. If these tiny dimmings occur at regular intervals, it's an
indication that a planet is orbiting that distant star, each time passing in front of it from our point of view. Given some knowledge of the star's
properties--mass, diameter and luminosity--and the orbital period, they can deduce from the transit data the approximate mass and diameter of the
extrasolar planet. Comparing a planet's mass with its diameter can tell us about its composition. For example, solid 'terrestrial' planets like
Earth (density: 5) are much smaller and much denser than gas giants like Jupiter and Saturn (the former being about 10 times larger in diameter
than Earth, and the latter being less dense than water [density 1]).<br>
<br>
Grams-per-cubic-centimetre, if you must know.<br>
<br>
In order to be seen transiting its parent star, an extrasolar planet's orbit must be aligned with us to within a few degrees. This means that most
of the stars we look at won't exhibit transiting planets. The fact that a significant percentage of the stars being observed do, in fact, have
planets implies that they are very common and will far outnumber the several-hundred-billion stars in our galaxy. Bear in mind that Earth-sized
planets are extremely difficult to detect with current methods and therefore are not well-represented in what's already been found. Multiply that
by the several-hundred-billion <i>galaxies</i> in the observable universe, and you run out of zeroes fast. Now go read up on the
<a href="http://en.wikipedia.org/wiki/Drake_equation">Drake Equation</a>, and you'll better understand what these results mean for the probability
that there is other intelligent life out there.<br>
<br>
Understand: I don't believe that any of that intelligent life has visited this planet as yet. I also don't read comic books, collect figurines,
play mediaevel dress-up. Nor do I call myself a 'maker' just because I can put together a simple Heathkit. But I digress.<br>
<br>
This year's transit will also directly aid in the search for extrasolar planets. Again, if we know something of the composition of a star (usually
hydrogen, helium and small amounts of other relatively-light elements), then by studying its spectrum during a planetary transit, we can learn a
bit about that planet's atmosphere. The chemical constituents will create 'absorption lines' in the star's spectrum. Any absorption lines which
appear during a transit betray the planet's atmospheric makeup. By studying this phenomenon during Venus' transit, astronomers can better
calibrate their extrasolar observations. In fact, just to make it more challenging, they had the Hubble stare at the Moon during the Venus
transit--for obvious reasons, if you think about it.<br>
<br>
Micro-rant: I see that the Harper Government is eliminating the Environmental Advisory Council, on the grounds that it's been saying things the
government doesn't want to hear. Please see my previous rant about neoconservative ignorance; and I refer you further to the <i>Simpsons</i>
comet-impact episode which ends with: "Let's go burn down the observatory, so this can never happen again!"<br>
<br>
Art ridicules stupid imitates art. 'Nuff said.<br>
<br>
-Bill<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">We're Back</td></tr>
<tr class="body">
<td>
<p class="subheading">2012-05-20</p>
<p class="datumn"></b>
Happy Victoria Day weekend. As so often seems to happen for this occasion, we're enjoying full summer weather.<br>
<br>
A few brief notes about today's annular solar eclipse.<br>
<br>
An annular eclipse occurs because the moon's orbit around the Earth is not a perfect circle, but a slight oval; this means that the moon's
distance from us varies slightly during its four-week orbit. When the moon aligns exactly with the sun and the earth, there is an
eclipse. If the eclipse occurs near the far point of the moon's orbit ("apogee" -- 'away from Earth'), we get an annual eclipse, featuring a thin ring of sunlight
surrounding the black circle of the moon. If the moon is closer, a total eclipse occurs. (When closest to Earth in its orbit, the moon is
said to be at "perigee" -- 'nearest to Earth'.)<br>
<br>
Today's eclipse begins in east Asia, travels across the Pacific, makes landfall in Oregon, and continues towards the US Southeast.<br>
<br>
Due to the timing and angles of today's event, only folks roughly west of the Mississippi will see the full eclipse; anywhere east of that, the
sun sets before the event is over. In Ontario, the sun sets before maximum eclipse, and anywhere east, it sets before the eclipse even begins,
and the Moon's shadow lifts back into space until next time.<br>
<br>
Here's what to expect in Ottawa tonight - and if you want to see it, you'll have to prepare now.<br>
<br>
In Ottawa, the eclipse event begins at 8:17 in the evening, when the moon will begin to take a tiny bite out of the sun. Fourteen minutes later,
the sun sets. Mid-eclipse would be roughly an hour after beginning, with about 60% of the sun (now well below the horizon) obscured. This would
be about 9:15, local time. This means nightfall is going to happen more quickly than normal. After 9:15, the pace will slow, and what twilight
remains should persist almost until the usual time.<br>
<br>
Want to see the eclipse? If you're in a location where you can view the sun right down to the horizon, you'll have a chance of seeing the eclipse.
I've got a spot staked out nearby. I hope to snap a few appropriately amateurish photos.<br>
<br>
<i><b>Protect your eyes</b></i> at all costs! Even near the horizon, unfiltered sunlight can damage your eyes very quickly. There are several
ways to view the sun more safely. Punch a small hole into a thin sheet of cardboard; you can then use it like a lens, to project an image of the
sun onto a flat, light-coloured surface. Aluminized mylar, one or two layers, often works well for direct viewing; e.g. Pop Tarts wrappers -- but
do be cautious, and look through it for brief glimpses. Don't stare--there's nothing dynamic to watch.<br>
<br>
If you want to take photos, you are well-advised to protect your camera in a similar way. Unfiltered sunlight, concentrated through the camera's
lens, can easily damage the imaging sensor and ruin your camera, in which case all you can do is take flawed pictures of things, with your flawed
camera, and eventually be hailed as a genius by WIRED News.<br>
<br>
And this brings me to my next rant.<br>
<br>
This probably won't interest you, but today's eclipse is the latest in a long series of events which are methamtically related. It is, in fact,
the same series that produced the near-miss eclipse event of May 10, 1994, here in Ottawa. That event occurred in the afternoon and was visible
in full. Indeed, Ottawa was hardly more than 100 km from the centerline, so it was reduced to a thin crescent, that day.<br>
<br>
Prior to the eclipse, the usual nonsense started. In a bank lineup, I overheard one bingo-hall denizen warn another not to hang her laundry
outside during the eclipse, as the clipse would burn little crescent-shaped pinholes into her sheets. I wanted to ask her why she didn't feel this
would ignite the whole region in a flaming maelstrom -- but I doubt she'd have understood 'maelstrom.' The media, for its part, did a great job of
warning the public not to view the eclipse with naked eye--then blew themselves out of the water by referring to 'concentrated sunlight' during
the eclipse. I still have difficulty accepting that people can be that stupid; honestly. But it went beyond that. Schools were locked down, lest
Little Johnny impulsively peer upward and blind himself. Rather than a wonderful demonstration of practical astronomy, the event was turned into
a mysterious cosmic threat, to be shunned in fear. I'm surprised they didn't insist on waiting on an All-Clear from God.<br>
<br>
We may as well go back to living in caves.<br>
<br>
There is a novel, <u><i>Fallen Angels</i></u>, by Jerry Pournelle and Larry Niven. It's a blatantly transparent ass-kissing of sci-fi
fans in general; but it does do an excellent job of portraying the growing scientific ignorance creeping into modern society and its leadership.
In fact, one could say that politics increasingly views science as the enemy; money wasted on sneering acadamics bent on destroying the
economy through lies and manipulated data. The Harper government is slashing expenditures on science. StatsCan and Environment Canada have been
eviscerated to the point of ineffectuality. (Half a year, and EC still can't get daily weather stats online from the new third-party data source.)
The global-warming deniers continue to grow in number and stridency, by the day, even as climatic
models (which can now accurately predict the present from a starting point well in the past--I'll leave it to you to figure out what that implies)
demonstrate beyond any doubt that the warming is indeed human-caused, accelerating, and worse than originally thought. It's become conventional
wisdom among the under-40 population that the Apollo missions to the moon were faked; in fact, more people believe in <i>vampires</i> than in the moon
landings, even though simple mathematics demonstrate that vampires must cannot exist, and the moon-landing deniers have been soundly debunked since
the day they first started their ignorant bleating. But, hey, if you don't know math, don't know how anything
works, you're certainly not about to trust it, are you?<br>
<br>
Okay. Rant ended. Go find a <i></u>Twilight</u></i> movie to watch, or maybe an alien autopsy or a faked-moon-landings documentary on the
'Learning' Channel -- or perhaps treat yourself to the studied wisdom of the Wild Rose Party or its mother ship, the Teabaggers.<br>
<br>
-Bill<br>
<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">We're Back</td></tr>
<tr class="body">
<td>
<p class="subheading">2012-05-06</p>
<p class="datumn"></b>
As you can see, we're back up and running.<br>
<br>
We had a hardware failure in mid-April. As my priority right now is locating suitable employment, I took my time getting the system back up
and running. What I've got now is a somewhat more-robust system.<br>
<br>
The system still consists of two computers, networked. For local weather-data capture, I'm now using an ancient HP T5700 thin client that was
essentially useless for anything else. This
device uses a Transmeta Crusoe processor which almost, but not quite, completely emulates a 686-class processor. Long story
short:<#Spc2>with
considerable effort, I managed to install Arch Linux (which fortuitously doesn't use the one instruction that the Crusoe chip doesn't
implement) and a basic GUI environment, and my custom OCR program. The original webcam was replaced with a higher-resolution model. The new
cam delivers a sharper, brighter image which has significantly enhanced the OCR program's accuracy; currently running at 72+ hours without a
scanning error. Data feeds to Wunderground and PWSWeather will resume later today.<br>
<br>
Note: in installing the purist Arch flavour of Linux, I discovered that I'm not a Linux guru yet. At the same time, I was struck yet again by the strange
attitude, widely prevalent in the Linux and open-source communities, that rejects making products 'user-friendly' and instead demands that the
user become intimately familiar with the underpinnings of the system, in order to use it to satisfactory purpose. I completely disagree; the user
should never have to tinker with the internals. If it can be tinkered with, there should be a simple, GUI way to do it. Even
nominally consumer-oriented products such as Ubuntu fall flat, particularly where 'non-free' software must be added after-the-fact and configured,
just to make the stock installation useful from a pragmatic point of view. Well, the rest of the world has moved on from that kind of monkey-
business.<br>
<br>
'RTFM' was a cute catchphrase among hackers in the 1980s, but let's pull up our socks and move a few decades forward, shall we? If Linux wants
wide acceptance, it's going to have to focus, in a big way, on making its power truly, intuitively, and <i>transparently</i> accessible to
the consumer. There's a reason why Apple dominates the personal-electronics market in the present era, with Linux at other end of the list,
still expecting Granny to play with .ini files in <a href="http://www.eng.hawaii.edu/Tutor/vi.html"><i>vi</i></a>. Go ahead, click the link
and behold the modern, user-friendly glory of <a href="http://www.eng.hawaii.edu/Tutor/vi.html"><i>vi</i></a>.<br>
<br>
Carrying on (it kills me, by the way, that web browsers refuse to render two spaces after a colon or full stop):<#Spc2>the data-capture system
transmits the readings directly to the server, via HTTP protocol. In the event of communications failure, the OCR
program falls back on attempting to transmit the readings via a text file and standard file shares. If that doesn't work, the results are
cached until a transmission method becomes available again. This lets the system coast through server reboots and downtime without errors.<br>
<br>
The server (again, an ancient Toshiba Tecra 8000 laptop that continues to motor on faithfully--<i>raps twice on skull</i>) runs the statistical
/ web-output system, in realtime. A multi-level timing routine keeps data input synchronized with output, to maximize the 'freshness' of the
output data. The scheduling is completely configurable.<br>
<br>
Please keep an eye on the CTO Weather Cam over the next couple of weeks; the trees are leafing out in earnest.<br>
<br>
Finally, I note in the news this morning a story which outlines the double danger of climatic warming. It seems that our early spring this
year (the second in three years) caused early blossoming among many of Ontario's fruit trees, especially in the southern part of the province.
A subsequent unseasonal cold snap (a phenomenon that will continue to occur even with climatic warming) killed or damaged many of those blossoms.
As a result, fruit yields this year are expected to be way down.<br>
<br>
-Bill<br>
<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">Incremental Progress</td></tr>
<tr class="body">
<td>
<p class="subheading">2012-04-07</p>
<p class="datumn"></b>
As you may have noticed, things are improving in little ways, here and there.<br>
<br>
The automated system has been running stably, without incident, for over a week. Bugfixes and new features are being implemented, and the
server's software will be refreshed tonight from the latest build.<br>
<br>
New pages are being added; in the next few weeks, every menu item will come alive. Forecast-handling will be improved, and warnings will be
added.<br>
<br>
Custom queries, mentioned previously, should show up in the next couple of weeks, along with an expanded package of analysis graphics. The
goal there will be to look up information on any time period in the database. I'm also working on implementing mathematical calculations;
for example, compare this month's temperatures with normals, or compare one location's humidex with another's; I can do the same with dates.
Gonna take a bit of work, but it'll show up eventually.<br>
<br>
While I've been ranting on about my stats system, we've been enjoying an early spring, and for the second time in three years. Temperatures since
mid-winter have run three to four weeks ahead of normal; March would have passed as a slightly-disappointing April, and the first week of April
has featured temperatures close to the monthly average. We've had record-setting temperatures
in the high-twenties, at a time of year when the existing records were in the teens.<br>
<br>
I'm looking forward to getting some of the new graphics online, such as a year-by-year graph for observations at the airport, going back to
1938; then you can see for yourself what global warming is doing right here in Ottawa. From my own research, I'm seeing a significant
acceleration in warming over the past decade; something of a tipping-point which many climatologists have warned of.<br>
<br>
Enjoy your weekend.<br>
<br>
-Bill<br>
<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">Primary Mission Accomplished</td></tr>
<tr class="body">
<td>
<p class="subheading">2012-03-25</p>
<p class="datumn"></b>
If there's one thing I'm good at, it's learning. Quickly. Skills-wise, anyway.<br>
<br>
The weather system is now running in realtime on the server. System load is very light. The scheduler needs a little fine-tuning, but
I'm really impressed with the efficiency already. A bunch of new current-readings-only locations
will be added, to give a more-complete synoptic view of Eastern Ontario. I can basically add as many as I want. I'm still tweaking
the output routines, to correct properly for DST in all situations and to parse all the tag options properly. Easy work, just tedious.<br>
<br>
The CTO Weather Centre readings are now transmitted over the network, directly to the server and without using text files, with buffering
in case the server is unavailable
due to a network error or scheduled reboot. If I opened up a port, the system could happily accept readings from any other place on
Earth. This is exactly how it's done at sites like <a href="http://www.wunderground.com">The Weather Underground</a> or
<a href="http://www.pwsweather.com/">PersonalWeatherStations.net</a>. As a result, our live readings are posted within about 90 seconds.
The graphics are updated on a five-minute cycle.<br>
<br>
Most of the tweaks will show up later today, when I update the server software from the development version. Things will get much neater
and more... correct.<br>
<br>
Data-capture will be refined some more; I'll try to eliminate as many bad readings as possible. There are a lot of things I can do in that
regard, including comparing strings of readings, checking the source image to see if it's worth scanning at all (I'll soon post a picture
of our trailing-edge setup), rejecting readings which change too quickly, checking against predefined acceptable-value ranges, checking
against a few quirks of the capture setup (especially false 8s and 0s). More tweaking of the image-analysis
routines will also help; I can scan and analyze the values in different ways. I'll also have to teach it to calculate Humidex and
Wind Chill values; that's just simple math.<br>
<br>
Most of what's on the to-do list at this point is blue-sky stuff, plus getting the website itself into shape. Both I'll do at my leisure,
while enjoying the results of my efforts to date. I now have a working, automated statistical/reporting system that will give me the
information I want, when I want it. I need to turn the software into a service (a daemon under POSIX systems, and a service under Windows),
rather than just have it run continuously in a session; I have some more data-gathering automation to work on, some tag extensions to make
site-building easier, and then some geekily-useful features like value and temporal arithmetic (moonrise in 36 minutes; yesterday's high was
2.5 degrees above Normal), perhaps some basic scripting, custom data
queries (show me the daily mean temperature, maximum wind gust and average visibility for January 6 to February 2, 1941)... and whatever
else I can think of that'll be fun to set up and play with.<br>
<br>
I offer a parting thought for the day. While I've worked with many different computer platforms since the early Eighties, the constant over the
past 25+ years has been DOS and then Windows. I started playing with Linux nearly 20 years ago, when it was still a talking-dog sort
of curiosity, and have used it for a home server for
at least the past decade. In the last three or four years, I've been programming on it, too. The Free Pascal / Lazarus package is great for
cross-platform programming; and Pascal's way of doing things has always agreed very closely with mine. That said, I've noticed something
lately: increasingly I'm using my Windows computers to do things I've always done (producing a weekly radio show, because switching to new
or different software means compatibility issues with your archival production files), or things where there just isn't a good Linux
alternative. I'm using Linux, on the other hand, for most of my geek projects, or anything else new. I'm finding it easier to develop with, more efficient with
resources, and more stable than Windows 7 (and I don't say that lightly). Tying different processes together--or at times eliminating
them altogether--is much easier with a bash script than trying to use DOS/Windows' limited batch language; and it's not worth it to me to learn
Windows Powershell's tricky little language. The cron scheduler is far more powerful than Windows' cutesy Scheduled Tasks facility. I could
go on. Linux helps me get things done, plain-and-simple.<br>
<br>
-Bill<br>
<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">Just an Update</td></tr>
<tr class="body">
<td>
<p class="subheading">2012-03-17</p>
<p class="datumn"></b>
There's been steady progress on the software side, all week. And we recorded some radio comedy this morning.<br>
<br>
Bad-data-undo is implemented in the testing version. I've worked a bit more on the site pages. I'm now monitoring readings from a number of other locations;
and, as you can see, there's now a regional temperatures map which will evolve with the rest of the site. I now have a simple GUI
utility to input daily temp/precip stats or issue data-kill orders. Spending a couple of hours on that will soon save me a lot of time
monkeying with input text files.<br>
<br>
The regional temperatures map, by the way, is generated via a script file; it's templated, and the system fills in the necessary values.
Another script runs it; it then calls ImageMagick Convert to superimpose the values onto the map image. The binary part of the system
(working name: WxPro, written in Free Pascal) required no modification. I've stolen the present image from the Ontario Cattlemen's
Association website. Promise to eat a steak this week so they'll turn a blind eye, okay?<br>
<br>
I'd mentioned before that the system was designed from the outset to handle multiple locations ('weather stations')--up to 200 in the
current version. Having learned my codin' during the dinosaur days of the early 1980s, I've always been extremely careful about
memory usage: don't keep it in precious RAM if you ain't using it; and don't give it more space than it needs. WxPro is designed along
those lines; nonetheless, memory usage may become a
concern on my 128-MB ancient-laptop server, if I add many more sites. Two things will help: running realtime on the server and processing
data as they appear, instead of loading-processing-outputting everything every five minutes; and in configuring how much data should
be kept, processed or output for any given location. For example, I like seeing the current conditions for Bancroft, Ontario, which
often experiences weather which will later reach Ottawa. I don't necessarily want to waste memory and processing resources on the data,
or perhaps on outputting the results. I'm adding in a lot of flexibility in this regard; some locations may be current-conditions-only,
for example, and require minimal resources, generating minimal output.<br>
<br>
I say all this because, as you've noticed, data from other than the original two locations (I don't think Current Conditions in the
Living Room are statistically significant to anybody outside of the building) have begun to appear; see the Regional Summary table on the
Temperatures page. I've added them in to test the system, and because it's what I want on my weather site. :-) In the near future, each
location CTO is tracking will have its own sub-site, and some locations will have more information than others. Some, like our Weather
Centre and the Ottawa Airport, will be full-fledged analysis sites; others, like Bancroft, probably won't ever tell you more than what's
happening right now. To be sure, the readings will be archived, at zero memory cost, for future use. I'm pretty sure I can write some
code to sift through the available data and learn how to generate accurate short-term forecasts; the kind you actually need before you head
out the door. No one seems to do that right now; but radar images require interpretation in conjunction with other data, such as motion
and evolution over time. J.Q. Public doesn't know or care how to factor in the temperature, barometric pressure, relative humidity,
wind direction, and their recent history, to figure out whether that radar blob near Carleton Place is likely to cause trouble for the
electric mower in the next 30 minutes. I'm certain I can teach my computers to be helpful with that.<br>
<br>
To get things running on the server in realtime, WxPro needs a scheduler. Not particularly tricky. I'm working on this and tidying-up
some of the internals, to help prevent future bugs and make it much easier to add a finer grain to everything. I'm sure we'll
be into realtime operation a week from now.<br>
<br>
On a different note: currently, Eastern Ontario is enjoying very unseasonably-warm weather. This whole late-winter period has been
reminiscent of 2010--if memory serves, the warmest year on record in Ottawa and a great many other places.
Two years ago, I found thousands of spring flowers on March 7; usually, except for on sun-rich embankments, there's little before month's
end. This year has been eerily similar.<br>
<br>
March here is less and less a winter month, and increasingly often a real spring month.
Record-setting high temperatures this week are forecast to be in the low- to mid-twenties. When I arrived in Ottawa at the end of March,
1986, there was similar, also record-setting, weather. Two full weeks later, by the calender, during the period of maximum seasonal change.<br>
<br>
Think about that; and at some point in the next month or so, I'll post a chart where you can see the climate change for yourself,
straight from the data.<br>
<br>
-Bill<br>
<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">Gangbusters</td></tr>
<tr class="body">
<td>
<p class="subheading">2012-03-09</p>
<p class="datumn"></b>
The system will soon each version 1.0.<br>
<br>
All of the statistical routines are now in place, and nearly the entire data tagset has been implemented. On the way, a funny thing
happened that will negate a lot of further programming.<br>
<br>
As you'll see on the "Today" page, I've taught the system how to generate tabular data. The last-24 view is particularly useful, as it
helps me quickly track down bad data which can be nullified through another nifty feature I'm working on: search-and-destroy. The
implementation was surprisingly quick, as it mostly hooked into existing code.<br>
<br>
Here's the cute part: because of this feature, I won't have to write any code whatsoever in order for the system to be able to
export customized listings of any kind of statistical information it stores or generates. Just set up a template page for the output,
defining the data fields to export and the time period. The system does the rest of the work--just as with the pages that make up the
CTO website. Hot damn!<br>
<br>
As mentioned, I'm working on an automated way of nullifying bad data, and rolling back any effects they've had on Extremes, Records,
Means or Totals, after the fact.<br>
<br>
In the morning, I'll add support for Daylight Saving Time, which begins this weekend. That, too, won't take long. I'll continue
to work on the web pages themselves. Much of the rest of the development work will be blue-sky stuff, including a graphical control
program, more data analyses, better charts and graphics, more work on forecasts and the addition of public weather warnings, data
interchange with my graphical analysis program; things like that. I'll probably also start collecting data from a number of other
locations around Eastern Ontario, to see what can be done with that. Might also be nice to program a query server, to let you explore
the datasets online; right now, everything's a fixed page.<br>
<br>
But, for now, it's almost fully functional and runs unattended. Not bad for three months of hacking in my spare time.<br>
<br>
So, while the aesthetics of the site will continue to change, the bulk of the information won't. To be sure, the available data will
be expanded significantly, with lots of monthly and yearly extremes, plus all-time records. And, at some point, I've got to write and
produce some more radio comedy. Hey, at least I don't read comic books or play Dungeons and Dragons.<br>
<br>
-Bill<br>
<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">Ignition</td></tr>
<tr class="body">
<td>
<p class="subheading">2012-02-20</p>
<p class="datumn"></b>
The ugly, marked-up pages you're seeing are an indication that data-output routines are being implemented. Our goal is to make every
red mark disappear. Progress will be slow, at first, as supporting routines are written; t'll pick up steam as it goes, thanks to those
support routines.<br>
<br>
It took surprisingly little time to hack up a program to capture Environment Harper Canada data and leave it for the new system to
process. We'll play with that when there's time; it's not a priority anymore.<br>
<br>
-Bill<br>
<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">Liftoff</td></tr>
<tr class="body">
<td>
<p class="subheading">2012-02-29</p>
<p class="datumn"></b>
As you can see, we've made great progress in recent days.<br>
<br>
Realtime data are being captured reliably; the system scans for new inputs every five minutes. Normals are now supported, along with
importing of same plus daily/monthly/annual statistics. Sun and Moon data have been imported. The data-embedding tagset is largely
implemented, save for extremes/records data and system information.<br>
<br>
The charts have returned, and you can expect to see some new ones in the next little while, plus lots of other new graphics.<br>
<br>
Forecasts are being captured and processed. I've been looking at the syntax of Environment Harper Canada's [mostly] computer-generated
forecasts, and it looks pretty simple to parse and extract some data from those.<br>
<br>
You'll notice that while most of the data displayed are recorded here at CTO, a few items, such as winds and precipitation, have been
borrowed from EC. Eventually there'll be separate pages for each, plus some additional ones for forecasts, warnings, records, other
locations, etc.<br>
<br>
At this point, there are a couple of big things still to implement, and lots of little things. As of Midnight tonight, we're officially
operational in terms of data capture, processing and archiving. Once the main weather-stats system is largely completed, we'll work on
a few companion projects to make the whole thing easier to maintain. Because the system's been designed to maintain data for multiple
locations and has a small resource footprint, it could easily keep stats for a whole network of locations--say, all of Eastern Ontario.
And from that would come some interesting opportunities for analysis and "nowcasting". :-)<br>
<br>
Incidentally, with the transition to Daylight Saving Time just a couple of weekends away, we've decided that the system will operate
strictly on Standard Time, year-round, translating to DST only for outputs. This means that, as of March 11, daily statistics will be
calculated from 01:00 <i>Daylight Time</i>one day, to 00:59 the next (00:00 through 23:59 <Standard>). This guarantees that every day
can hold a reliable 24 hours of data. That said, few daily extremes (of the meteorological type, anyway) are set between Midnight and
1am.<br>
<br>
-Bill<br>
<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">Ignition</td></tr>
<tr class="body">
<td>
<p class="subheading">2012-02-20</p>
<p class="datumn"></b>
The ugly, marked-up pages you're seeing are an indication that data-output routines are being implemented. Our goal is to make every
red mark disappear. Progress will be slow, at first, as supporting routines are written; t'll pick up steam as it goes, thanks to those
support routines.<br>
<br>
It took surprisingly little time to hack up a program to capture Environment Harper Canada data and leave it for the new system to
process. We'll play with that when there's time; it's not a priority anymore.<br>
<br>
-Bill<br>
<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">Three, Two, One...</td></tr>
<tr class="body">
<td>
<p class="subheading">2012-02-19</p>
<p class="datumn"></b>
Live data-capture has been operating on a test basis since yesterday afternoon. The OCR program was updated to deal with negative
temperatures and the new system's data-input format. Daily and monthly stats are being calculated automatically. Some attention will
have to be paid to bad-data filtering (sometimes the OCR program makes a mistake) before operational use begins.<br>
<br>
Next up: data export to HTML pages. A large set of tags will allow data to be embedded into any text document, with a lot of
flexibility in formatting. It'll take a while to implement properly, but you should see live data begin to appear in the next 24-48
hours.<br>
<br>
Once the basic tag set is implemented, hourly XML data capture from Environment Canada will resume. Following that, the remainder of
the dataset (normals and records, and related calculations and output tags) will be implemented, bulk-data import will be implemented
to allow historical and 'official' records to be imported and analyzed, and graphics-generation will be implemented. Much of this later work
will borrow heavily from the old system, as my later coding was much cleaner than the initial.<br>
<br>
This whole endeavour originally was intended to be quick-and-dirty hack to get some live data, display and record it. It kind of
snowballed and evolved as it went. Poor planning led to sloppy code that was difficult to maintain. The new system's architecture and
specifications were extensively planned before a single line of code was written; as a result, it's much easier to expand and maintain,
and new features will appear regularly.<br>
<br>
-Bill<br>
<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">Progress...</td></tr>
<tr class="body">
<td>
<p class="subheading">2012-02-13</p>
<p class="datumn"></b>
The dataset is now fully defined; implementation will occur modularly. The system is now capable of gathering and storing stas and
calculating extremes (highs/lows) for the day. Data-locking is now being implement, to protect 'official' values once input. (For
example, the daily High and Low don't usually occur just as the hourly reading is taken; therefore, the officially published values
usually differ from (exceed) the values WxPro will calculate by default from the periodic readings. Once official values are pulled in,
observations values (e.g. bad datestamp, archival data) won't overwrite them. Surprisingly easy to implement; my code is clean and
modular.<br>
<br>
At that point, we'll take a break and turn our attention to WxOCR, the program that captures data from an LCD display. It needs to be
taught WxPro's particular data-exchange format, and while I'm at it I'll probably make it a bit friendlier. That one, in particular, I'll
end up releasing as an open-source project. It's just too niftily cute, and a great example of a surprisingly large effort to solve a
surprisingly simple problem: how do I get the information from the LCD display, on my cheapo home weather station, into the computer?
The coolest feature: it even shows you, graphically, how the data-capture process works. With a decent interface, anyone could set it
up to read almost any LCD display with just a few minutes of aligning and clicking. As an open-source project, perhaps it'll attract a
programmer with the time to give it the attention it deserves.<br>
<br>
Sorry; I digress.<br>
<br>
After a bit more tweaking, the system will learn how to export data to web pages. When that happens (and, as you can see, it's not that
far down the road), live data will gradually reappear on these pages, followed by statistics, records and normals, charts and graphs,
and so on. In time, it'll outstrip the old system and become fully automated. Someday, if traffic climbs into the double-digits, I might
even toss in some sidebar ads, get the site hosted and complete the dream of a complete, public CTO site, full of actual real information and
learnin', and graced with a cheesey, leaf-laden inner-city motif.<br>
<br>
-Bill<br>
<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">Well...</td></tr>
<tr class="body">
<td>
<p class="subheading">2012-02-10</p>
<p class="datumn"></b>
The system is being rewritten from the ground up. Useful routines are being borrowed from the old code. The new system is being designed
inherently to support multiple locations and multiple years, with minimal data loading. It will be self-maintaining, in that it will
automatically create all data and file structures necessary to accommodate new time periods in the input data. Efficient scheduling will
cut down on needless recalculating.<br>
<br>
Because of the programming approach (dataset and inputs-handling first, then worry about analyses and outputs), a whole lot of programming
will be followed by a whole lot of debugging, followed by a lot more programming, a bunch more debugging and the beginning of operational
use. But when fresh data do begin to appear on the site, expect frequent updates.<br>
<br>
Given a rainy afternoon, we may find a temporary way to put current-conditions data back online, in the meantime; just the basics, using the
old system.<br>
<br>
The CTO Weather Webcam remains online. We're archiving one picture per hour, now, with thoughts of later turning it into a video or perhaps
creating some sort of graphical analysis. I have something in mind.<br>
<br>
The focus, this time around, is on realtime data and statistics from CTO's own weather station, with Environment Canada data presented as an
augment or for comparison. I'm really displeased that their handing-over of the hourly observations to a private concern has created large
gaps in their recent daily statistics. Here at CTO, I'm one person and have probably four regular visitors. Environment Canada has a staff
of hundreds to thousands and serves the country; I hold them to a somewhat higher standard.<br>
<br>
As the new changes come online, we'll describe them here, and at some point we'll summarize the architecture of the new system.<br>
<br>
-Bill<br>
<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">Work in Progress</td></tr>
<tr class="body">
<td>
<p class="subheading">2011-12-31</p>
<p class="datumn"></b>
As you can see, live data collection and analysis have been suspended since December 16. We're now working to get things back online.<br>
<br>
We deciced to stop the process when the number-crunching software started dividing by zero; most likely there's something funny in the wind-
chill or humidex calculations.<br>
<br>
The CTO Weather Webcam is back online. The server itself is now handling the job--our Chief Developer is becoming pretty competent at Linux
system administration amd figured out how to make it work on our ancient laptop / net/webserver--making this now just a two-computer venture.<br>
<br>
Live weather-graphics capture of mirrored graphics was restored about a week ago.<br>
<br>
While we have debugging to do in the software, we're doing a major rewrite of the data engine, per the development roadmap. Also, all external
data capture will now happen externally to the main program. XML data from Environment Canada, for example, will have to be processed by an
outboard program that spits out data in a standardized format for the main program. This uncouples the system from any one hard-wired data
source and opens up the range of sources to anything that can be captured to an ASCII text file.<br>
<br>
We're cleaning up some ugly bugs where 'official' readings (daily highs and lows, for example) don't quite 'take', and cleaning up the stats-
calculating routines.<br>
<br>
There are other priorities right now, so the work will go on a little at a time. The system ought to be generating test output in a week or
two and operational again by mid-month.<br>
<br>
-Bill<br>
<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">More New Graphics</td></tr>
<tr class="body">
<td>
<p class="subheading">2011-11-02</p>
<p class="datumn"></b>
We've added a couple of graphics to display Earth's terminator from viewpoints directly above Ottawa, Ontario, Canada (home of
the Centretown Observatory) and Tashkent, Uzbekistan. (Just because I like the way it rolls off the tongue.) As with all of
the borrowed graphics here at CTO, you can click through to the source website for more information. Hint, hint. (While we
would like to be your first stop for weather information, we'd really love to be your first of <i>several</i> stops.)<br>
<br>
The 'terminator' is the boundary between day and night and runs in a circle around the world. At every point along the terminator,
it is either sunrise or sunset.<br>
<br>
I find a terminator map can give me a better sense of 'how long' until sunrise or sunset than checking on Sol
itself. Likewise for the progress of the current season. Because glancing out the window in these-here
parts can be uninformative from November through March. You get the drift. We sure do.<br>
<br>
Bazinga.<br>
<br>
Here's something to watch for.<br>
<br>
At the equinoxes, when spring and autumn begin, Earth's axial tilt is 'sideways' or Equator-on to Sol; the terminator
therefore runs straight North-to-South, and so night and day are the same length, everywhere on Earth.<br>
<br>
At the summer solstice, our hemisphere is tilted 23 degrees sunward and away from the dark. The terminator runs from the
Arctic Circle to the Antarctic. It's high Noon at the North Pole and Midnight at the South. <br>
<br>
If you take a quick peek at those terminator graphics every few days, you'll soon notice the changing angle of the termninator,
especially if you tune-in around sunrise or sunset, ET or UZT.<br>
<br>
By the way, if you open either graphic in a new tab, you can change the image size, and the latitude and longitude of the center
point, very easily by editing the URL and refreshing. Perhaps you're not fond of Tashkent, or you just want to see the wealth
of extra detail in a larger image.<br>
<br>
I'll be back.<br>
<br>
-Bill<br>
<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">Light Pollution</td></tr>
<tr class="body">
<td>
<p class="subheading">2011-10-31</p>
<p class="datumn"></b>
The (cheapo) CTO Weather Webcam is picking up a dark-orange skyglow tonight. Usually, even on cloudy nights, it's pretty much
black with scattered noise. In fact, as the evening grows late, and more lights are turned off as folks turn in, the glow is
fading.<br>
<br>
It's Hallowe'en. Lots of extra outdoor lighting is compounding the usual light pollution, whereby in settled regions the night
sky gets washed out by all of the wasted light escaping upwards from civilization.<br>
<br>
Doubtless the only other evening of the year when so much light is cast skyward, at least here in North America, is Christmas.<br>
<br>
Light pollution has, in just a couple of generations, deprived most of the 'developed' world of an important part of our
heritage as human beings: the night sky, aglitter with myriad stars. I grew up in rural areas as a kid. I got to know the
night sky and remain an avid amateur astronomer, here in leafy, light-polluted Centretown. I learned how to get my bearings,
quickly, from the night sky. I marvelled at the complex tracery of the Milky Way. I followed the planets on their repeating
treks acround the sky. I spent a lot of time outdoors, in the dark. Perhaps that explains a few things. But I digress.<br>
<br>
If you live in a rural area (and chances are, you don't), the following taunts may not apply to you.<br>
<br>
Chances are you've never seen the Milky Way, except perhaps while away 'cottaging.' Chances are you can't point to and name two
stars among the few we can see from our urbanized habitats. Chances are, in fact, that you wouldn't identify a single star, and
most likely not a single constellation other than the 'Big Dipper' (itself only part of an actual constellation). You've probably
never glimpsed the "Andromeda Galaxy," a fuzzy patch that is an entire Galaxy, possibly bigger than our own Milky Way,
2.4-million light-years distant--and easily visible to the naked eye in a dark autumn sky.<br>
<br>
Grampa would not be impressed.<br>
<br>
Hey, I'm not complaining much about holiday lighting, although multiple weeks of Yuletide photonics seems excessive. But consider
for one moment the amount of light we waste into the sky, 365.2422 nights a year. The price is large and not confined
to sentimental memories of watching shooting stars from Grampa's backyard. Many birds, for example, navigate by the stars.
Ottawa is smack on a major migratory pathway of Canada Geese. Honk if you're directionally challenged.<br>
<br>
Light pollution, in fact, encompasses more than just the sky; it also affects right here on terra firma. If you've ever had to
draw the curtains to block out an annoying streetlight, you've been affected by light pollution. If you've ever stepped outside
to spot the meteor shower J.J. was talking about on the news, and seen diddly-squat, you've been affected by light pollution.<br>
<br>
Now, think about how much it costs us, both individually and as taxpayers funding public services, to scatter all that stray light
up into the night. Think about your hydro bill lately.<br>
<br>
Yep. We're all affected by light pollution--right where it hurts the most.<br>
<br>
Think about it. It's not tree-hugger stuff; it's simple economics.<br>
<br>
-Bill<br>
<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">New Graphics</td></tr>
<tr class="body">
<td>
<p class="subheading">2011-10-22</p>
<p class="datumn"></b>
You'll notice we've now added graphics for Southern Ontario weather watches and warnings, and marine warnings for the
Great Lakes. Useful info, and on a regional scale.<br>
<br>
</td>
</tr>
<tr class="body"><td> </td></tr>
<tr class="groupheading"><td><p class="groupheading">Well, Here We Are...</td></tr>
<tr class="body">
<td>
<p class="subheading">2011-10-22</p>
<p class="datumn"></b>
It's about two-and-a-quarter years since the Centretown Observatory first went online with live weather observations. It's about
two months since we got back online, with borrowed data; and, with any kind of luck, within a couple of weeks we'll have live
<i>local</i> data running again.<br>
<br>
It's been a bit of a haul, from there to here.<br>
<br>
Two years ago, I bought a home weather station. I've been a meteorology nut since about age twelve; for years, in my teens, I'd
dutifully recorded the daily high and low temperatures, measured the precipitation, worked up basic statistics. I dropped that
as I reached adulthood but had always wanted to resume. In 2001, I got a digital recording thermometer and starting taking
local readings again. It was interesting, running comparisons against the Environment Canada readings down at the airport.<br>
<br>
Back to the home weather station. I was thrilled to be able to connect it to my PC and log realtime weather data, even post
it to a website along with graphs, charts, and such; I'd always wanted to do that.<br>
<br>
The thing worked properly for a couple of months and then went haywire, just after the warranty expired. The simple little
CTO website went dormant, and I went on to deal with other things in life.<br>
<br>
This past summer, I picked up a much-simpler home weather station. No wind data, no rain gauge, no PC connection. But This got
me to hankering to get back online with weather data. I decided to 'borrow' Environment Canada's readings and amalgamate them
with graphics from various sources, for a sort of local-weather portal page. Statistics would be useful, too. And, while I
was at it, perhaps I could find a way to capture data from that cheapo home weather station, into my PC, interface or not.<br>
<br>
I rolled up my sleeves and started coding.<br>
<br>
Environment Canada (hereinafter known as 'EC') publishes hourly observations for various cities, in XML format. Using my Linux
box (I just find it easier to develop for Linux), it was easy enough to put together a little bash script to download the XML
file every now and then. Then, using Lazarus/Free Pascal, I wrote a program to read the XML file, extract the pertinent data,
and store it in a data file. From there, it evolved to generate statistics. I added options to import bulk historical data
and 'manual' corrections or official values. The dataset quickly grew.<br>
<br>
Now, to get the data into web pages without a pile of javascript or database queries. Taking inspiration from Cumulus, I
worked up a list of tags, to be embedded in a template page, replaced with the corresponding value during processing, and
output to an HTML file. And, whaddya know--it works pretty well.<br>
<br>
I resurrected the webcam. It's at least ten years old. I replaced it with my old Canon Powershot A80, using scripting and
gphoto2 to capture images. It lasted about two weeks. Currently, I'm running a low-end retail webcam. It does the trick.<br>
<br>
I wanted graphical aids, so I added a function to spit out formatted data for gnuplot to generate graphs and charts.<br>
<br>
Back to the cheapo replacement home weather station--the one without any interacing arrangements. I'd been thinking about it
off-and-on while I worked on the data-capture and statistical programs, and I realized it did have a digital interface--the LCD
screen. I wondered how hard it would be to set up a webcam-and-OCR arrangement. So, I set up the cam and the display in
stable positions and took a few shots. I came up with a solution pretty quick. Each digit on the display is composed of two
relatively-square cells. These cells appear in the same position in each webcam image. So, simply define the center point
of each cell, and then scan up-down and left-right from that point, to determine whether the individual elements are activated.
From that, you can figure out what symbol is being displayed. I threw some code together. With surprisingly little adjustment,
it worked. At some point, I'll polish up that program, make it easier to work with, and release it.<br>
<br>
So, here's what we've got going:<br>
<br>
<li>My desktop Windows box runs the OCR-data-capture for local readings and spits those out to a text file on the webserver.
Discontinued product or not, I have nothing but nice things to say about the reliability and simple flexibility of the
frame-capture program Dorgem.<br>
<br>
<li>My Linux-based home server / web server, running on a truly ancient laptop, downloads and processes the EC data, pulls in
my local readings, crunches everything down, regenerates the <i>CTO</i> website's HTML files from templates, filling in values
and statistics as needed, spits out the data to make graphs, and saves the updated database. A set of bash scripts choreograph
it all, and cron makes it happen like clockwork, every five minutes.<br>
<br>
<li>Finally, my Windows laptop, which seldom leaves its desk in its old age, runs the CTO Webcam, also using Dorgem, to snap a
shot of the West-by-Northwest sky every minute or two, saving the file onto the web server.<br>
<br>
All-in-all, I'm pleased. A few more weeks' work, and the data system here will be poised for years of mostly-unattended
service.<br>
<br>
</td>
</tr>

<tr class="body"><td> </td></tr>

</table>

</td>
</tr>
</table>

</center>
</font>
</body>
</html>