Centretown Observatory:

News: Archive 2018

Times in Eastern Standard Time (EST = GMT-5)

(To see this page's template code, please Click Here.)
Nav:
January 2018:
2018-01-26: Update
February 2018:
2018-02-10: Errors
May 2018:
2018-05-02: Capture Accuracy
July 2018:
2018-07-12: Low Batteries
August 2018:
2018-08-11: Odds and Ends
2018-08-26: Overhaul
2018-08-28: New Server Version
September 2018:
2018-09-16: V. 4.72
2018-09-17: Oh, Wow
2018-09-23: Downtime
October 2018:
2018-10-07: V. 4.76
2018-10-21: V. 4.80
December 2018:
2018-12-09: Frustration
2018-12-10: And Just a Note
2018-12-12: Changes
2018-12-16: wxCondition 2.0
2018-12-17: A Funny Thing Happened...
2018-12-22: Coming Up: V. 4.82
2018-12-25: Random Notes
2018-12-27: Ideas

Ideas

2018-12-27

I've adjusted the barometric pressure charts, to show a maximum of 1050 millibars; this in response to the BP this morning reading 1040--the former upper limit of the charts.

I've had a new idea for the system, and I think it's a good one. I was looking over the pages, and I thought, wouldn't it be handy to have reports on all the months in the year? Or on any month you chose. And so I'm working on a new feature. It introduces a few new tags, like so:

  • <@AMEq 2018 1> - Set any references to this month, to mean January 2018.
  • <@AMEq 2017 2> - Set any references to this month, to mean Feburary 2017.
  • <@AMEq 2019 3> - Set any references to this month, to mean March 2019.
  • <@AMEq A 1> - Set any references to this month, to mean January of this year.
  • <@AMEq P 2> - Set any references to this month, to mean Febuary of last year.
  • <@AMEq N 3> - Set any references to this month, to mean next March.
  • On sober second thought, I'll also add the following:
  • <@AAEq 2014> - Set any references to this year, to mean 2014. This will allow access to stats from any year.

These tags will only affect the page they're embedded in.

By adding an appropriate tag early in the page code, I can make a 'this month' page show data for any month.

Now, this will take a little work, especially where it parses tags for this month, to get the data source right. However, it will be precious little work.

The way I envision this being set up in the CTO pages, is in each yearly summary table, the month references are clickable; that would lead to a page for that month. Nice and neat; no fuss, no muss.

In other notes, my new air-core cardboard-box loop antenna is working just fine; I'm still tinkering with it to get the tuning range just so. It's a big sucker— three feet on a side. I made it out of four boxes, bonded together in a (pardon the expression) swastika sort of pattern. (Duct tape, of course...) It does a fair job of rejecting electrical interference; then again, the signal gain is much greater, which introduces more noise anyway. I'm looking forward to putting it through its paces in the next few days.

Over years of watching, I've found a temperature discrepancy with the airport's temperature versus Centretown's. I notice that the airport's temperature bottoms out and begins rising before Centretown's, in the morning. This morning, for example, the temperatures were three degrees apart a couple hours ago. Now, however, the difference is just 1.7 degrees, and the Dew Point is actually lower in Centertown. I don't have a good theory for this. Post-sunrise, you can chalk it up to inceased insolation at the airport site, versus Centertown, which remains shaded out for a little while. I can speculate: a dome of warmer air persists above the city at night; towards dawn, the temperature differential with the surburbs causes a gentle breeze, and the cooler air begins to displace the dome. That's the best I can do for now.

Have a good week, and a good New Year.

-Bill

Random Notes

2018-12-25

Well, V 4.82 is running nicely; and my changes to wxCondition worked. There'll be more new versions in coming weeks, as I implement some of the ideas I've come up with lately.

I'm now busily working out the screens for the new version of mcOCR. I'll want for everything to be controlled by the interface, including character sizing and positioning; so there'll be a fair bit of shifting around, until I get what I want. I'll be cleaning up the program, too, as it sometimes forgets what mode it's in or, in adjust mode, sometimes forgets to redraw.

I'm pleased to say that I now have all of the data for 2019 pre-loaded: sunrise, sunset, sunlight, moonrise, moonset, moonlight, moon phase. I've added to the data table in the This Month and Last Month pages, to show sunrise/set and moon phase; and I've added the same sort of table to Next Month, in case you want to check out sunrise/set in advance.

As mentioned earlier, I'm slowly adding accordions to my pages, to shorten them up. Problem: the accordion state is not preserved across page refreshes. May have to do something about that.

With any performance gains I get through my drive to speed up page regenerations, I'll add some more locations to be tracked, for a worldwide picture. That'll mean coming up with some new versions of data-gathering tools; but, then, that's exactly the idea in the first place: the data feeds can change; and the data-gathering programs can change; but the weather server doesn't have to. I like the idea of adding worldwide locations; it'll get me some experience in dealing with different data formats, and also expand the range of websites/data sources from which the tools will be able to capture data.

I took a long break from developing StationBase. It was getting into my daily routine; I couldn't stop thinking about it, working on it; and the bugs just kept coming. Now, I don't mind that kind of obsession in a job--it makes me a better employee--but not for free. I'll get back to it in the next few days; and I believe my To-Do list was fairly short. In the next few weeks, I'll polish up the program, stamp out any other bugs I can detect, whip up some documentation, and post it for download as a Beta product.

In other news, I'm working on a new hardware project: building a four-foot box loop antenna, for DX'ing. For this, I have to bond four cardboard boxes together, for a framework. Then I'll wrap about 12 turns of wire and attach a variable capacitor, for tuning. I had a loop back in the 90's, and loved it. The gain and directionality of a loop antenna are mighty impressive. As my receiver has no antenna input for AM radio, I'll be coupling it passively; i.e. just setting the receiver inside the box. That works surprisingly well. I've spent many a New Year's Eve DX'ing; on the West Coast, that evening was often clear and cold—good DX'ing weather; here, it's just a convenient pastime while surviving the evening.

On the home-repair front, I've been active. I recently remounted our doorbell ringer, mounted a curtain on our new balcony door, and ran a wire between the two balcony dividers. In the summer, that wire holds up a piece of bird netting, that serves two purposes: first, it allows the beans I plant each year to climb; second, it dissuades the cat from leaping through the balcony rails to an uncomfortable landing a storey below. And—I know you'll appreciate this one—yesterday I got myself a new whiteboard. It's about four times the size of the one I had; and you can never have enough whiteboard space. ;)

For 2019, I intend to continue to develop MCH, implementing new ideas as I come up with them. I should have StationBase (the first release version, anyway) out the door early in the New Year; and then I can turn my attention to finishing the compiler and instruction processor for vCPU, my virtual microprocessor emulator. That's been a fun project; it's forced me to start learning my hexadecimal math tables and to delve back into interrupt handling, exception procesing, two's complement notation (which turns out to be the easiest thing in the world: you just invert the bits and add one), et cetera. I know there'll be some challenges ahead, but I've been thinking about this program for months to years, and I've mostly solved all anticipated problems in my head, at this point. The way I've mapped out instructions to codes will make the parsing much easier, too.

With two software projects about to be wrapped up, and more ideas than I have time for implementation, Demmery Software is well-poised for 2019. There'll be no shortage of things to work on.

Finally, while I no longer consider myself Christian (I was born into the Anglican religion, renounced God around age seven, as soon as I could think for myself, and am a full-fledged atheist nowadays), I'll wish most of you a merry Xmas, Kwanzaa, Hanukkah, or any other solstice festival, a happy new year (Gregorian or lunar); and a dignified and solemn Ramadan (sorry, I borrowed that last bit from Krusty the Klown).

Me, I'm spending Xmas with my family. The spouse is going to celebrate a secular Hanukkahmas with her platonic lesbian girlfriend. All's well.

In other words, have a decent one.

-Bill

Coming Up: V. 4.82

2018-12-22

I've got V. 4.82 of the weather server queued up for the Sunday-morning reboot. In this version, any Observations data package may include the prefix -ow in its filename, like so: CTO-Observations-20181222_1459-ow.txt. The -ow is a flag telling MCH to override any previous observations (from that date and tiem) with any data found in the packet. In any position, the word 'skip' will tell MCH not to process that item. Precipitation items are ignored.

I've done this partly to repair recently flawed weather observations.

-Bill

A Funny Thing Happened...

2018-12-17 (updated 2018-12-25)

Around 8:45, I noticed that the system hadn't updated Centretown or the Living Room in about an hour. I immediately suspected wxCondition, and as the memorized entry count was just over 255, I deleted all entries, save for one. To no effect.

I noticed that the donor stats were being updated by wxCondition, so backup-data capture was working okay. I watched for several minutes and noticed that no files were being submitted from the main feeds (inside and CTO-outside).

Well, it turned out that, in fact, the capture server had lost its network connection. That happens about four times per year. I rebooted it, and the data flowed through. One catch: I'd deleted all the earlier data, so we have about an hour's worth of the relative humidity reading 1%. All told, small price to pay. And, once again, a lesson learned: don't go deleting stuff, willy-nilly, until you understand the problem fully. Update 2018-12-25: I've since repaired the data, using the new override feature.

In other news, I've added to the Next Month page a grid that lists the normals for each day, plus the sunrise and sunset. I'll add it soon-ish to the Airport site, as well.

Also, as part of an effort to speed up the page-generation process, I'm going to be benchmarking page regens and database lookups, to see where the delay is. It can take up to 20 seconds to regenerate a complete web site; that's too long.

Jesus, this is a day for updates. In the course of mounting our new doorbell, my netbook came alive again. The two are interrelated; I was using a cheap outlet extender on the end of the long extension cord, to get power to the vestibule area. The thing was too cheap, apparently, and only one of its outlets worked. Quickly swapped it to something less primitive. So, now I have the live feed from our security camera, and the netbook's lid cam, to be upgraded eventually. I'm set.

I've noticed that the local humidity readings are high. The backup sensors sit inside a Stephenson screen, under a small patio table. Unfortunately, the contractors have so far failed to install new eavestroughing—and so it's very wet. It'll dry out in the spring, and next year (presumably), we'll have eavestroughs.

Well, enough with that.

-Bill

wxCondition 2.0

2018-12-16

This morning, I've completed testing of wxCondition 2.0. It vastly improves the program's functionality and utility.

First off, let's establish a little terminology. Readings to be memorized and drawn from are 'Donor Readings.' And readings to be affected are 'Souce Readings.'

So, let's suppose you have a main feed for one of your locations—that's the Source feed. Let's say you have backup sensors reporting as "Alt"—and that's your Donor feed. With me so far?

There are three ways to invoke wxCondition:

  • wxCondition -g {DonorLocCode} - get/memorize donor readings
  • wxCondition -ps {SourceLocCode) - Only inject manual readings
  • wxCondition -p [-pr O|A] {SourceLocCode} {DonorLocCode} {InstrStr} - Apply donor readings
    • Optional paramter -pr O or -pr A means give preference to Original (Source) (Default) or Alternate (Donor)
    • {InstrStr} format:
      Datum Name - two characters (Te, BP, RH, ...)
      Separator - neutral character of some type Instruction - One Character:
      • M - Replace source value with donor value, if source value missing
      • U - Replace source value with donor value unconditionally
      • H - Replace source value with donor value, if donor value higher
      • L - Replace source value with donor value, if donor value lower
      • P - Only process according to preferences
      Separator - neutral character of some type

At any point, if it replaces a value, it recalculates any related values; i.e. Dew Point, Humidex, Wind Chill Index.

Now, I'm going to deploy this directly into production. I know this goes against everything I've learned; but sometimes, you have to be pragmatic. It'll take too long to test in my SIT setup. Basically, in four or five days, we'll know if it's working properly; and I'm confident that it will. In the worst-case scenario, we'll be without Relative Humidity readings for a few thours. So the risk analysis returns minimal.

Incidentally, the incidence of mcOCR capturing backup data has now completed 24 hours of perfect capture.

I'm thinking of revamping the site's web pages to include accordions (they make sections of content appear/disappear); it'll make the longer pages much more navigable.

And a final note: I've given up on the idea of taking this project open source. It's just too complicated, with too many pieces. So it'll remain a one-off wonder, quitely capturing data and generating web pages over the years. I have other open-source projects to publish. Now, should anyone ever want a copy of the source code, I'll gladly make it available. Gladly.


Changes

2018-12-12

I'm pleased to say that 'native' relative-humidity readings are now being captured, every five minutes, thanks to backup sensors. It'll take just a couple minutes to restore to 'borrowing' Environment Canada's reading, come to that. But that's given me a thought.

At present, I have a program—wxCondition—to capture relative-humidity readings from one set of readings, and restore it to another. I simply switched the inputs. But I've come up with a much-better idea.

wxCondition at present expects inputs to come from only one source. I can, instead, store readings from multiple sites, and substitute them as I please. For this, I've got a rewrite of wxCondition planned. Capturing data will be as before, except that the data are stored in a file according to its source. All data will be captured, in this way. For the substitution phase, you'll be able to specify not only the file to be affected, but also the set of 'donor' readings to draw from; whether to apply a random-wander factor; and which values should be substituted and under what conditions. For example, you can express a preference for one set of values over another; and for each data item tracked, you can specify whether to go with the highest of the two values, or the lowest; you can replace one value with the other, either when it's empty, or always; you can process only according to preference; or you can not process the value at all.

For my purposes, I'll always have the backup sensors running. I'll capture that data, substitute the RH value always, and substitute when something's missing from the main feed. That should increase the system's already-phenomenal data-capture accuracy and allow automatic fallover during main feed failures.

I've worked out an elegant syntax for this. I'm going to have to schedule some time very soon for this; I've already completed the planning stage.

Here, incidentally, are before-and-after images of a typical capture from the backup sensors. Note how the image is out of focus, with very low contrast. Nonetheless, mcOCR picks up on it and reports correctly—and, remember, this is with cheap, outdated consumer equipment. Note in the second image, the small purple squares; they mark the "control" or "calibration" area for each character, guaranteed to be empty. It is against this control area that each segment is tested, to determine whether it is lit.

Raw Image:

Deduced Values:

And Just a Note

2018-12-10

Tomorrow marks the first turning point in the march of winter: the earliest sunset of the year. This date varies a little, depending upon your latitude. It's caused by the Earth's orbital eccentricity; i.e. Earth's orbit is not a perfect circle, but an ellipse. At this time of year, Earth is very near perihelion (see my article on the subject here)—its closest approach to the sun for the year—and moving at a little greater than the 'average' orbital speed per day. This is causing both sunrise and sunset to shift 'backwards' (later); with the run rising a little later and setting a little earlier, that has the net effect of making the sunset hit its earliest point ahead of the solstice (Dec. 21—the longest day of winter), and reinforcing sunrise's march. Sunrise will reach its latest point late this month.

All of this underscores how astronomy is worked into the very fabric of our existence. The fact that the sun 'moves' eastward in the sky, by about a degree per day, means that the stars turn through one complete rotation every 23 hours, 56 minutes (and 4 seconds, if you must). That is the actual rotation period of the Earth—referred to astronomically as the "sidereal period." So now you know, just in case it ever comes up in casual conversation.

I was into astronomy by age seven, and my interest has never waned. Lately, I've been delving more into theory—Lorenz transformations, relativistic time dilation, length contraction, and so on—more mathematics. Good thing I haven't forgotten much of my high-school math (which I finished, incidentally, a year early, because, y'know, I'm bright).

The next turning point is, of course, the solstice itself, on December 21. After that, there is the latest sunrise of the year, again around late December; and following that, perihelion, on January 3. And then we set our sights on Spring, which in 2019 begins on March 20.

Another thing you might be noticing this time of year, when sunrise and sunset often coincide with our commute to and from work. Next time you're out, on a clear day, right around sunrise or sunset (which you can always find for any day of the month, here at CTO), look (IF IT IS SAFE TO DO SO) at the horizon opposite from the point where the sun has just set, or is about to rise. Chances are good that you'll see a darker slice of the atmosphere, hugging the horizon. As time goes by, it rises and fades away (or concentrates at the horizon). You've probably seen it many times, filed it away as "Doesn't affect my life." What you are, in fact, seeing is the Earth's shadow, cutting up through our atmosphere. Another great Fact to Forget.

Incidentally, that bright, star-like object that rises in the East ahead of the sun, right now? That's Venus—our sister planet. Did you know? Venus' equatorial diameter is just a few-hundred km smaller than Earth's. At 108-million km, its orbit is about two-thirds as large as Earth's (classifying it as in "inferior" planet—one whose orbit is inside the Earth's). Venus has a thick, carbon-dioxide atmosphere and a runaway greenhouse effect. In the telescope, Venus is a featureless white ball, unless specialized filters are used; and even then, only patterns in the clouds are revealed. Radar surveys reveal mountain ranges and curiously flattened volcanoes. And not a drop of water in sight. Yet another Fact to Forget.

Oh, one more thing. That bright star, now rising late in the evening, in the Southeast, that twinkles madly, and often in colour? That's Sirius—known even in my lifetime as the Dog Star. (Due to its being the brightest star in the constellation Canis Major--the Great Dog.) Canis Major is one of several companion constellations to Orion, the Hunter, two others being Taurus (the Bull), featuring the red giant Aldebaran, and Canis Minor (the Lesser Dog), anchored by its bright star, Procyon. Orion itself is visible late at night, at this time of year, as a large X, with three stars in the middle (the "Belt"). Below that hang three more stars (the "Dagger"). On a clear night in the country, you can see with the naked eye that one of those stars is fuzzy. It is, in fact, the Great Orion Nebula (Messier 42, or M42, to starheads like me). You've doubtless seen pictures of it, or of the many cocoon-like dust balls within, where new stars and planets are forming. It is one of just a handful of objects, that are not stars or planets, that we can see with the naked eye. And with that thought, I'll let you go for now.

-Bill

Frustration

2018-12-09

Some ideas from StationBase are beginning to percolate through, such as the idea of performing binary searches on sorted data. That would speed the system up a bit. I'd like to expand the dataset it tracks, and possibly revamp how it stores data.

I'm running into frustration trying to restore local values for relative humidity. About a year ago, my RH sensor became unreliable; since then, I've been 'borrowing' the airport's RH value. It's not an ideal solution; usually, the temperature is a little higher downtown, and the RH a little lower. But the total heat energy in the air is about the same, as witnessed by the dew point, which is usually quite close.

About a week ago, I started testing with backup sensors. The signal can reach the server room, and I've got a little stage set up for the capture. I've got mcOCR set up and waiting for a feed. The missing element is a working webcam. For the past week, I've searched high and low, and the only models I can find are upwards of $80! I'm sorry, I'm going to connect it to a computer that's worth less than the webcam! And so I remain in search. I've learned that The Source's inventory-control system is good for nothing; all kinds of products that are supposedly in stock in any given store, aren't. Why have a website, with a check-stock capability, if that capability doesn't work?

This morning, I'm going to swallow my pride and visit Wal-Mart. Perhaps they'll have something. I don't even need something new-tech; a .3 MP (that's 640x480) webcam would do the trick just fine.

So, the long and short of it is that within the coming week I hope to have local readings restored for Relative Humidity.

Another frustration is the number of ideas I have, compared to the amount of time I have to execute them. For example, right now I'm juggling the development of StationBase, in two editions, and vCPU--the emulated CPU and virtual computer. But in the meantime, I've come up with lots more ideas, which just have to wait around. Most of them are in the contemplation or planning stage, where occasionally I create or modify planning/engineering documents; and most will continue to be for some time to come. Because at present, my projects whiteboard's Planned section is becoming rather large:
  • Weather Server: upgrades to data-handling, storage
  • wxUpdates: add Password to the data submitted
  • mcTool: Weather server management system
  • Atmosphere/weather simulator, V2
  • Virtual Projects Whiteboard (webapp)
  • Database and indexing unit for general purposes
  • Light database application
  • mcOCR overhaul; kill some bugs; make the program more functional, especially around setup stuff.

A final note: I'm into a lot of stuff. Technically, it's stuff I'm not 'qualified' to do. Who cares? I do it anyway. All my life, I've had a burning monkey curiosity to know everything, understand everything. Vocationally, I've taken the same approach: never pass up an opportunity to do something new, learn something else. It's the reason why I've become so good in so many areas: writing/documentation (I have literally hundreds of authoring credits), editing/proofing (I've done it professionally), programming (did it professionally 30 years ago; doing it professionally now), bookkeeping (I kept the books professionally for my employer for 20 years, and for another 10 for private clients), admin support (25 years' experience), budgeting, PC and network hardware installation/servicing (30 years), event planning and management, software testing, light maintenance, all things radio, medical terminology, basic electronics, cooking, mathematics, kitchen management and meal planning; astronomy, meteorology, data-entry, ichthyology (yes!), house painting, history, geography, cartography. I could go on. The point is that I've never allowed my relative lack of an education to interfere with my learning. When I get interested in a new thing, I plunge in headfirst, learn all that I can learn and then devise a practical application. If I'm given the opportunity to do something I don't know how to do, I bloody well look it up, ask questions, learn how--and fast. I learned that from my co-workers. Phrases like "Oh... I don't know how to do that, sorry" and "Well, that's not in my job description" are not in my vocbabulary. The answer is: "Yes, I can—or I can learn how." You don't have to tell me a thing twice. And my education is continuing--I still soak up information like a sponge. What I'm trying to say is that, just as TPG and Newgate 180 found me invaluable for my adaptability, so can you--by hiring me.

I credit this all to my father, who was (and still is) a one-man swiss-army knife. He was a steely-eyed sonar man in the navy, for 25 years. I've never seen him hire someone to do a repair, save for once. He built most of the downstairs of our home in Sooke, BC—to code. When I was very young, he bought a number of encyclopedias, which I pored through constantly; by age ten, I was trying to compile my own. He always encouraged my exploring and experimentation, knowing that even though I was doing a lot of weird things, I was, first and foremost, learning. While I was at it, I got really good at distance running and other personal athletics. That's a whole other story.

Never stopped learning, Dad. Never will. And still doing lots of weird things.

Addendum 2018-12-10:

I've concocted a scheme whereby I'm going to swipe the recently-replaced security camera at the front entrance, and use the old netbook's built-in camera until I can get a replacement. The Scrounge strikes again!

Addendum 2018-12-15:

Well, a funny chain of events ensued. I got the netbook's lid-cam working, swiped the webcam to upstairs for backup-data capture—and the netbook died. I suspect the power supply. Gonna be a while before I can replace it. In the meantime, the spouse surprised me with a Wyze security camera—a cheap little thing, but, hey, it's wireless. Unfortunately, it came with a phone-based webapp—there's no way to access it over the network, or from a Windows or Linux box. There are alternate firmware implementations out there, which purportedly turn the camera into a regular streaming device. I may be able to do something with that. I find it very convenient to have an image from the securicam on my home page, and miss it.

Now, before it starts to sound like I'm bad-mouthing the camera, I'm really not. It has much to recommend it; such as the ability to deliver video in up to 1080p resolution. It has a bit of a fisheye view, which is also handy as hell. Colour and brightness renditions are good, and it functions well both in high-light and low-light environments. Contrast is sharp, and backlighting compensation is good. It's well-constructed and comes with mounting equipment; pop-out legs and a pan base enable it to be positioned for an optimal view. It's reliable, and it works when you're out and about. And, even in 360p resolution (the lowest), the image quality is very good, indeed. You can either listen in, thanks to the built-in micrphone; or transmit your own voice through the built-in speaker. There are motion-detection and alert features, the ability to record to an SD card; and the capability to record very short clips to the cloud. The camera also has a 'night-vision' mode, which does seem to involve some IR detection. All in all, for its price, this camera is a tremendous bargain—and you won't hear me saying that often.

That said, what I don't like about it is the need for a phone app to access it. No device should require a phone app for setup and operation, unless it is a phone accessory. So sayeth I. The other point is that, again, you can't access it without the phone app--something I find needlessly and inexplicably limiting. I don't trust phone apps in the first place; the amount of privacy invasion and snooping you have to put up with, just for basic functionality, is a crying shame. You're a security-cam app? Then why do you need access to my pictures and files? That stuff matters, to me—and it should to you, too.

-Bill

V. 4.80

2018-10-21

I've released v. 4.80 of the weather server. In this version, if there are multiple Readings (Observations), Statistics or Forecasts files waiting in a location's Inputs folder, the filenames are then cached and processed chronologically, respecting granularity (specifying how mahy files are to be processed at a time).

This version also fixes a hidden bug. I was tracking latitude, longitude, and their components with smallints (signed bytes). All very well and good, except that longitude values can reach 180--out of range (a SmallInt can track values through the range -128..+127). Those variables have now been changed to type Integer (signed, two bytes; range -32768..+32767). I found it during a gedankenexperiment associated with the production of mcTool, the GUI server-manager tool that I'm now planning/beginning to work on.

-Bill

V. 4.76

2018-10-07

I'm releasing v. 4.76 of the weather server, MetCommand-Home. It's due to go into production with the automatic sever reboot this morning. This version adds several features. First, it is now possible to reload a location's info on the fly, in case you've edited it. This is accomplished by the new RELOAD-LOC-loccode directive. Second, the templates.ini file now has two additional parameters, automatically added in by the software, but editable. The first, SaveEveryMinutes, sets the number of minutes between saving the templates.ini file. The second, LastSaved, specifies the date and time the file was last saved by the system. Finally, on query outputs, MCH now gives the reponse file a temporary name, changing it only when it's completely written. This is to stop some of the CGI-BIN programs from reading a response file too early.

That's about it. I've been focusing my development efforts this week on StationBase, the Desktop Edition of which is coming along very quickly.

-Bill

Downtime

2018-09-23

We've had some downtime, from about 18:00 Friday, to 19:15 or so last evening. This was our longest blackout since the Great Blackout of 2003; and, I have to say, it was quite informative. When it first went out, my comment was "It almost never goes out in Centretown. They'll have it back in no time."

Then reality set in.

We turned on the radio, to get more information. They were talking about a tornado in Durobin, and massive power outages. Very early on, Ottawa Hydro was calling this a "multi-day event." I relucantly resigned myself to a protracted period of living with no electricity.

Around mid-evening, I got bored, and started hunting around for things to keep one entertained during a blackout. I looked my pretty missus up and down, and thought hard: what would they have done in the old days?

Answer: I hauled out the (battery-powered) radio and started DX'ing. To understand why, you have to appreciate just how radio-noisy is a modern urban environment. Power-lines and house wiring, any device with a motor, old-fashioned fluorescent tubes, and an array of wireless devices, routers, other radio devices, range extenders, etc., televisions and monitors,set-top boxes, bluetooth devices, mobile devices including phones, all contribute to the noise level. And a tremendous amount of it seems to hit the AM band; on some frequencies, and in some directions, it's an absolute din.

But not during a power outage. In a massive one, you could be kilometres from the nearest radio source. The band was incredibly quiet, though a general faint shush of static to the north told me that power was somewhere nearby. We'll get back to that. The point is, as any DX'er knows intuitively, during a power outage, the AM band is quiet. So I started DX'ing.

By morning, I had made several trips around the dial and bagged six new stations (for a single session, after 30 years and 600 stations, six new ones is as rare as diamonds used to be). I kept going through the day, and found that I could hear stations I hadn't heard since my glory days of the late-nineties (when I had the Optimus receiver that was second to none, and the radio-noise floor was far lower). I filled two pages with loggings and will be poring over them for a couple of days, pinning down stations I couldn't identify at the time. There are many ways to identify a station: listen for local references (ads and phone numbers are great for that); from which direction is the maximum signal coming from; what kind of content are they playing; what time did you hear them; in which language are they presenting; and so on. The moral: I can almost always find something to keep myself amused. And, in fact, my detailed logging info brought about, on closer examination, three of those six new stations.

The power came back on around seven-fifteen last evening. We were just about to head out to seek provisions, when the house came back to life. I'm pleased to say that I had most of the electronics unplugged; and most of them survived. I took my time to make sure that the Internet connection was working, then brought up the server and finally the other computers. So far, so good. I did notice a problem whereby I was apparently losing data every 10-15 minutes; not all of the readings were showing up. A check of the log file for mcOCR indicated that all the output files were being generated; and the Outputs folder was empty. That led me to the /home/public folder, where incoming observations are held before distribution to the various locations' input folders. I noticed a number of unprocessed observations files. A quick test told me that the preprocessor was failing on one file, which was in the process of being copied as the power failed. The file was empty. Simple solution: delete the file. Now, the preprocessor chewed through input files; and three minutes later, I had all my readings.

I am sorry to say that the monitor attached to the local-data capture server appears to have died. This is not the problem that you might think it to be. I have network access to the command line on that machine. Further, the GUI program that actually captures the data outputs both the data, and the marked-up image file, with the LED segments superimposed; that makes it dead-easy to tell if the alignment is off. If so, you can simply edit the .ini file, and have the GUI program reload it, right from the command line. So there's no actual need for a screen on that computer. I will have to cobble together some quickie program to feed a manual precipitation reading in and have it added to an input file. That'll take about an hour.

I'm about to head back to work on StationBase. I've hard-scheduled a server software upgrade for next Sunday morning; there'll be downtime, but hopefully early in the morning, and hopefully for not too long. I have a written, checklisted plan, so that everything I need gets backed up and restored.

And an epilogue for this story: our search for provisions ended a single block away, where the corner store, and that block, had been powered the whole time and never experienced more than a quick power glitch. Normally, that's our story.

Okay, I've got radio loggings to punch in.

-Bill

Oh, Wow

2018-09-17 (Updated 2018-09-20)

As mentioned, I got to thinkering yesterday with the way that MCH reads and processes records. To date, I've always gone for maximum reliability by saving changes to records almost as soon as they've happened. I added a flag yesterday; it's meaning is simple: do, or do not, save records immediately. If there are multiple input files available, then records are not saved until the last file has been read. (It respects granularity.)

To test it, I copied several-hundred records into one of the input folders. And, instead of picking them off at about 3-4 per second, it went—snarf!—and took the pile of them down almost instantly.

There will be a new version of the software this Sunday, probably with a few more fixes and/or features tacked on.

To make the task of administering MCH easier, I'm now in the planning stages for a piece of GUI software that will manage most of the tasks you now have to run on the command line or with a text editor. This piece of software--for now, code-named mcTool, will let you manage:
  • Your server status (Start Up or Shut Down)
  • Your Locations
  • Your events and anniversaries
  • The System Properties
  • User Tags (analogous to simple CSS)
  • Your system .ini file
  • Your DST rules (Daylight Savings Time)

This is still only in the planning stage. I have two major software projects underway at the moment, in the two versions of StationBase.

-Bill

v. 4.72

2018-09-16

I've released v. 4.72 of the weather server, MetCommand-Home.

In this version:
  • I've made sure that no sunlight is recorded during non-daylight hours. If sunlight is reported during those times, it is ignored.
  • I've added granularity factors for most types of input files. If MCH isn't run for a while, but the data feeds are intact, then input files will begin to build up. It takes MCH a little time to chew through all of those files; and, to date, it's done it all monolithically at startup, reading in all the input files for one location; then the next; and finally generating web pages. If there are thousands of input files, it can take a while before your system appears to come to life. I've changed the process so that for each type of file (statistics, observations, forecasts), MCH will only process a maximum of so-many files at a time; then it will move on to the next task. Now, pages are updated on-time, even while MCH is still chewing through data. The granularity is set through three new System Properties:
    • ReadingsFile_Granularity (default 100)
    • StatsFile_Granularity (default 10)
    • ForecastsFile_Granularity (default 10)
    I tested it extensively last night; it proceeds round-robin through each file type and location, pausing to regenerate web pages on schedule. It's good.
  • I found a function that was not returning a value. I found that in actual use, the value was ignored, anyway. Nonetheless, I fixed it. I mention it only to waste your valuable time.
I have a lingering concern that it takes MCH too much time to process each input file. I've entered an item into my To-Do list, telling myself to look into the matter. This I shall do, and hopefully some improvement can be found. I'm optimistic, because I built the routines using the 'plush-model' concept; things mostly by-the-book; one instruction per line; everything broken out into subroutines. I expect that there's room for improvement. I believe, for example, that every input is followed immediately by saving records, for purposes of integrity. Perhaps a flag could be set for this activity to be suspended until after the group of files has been read. That would certainly speed things up. Perhaps that flag itself could be controlled by a system property, so that really paranoid operators of the software could sacrifice speed for increased security (that said, in six years of operation, the software has never crashed, or otherwise lost data, while loading observations).

-Bill

New Server Version

2018-08-28

I've been working on MCH. I've tweaked the Moon Phase calculation routines to give more-useful information, and I've expanded the forecast-terms storage; there are now a maximum of 65,535 entries possible—that's up from 255. The switch from one byte of storage to one word was surprisingly easy; I changed the types of a few variables, and tweaked a couple of routines to ensure they returned the proper results. That's now in testing for the weekend.

At present, that's all she wrote for version 4.68. It is slated for Production come the Sunday-morning server reboot. I'll be looking for other fixes and features to implement between now and then.

-Bill

Overhaul

2018-08-26 (Updated 2018-08-28)

I'm giving the website an overhaul; making more use of CSS; making sure pages are displaying properly and are properly formatted; and so on. While I'm at it, I'm also trying to adjust-out the final errors in data capture. I find that sometimes there's a glitch, where a reading jumps temporarily. I'm identifying these problem points and applying corrections to MCOCR. They're almost all gone.

Over the next few weeks, I'll be checking the sites page-by-page for errors, problems, and opportunities to simplify the pages using CSS. That'll keep me busy for a little while. I'm also still actively developing StationBase, which is almost ready for a real beta test.

I've made over the site for our living room. It looks great. I'll make it publicly available soon. I'd hemmed and hawwed over the years, fearing that it could be used for some sort of surveillance. I've finally concluded that there are other ways of telling if someone's at home, and exposing the living room website will pose no additional risk.

Just an update; I've added a full set of Moon activities for next year. I'm embarrassed it took me so long to realize they were missing!

Still waiting on the balcony to be rebuilt. There's progress, but it's damned slow. I'm going to have to revise my service-restoration date to October.

-Bill

Odds and Ends

2018-08-11 (updated 2018-08-18)

I've been applying the oh-so-useful dropdown menu to the Ottawa Airport pages, to replace the old chiclet array. Much neater. I'll next work on the templates for site-lookups, so we'll once again be using a common look-and-feel. While I'm at it, I'll update the CSS.

I'm also touching up the site, here and there, hopefully to make it more understandable.

Apart from that, the software continues its bullet-proof run. There are a few minor issues that I'm slowly identifying; but no hurry.

-Bill

Low Batteries

2018-07-12

I'd noticed lately that the remaining readings being captured locally were fluctuating wildly, or reading nonsense; thus the less-than-optimal capture accuracy rate this week. Turns out that low batteries were at fault.

The batteries have been replaced in the sensor, and we are now receiving believable readings again.

-Bill

Capture Accuracy

2018-05-02

I offer up the following figures in support of my claims for a very high data-capture rate in mcOCR, the OCR-data-capture program that translates local weather readings into inputs for MCH. Here's how things have looked in recent weeks:

Week Ending On Hits Misses
Apr 1 15560 1
Apr 8 15560 1
Apr 15 15561 0
Apr 22 15561 0
Apr 29 15561 0
Totals 77803 2
 
Error Rate: 0.003% (3E-5) (0.00003)

That's why I claim an accuracy rate of 99.99%. After five years of tinkering, the program really is that good. And, remember, I'm not using professional-quality equipment. It's all retail, consumer-grade, and very old. Anyway, you can check my numbers in the shutdown report files--they're there for all to see.

-Bill

Errors

2018-02-10

I noticed yesterday morning that I was getting data-capture errors. A quick visual inspection showed that the images returned by the webcam were very dark. I left it go at first, having learned from long experience that these problems usually are transient.

A quick check a couple hours later showed that the problem was still there. Another visual inspection showed that the spotlight on the data-capture stage was burning out.

Replaced the bulb, and almost end of story.

Just two points to make. First, that it's the first time I've lost a CFL after only about five years. Second: with the system (mcOCR, to be specific) still capturing 60-70% of the data, in deep shadow, I was amazed at its performance under low-light conditions.

(Update @ 22:35): Well, it's been a perfect trifecta of downtime over the past couple of days. This afternoon, while vacuuming, my SO bumped the data-capture stage,throwing the camera out of whack. We lost about an hour's worth of data (half an hour before I noticed, and another half-hour getting the thing realigned and mcOCR's settings adjusted). Then, just to round things out, this evening someone joggled the network cable to the data-capture server, putting it out of action for three hours. Luckily, this didn't affect the main system otherwise, and as soon as the network routing had been re-established, the data came pouring through.

I'm releasing version 4.66d in the morning--it fixes (finally!) the moon-age bug. I couldn't find code that actually worked, so I put my in-depth knowledge of astronomy to good use (been heavily into it for 45 years and counting) and wrote my own. And it does work.

-Bill

Update

2018-01-26

I've left the system as it is for the past month or so. I'm debugging one routine that doesn't really impact operations.

All told, we've had a pretty normal January here in Centretown. Temperatures have averaged just over half a degree below normal, precipitation has been 45.5 (normal 48.5), and sunshine is bang-on at 83 hours. Temperature and sunshine should finish more favourably by month's end.

Already the first signs of spring are coming. Sunset, for example, is already a good 40 minutes later than it was at minimum in early December. Sunrise has only come back by about 15 minutes, thus far; but it's a start—and it doesn't let up until late June.

In the meantime, I'm working on a new project: StationBase. It's a tool aimed at DX'ers (people, like me, who stay up late with a radio and try to catch long-distance stations), to help them keep their records straight. It handles multiple locations, sets of equipment, station records, and individual loggings. I'm expecting to start a semi-public (by invitation) beta test by late-February, or early March. This time around, the program is a web application, written in Java and designed to interact with the operator in realtime. I've got some screen shots up now. The program still doesn't have much personality; I'll add that as we progress closer towards beta.

-Bill