Fifteen Years! Story of a Cancer Survivor
On the night of September 10, 2001 (note the date), I found a lump on my right testicle. An ultrasound examination confirmed there was something there, and a visit to the urologist confirmed it was cancer.
You can imagine how I felt on September 11, watching those people falling from the twin towers and, in a way, envying them.
They operated on October 19. The news at first was not good; it was a particularly aggressive form of cancer, and I'd likely have to go through chemotherapy and radiation treatments. I was on a waiting list to see an oncologist.
Remarkably, just before Christmas, I had some bloodwork done, and the indications were that my tumour markers were close to zero. In consultation with the oncologist, I decided to wait it out and see.
That was fifteen years ago. I've been cancer-free ever since. I was essentially pronounced cured at the five-year mark.
Now, if I could just get rid of the phantom right testicle that still aches once in a while.
Wednesday, 19 October 2016
Saturday, 6 August 2016
MCOCR Overhaul
I recently overhauled MCOCR--the optical-character-recognition program that captures local data for the Centretown Observatory. The program was still generating too many errors, and I wanted to make it easier to use.
In the image above, you'll see some changes from the old version; there've also been some changes under the hood.
New .ini Directives
I've added a new, optional SegThresh directive, designed to be used within Group (value) definitions. It allows you to specify a segment (0-7) and a threshold value (0-100). That then becomes the threshold value for that segment only, rather than the default for the whole character. I added it in for situations where you just can't find a threshold value that'll work for the whole character.
Working Positioners
You'll have noticed the addition of a new positioner: "Char Adjust." We'll come back to that in a minute, but first a general explanation. Each positioner generates an X-Y offset value to be applied when scanning that character. You would first hit the [Adjust] button, to enter Adjustment Mode. Under "Global Adjust," the positioner adjusts the positions of all scanning elements at once. For finger-grained control, select a Location, then one of the values from the "Group Adjust" listbox. Any adjustments there only affect that group (i.e. barometric pressure, temperature). Finally, you can adjust the positions of individual characters through the "Char Adjust" buttons. Incidentally, the button in the middle of each positioner resets the offset values to zero.
Hitting the [Adjust] button a second time makes the values stick.
Menu Bar
I've added a menu bar, with which we're all familiar. It includes a provision to 'seed' the precipitation-to-date value, with either Zero or the most-recently-recorded value.
Bottom Line
The program has grown much easier to use and is capturing data successfully 99.98% of the time. I'm soon going to release it into the wild.
-Bill
![]() |
| MCOCR v. 2.32 in Action |
In the image above, you'll see some changes from the old version; there've also been some changes under the hood.
New .ini Directives
I've added a new, optional SegThresh directive, designed to be used within Group (value) definitions. It allows you to specify a segment (0-7) and a threshold value (0-100). That then becomes the threshold value for that segment only, rather than the default for the whole character. I added it in for situations where you just can't find a threshold value that'll work for the whole character.
Working Positioners
You'll have noticed the addition of a new positioner: "Char Adjust." We'll come back to that in a minute, but first a general explanation. Each positioner generates an X-Y offset value to be applied when scanning that character. You would first hit the [Adjust] button, to enter Adjustment Mode. Under "Global Adjust," the positioner adjusts the positions of all scanning elements at once. For finger-grained control, select a Location, then one of the values from the "Group Adjust" listbox. Any adjustments there only affect that group (i.e. barometric pressure, temperature). Finally, you can adjust the positions of individual characters through the "Char Adjust" buttons. Incidentally, the button in the middle of each positioner resets the offset values to zero.
Hitting the [Adjust] button a second time makes the values stick.
Menu Bar
I've added a menu bar, with which we're all familiar. It includes a provision to 'seed' the precipitation-to-date value, with either Zero or the most-recently-recorded value.
Bottom Line
The program has grown much easier to use and is capturing data successfully 99.98% of the time. I'm soon going to release it into the wild.
-Bill
Sunday, 5 June 2016
The Greying of the Recent Past
It's something I run across more often as time goes by. I see a picture from the 1970's or 1980's in a paper, on the TV or over the internet, and it's black-and-white. In many instances, I clearly remember having seen the original in colour. What gives?
The only explanation I can think of ties in with an earlier blog post on Linked In, wherein I speculated that, in contrast with the changes seen in our grandparents' and great-grandparents times, succeeding generations are seeing less change. Take my father, born in 1939. By the time he was a half-century old, the world had gone from prop planes and Irving Berlin, to 757s and Bon Jovi.
I followed twenty-five years behind. The world had, or almost had, 747s already then, and the Beatles were up, with Jimi Hendricks waiting in the wings. I'm noticing some recent changes with urban architecture, which is welcome. Apart from that, and the looks of cars and people, not much has changed. We all, of course, walk around glued to our smartphones; I discount that, as even in the 1970's we had (be they rare) carphones and wireless phones.
So, what's behind the trend? I figure it's because photos from recent decades otherwise look too recent. I don't know about you, but one of the ways in which I try to 'date' a photo is by looking, first, at its colour status (is it faded? Hand-tinted? B&W?), then at any people in the photo (extremely helpful, especially with women), and finally for any technological or architectural clues. Absent the latter, the former is introduced by turning the photo to monochrome--instantly aging it.
There are, I think, two problems with this approach. First, and foremost, by eliminating the colour information from a photo, information is essentially chucked away. Electronic search engines tend to favour most-recent references over older ones, and so the B&W versions show up in a proportionately greater number of search results. That skews the view of recent decades, the other problem. The Seventies were a colourful decade, but less so when viewed through the 'greying' eye of history.
See it from my point-of-view: in, say, 30 years' time (when we'll likely still be glued to our smartphones or their successors), you'll most likely see photos from the 20-teens--in black-and-white. Imagine your camera phone snapping black-and-whites. Ridiculous, right? But how is someone of later decades to know that, when all the old images he sees from recent history are... black-and-white. You might feel a bit proprietary about the good-ol' 20-teens, start to feel they're being presented as not nearly as technologically-sophisticated as they were? And you'd be absolutely right. As am I.
Give that some thought.
-Bill
The only explanation I can think of ties in with an earlier blog post on Linked In, wherein I speculated that, in contrast with the changes seen in our grandparents' and great-grandparents times, succeeding generations are seeing less change. Take my father, born in 1939. By the time he was a half-century old, the world had gone from prop planes and Irving Berlin, to 757s and Bon Jovi.
I followed twenty-five years behind. The world had, or almost had, 747s already then, and the Beatles were up, with Jimi Hendricks waiting in the wings. I'm noticing some recent changes with urban architecture, which is welcome. Apart from that, and the looks of cars and people, not much has changed. We all, of course, walk around glued to our smartphones; I discount that, as even in the 1970's we had (be they rare) carphones and wireless phones.
So, what's behind the trend? I figure it's because photos from recent decades otherwise look too recent. I don't know about you, but one of the ways in which I try to 'date' a photo is by looking, first, at its colour status (is it faded? Hand-tinted? B&W?), then at any people in the photo (extremely helpful, especially with women), and finally for any technological or architectural clues. Absent the latter, the former is introduced by turning the photo to monochrome--instantly aging it.
There are, I think, two problems with this approach. First, and foremost, by eliminating the colour information from a photo, information is essentially chucked away. Electronic search engines tend to favour most-recent references over older ones, and so the B&W versions show up in a proportionately greater number of search results. That skews the view of recent decades, the other problem. The Seventies were a colourful decade, but less so when viewed through the 'greying' eye of history.
See it from my point-of-view: in, say, 30 years' time (when we'll likely still be glued to our smartphones or their successors), you'll most likely see photos from the 20-teens--in black-and-white. Imagine your camera phone snapping black-and-whites. Ridiculous, right? But how is someone of later decades to know that, when all the old images he sees from recent history are... black-and-white. You might feel a bit proprietary about the good-ol' 20-teens, start to feel they're being presented as not nearly as technologically-sophisticated as they were? And you'd be absolutely right. As am I.
Give that some thought.
-Bill
Saturday, 30 April 2016
Coming Soon: iLog 1.0
Taking a brief break from ongoing development of MC-H, I've lately been working on another project, which I've dubbed (for now) iLog.
iLog is another project in my favourite language, Pascal (implemented in a modernized, OOP-oriented form, complete with IDE, by Lazarus).
In a nutshell, iLog is meant to be a personal logging system, mostly as a demonstration project to show my programming know-how. It keeps track, for each entry, of Date+Time, what you're doing, where you're doing it, and your current status.
For now, output has been implemented in the same way as with MCH; through a data-output language (hereinafter called DOL) disguised as HTML tags. <@TL>, for example, displays the current time in 'long' format (i.e. with a colon superposed between the first and last digit-pairs). <@PB> positions the pointer to the most-recent entry and updates the records. <@LMR> will display it.
iLog generates pages from templates with embedded tags. Note that with iLog, directives may return empty; i.e. the tag is replaced with nothing and simply disappears.
Data output directly replaces the tags in a page template. Queries to the database are generated with an eye to a tabular format. To this end, a config file stores snippets of text to include both before and after both single-line elements (i.e. a single entry), and bulk entries according to their position on a 3x3 grid.
iLog takes in information by way of the cgi-bin interface (specifically, a POST call). The input can either be a log entry, or a query or query-string. A query is a direct enquiry into the internal workings of the program, whereas a query-string is a string with embedded DOL tags. Output is returned directly, as a long string. That said, for each query, there is a corresponding tag implemented to achieve roughly the same effect. It may be that, when all is said and done, embeddable query tags accomplish the same effect as queries. Easy to delete the section, in that case; my code is quite modular.
I've got about 75% of the planned command set implemented. The server is already stable enough simply to require a reboot weekly. A multi-level logging system has been invaluable in debugging the code; in fact, it hasn't yet been necessary to launch the debugger. I'll write about it soon; it deserves a post of its own.
iLog is loosely password-protected for now.
A note about the database. It's home-rolled. I prefer my applications to 'roll their own' database support and not have to depend upon a third-party product. Nothing against third-party databases; I've worked extensively with dBASE III/IV/V, Access, Oracle and other SQL databases. I just hate depending on them being installed on the host system. As it is, my system is very simple and involves CSV files with a dead-easy format (making it simple to view and repair in the text editor--another personal requirement of my programs' data files). It's working really well.
iLog already accepts a number of directives from a terminal session:
- Regenerate a user's web pages
- Reload system parameters from an INI file
- Reload styles information for generating bulk output
- Shut down
Once I get the server finished, in probably a couple of weeks, I'll build some kind of site for it and experiment a bit. At the moment, there's only a test page, at http://mizar64.dyndns-home.com:64180/iLog/test.html.
Then I'll turn my attention to making a mobile app for iLog (again, simply to demonstrate my programming acumen). The program will have to take and store (and transmit when possible), multiple log entries. It will update things like drop-downs for status and locations by live-querying the database when possible. It will be simple to use and won't beg for access to things it doesn't need in order to do what it does.
Well, that's about it, for now.
-Bill
Taking a brief break from ongoing development of MC-H, I've lately been working on another project, which I've dubbed (for now) iLog.
iLog is another project in my favourite language, Pascal (implemented in a modernized, OOP-oriented form, complete with IDE, by Lazarus).
In a nutshell, iLog is meant to be a personal logging system, mostly as a demonstration project to show my programming know-how. It keeps track, for each entry, of Date+Time, what you're doing, where you're doing it, and your current status.
For now, output has been implemented in the same way as with MCH; through a data-output language (hereinafter called DOL) disguised as HTML tags. <@TL>, for example, displays the current time in 'long' format (i.e. with a colon superposed between the first and last digit-pairs). <@PB> positions the pointer to the most-recent entry and updates the records. <@LMR> will display it.
iLog generates pages from templates with embedded tags. Note that with iLog, directives may return empty; i.e. the tag is replaced with nothing and simply disappears.
iLog takes in information by way of the cgi-bin interface (specifically, a POST call). The input can either be a log entry, or a query or query-string. A query is a direct enquiry into the internal workings of the program, whereas a query-string is a string with embedded DOL tags. Output is returned directly, as a long string. That said, for each query, there is a corresponding tag implemented to achieve roughly the same effect. It may be that, when all is said and done, embeddable query tags accomplish the same effect as queries. Easy to delete the section, in that case; my code is quite modular.
I've got about 75% of the planned command set implemented. The server is already stable enough simply to require a reboot weekly. A multi-level logging system has been invaluable in debugging the code; in fact, it hasn't yet been necessary to launch the debugger. I'll write about it soon; it deserves a post of its own.
iLog is loosely password-protected for now.
A note about the database. It's home-rolled. I prefer my applications to 'roll their own' database support and not have to depend upon a third-party product. Nothing against third-party databases; I've worked extensively with dBASE III/IV/V, Access, Oracle and other SQL databases. I just hate depending on them being installed on the host system. As it is, my system is very simple and involves CSV files with a dead-easy format (making it simple to view and repair in the text editor--another personal requirement of my programs' data files). It's working really well.
iLog already accepts a number of directives from a terminal session:
- Regenerate a user's web pages
- Reload system parameters from an INI file
- Reload styles information for generating bulk output
- Shut down
Once I get the server finished, in probably a couple of weeks, I'll build some kind of site for it and experiment a bit. At the moment, there's only a test page, at http://mizar64.dyndns-home.com:64180/iLog/test.html.
Then I'll turn my attention to making a mobile app for iLog (again, simply to demonstrate my programming acumen). The program will have to take and store (and transmit when possible), multiple log entries. It will update things like drop-downs for status and locations by live-querying the database when possible. It will be simple to use and won't beg for access to things it doesn't need in order to do what it does.
Well, that's about it, for now.
-Bill
Sunday, 25 October 2015
A Nitpicker's Review of the Movie The Martian
I watched the movie last weekend, and I have to say that, overall, I was impressed by its technical correctness.
That said, I have to pick a few nits.
Martian Surface Gravity is Not One Gee
(For obvious reasons, such as expense) the movie depicts Mars' surface gravity at one gee (one Earth-normal gravity). In fact, Mars pulls about one-third gee. Movements would be different, and things would fall more slowly than here on Earth.
Cumulus Clouds
In one of the opening shots of the movie, Mars' sky is depicted with a row of cumulus clouds down near the horizon. That's a no-no. Clouds on Mars are wispy cirrus and quite high up.
The Dust Storm
Okay, there's a couple of things wrong here. Point one: a Martian dust storm approaching from a distance would not produce thick rolls of dust, as we see cascading down the mountainside towards the camp. Point two: it would not blot out the sky and make everything dark, as Mars' atmosphere is too thin for that. Point three: although the wind speeds are high in a Martian dust storm, Mars' atmosphere is so thin that it would be like a gentle summer breeze on Earth, with no catastrophic damage to infrastructure and human beings. Point four: Martian dust is silt-fine, yet the movie featured particles the size of snowflakes. You don't even get that on Earth.
"I'll Implode"
While the protagonist records a log entry, he states that if the habitat lost pressure, he would implode. Quite the opposite, actually; his body would try to explode from the steep drop in pressure.
Items Dangling and Flapping in the Wind
See The Dust Storm, above. In one of the penultimate scenes in the movie, he's shown hauling a tarpaulin over the nose cone of the escape rocket. Said tarpaulin is strongly lifted by the breeze, flapping away like on Earth. No.
Consumables
It's not clear where he's getting all that extra oxygen for long trips into the Martian desert.
The Spare Pathfinder
The movie depicts this as activating along with the one actually on Mars. Sorry, but this just wouldn't happen in real life. That said, I experienced a whoop of joy when he dug it up (something that could conceivably happen in future).
Takes More than Plastic and Duct Tape
In one scene, after losing pressure in the airlock, he's seen sealing the blown-out habitat with sheet plastic and duct tape and then re-pressurizing. Any high-school kid can tell you that it'd take a lot more than that to hold in the twelve pounds of pressure it's inflated to. The actual total pressure there would be many tons (about twenty-four, from a quick back-of-the-envelope calculation, assuming the diameter of the entranceway to be about six feet).
That said, it was a fun and inspiring movie, and I can only hope it's inspired the next generation of aerospace engineers.
-Bill
I watched the movie last weekend, and I have to say that, overall, I was impressed by its technical correctness.
That said, I have to pick a few nits.
Martian Surface Gravity is Not One Gee
(For obvious reasons, such as expense) the movie depicts Mars' surface gravity at one gee (one Earth-normal gravity). In fact, Mars pulls about one-third gee. Movements would be different, and things would fall more slowly than here on Earth.
Cumulus Clouds
In one of the opening shots of the movie, Mars' sky is depicted with a row of cumulus clouds down near the horizon. That's a no-no. Clouds on Mars are wispy cirrus and quite high up.
The Dust Storm
Okay, there's a couple of things wrong here. Point one: a Martian dust storm approaching from a distance would not produce thick rolls of dust, as we see cascading down the mountainside towards the camp. Point two: it would not blot out the sky and make everything dark, as Mars' atmosphere is too thin for that. Point three: although the wind speeds are high in a Martian dust storm, Mars' atmosphere is so thin that it would be like a gentle summer breeze on Earth, with no catastrophic damage to infrastructure and human beings. Point four: Martian dust is silt-fine, yet the movie featured particles the size of snowflakes. You don't even get that on Earth.
"I'll Implode"
While the protagonist records a log entry, he states that if the habitat lost pressure, he would implode. Quite the opposite, actually; his body would try to explode from the steep drop in pressure.
Items Dangling and Flapping in the Wind
See The Dust Storm, above. In one of the penultimate scenes in the movie, he's shown hauling a tarpaulin over the nose cone of the escape rocket. Said tarpaulin is strongly lifted by the breeze, flapping away like on Earth. No.
Consumables
It's not clear where he's getting all that extra oxygen for long trips into the Martian desert.
The Spare Pathfinder
The movie depicts this as activating along with the one actually on Mars. Sorry, but this just wouldn't happen in real life. That said, I experienced a whoop of joy when he dug it up (something that could conceivably happen in future).
Takes More than Plastic and Duct Tape
In one scene, after losing pressure in the airlock, he's seen sealing the blown-out habitat with sheet plastic and duct tape and then re-pressurizing. Any high-school kid can tell you that it'd take a lot more than that to hold in the twelve pounds of pressure it's inflated to. The actual total pressure there would be many tons (about twenty-four, from a quick back-of-the-envelope calculation, assuming the diameter of the entranceway to be about six feet).
That said, it was a fun and inspiring movie, and I can only hope it's inspired the next generation of aerospace engineers.
-Bill
Wednesday, 21 October 2015
A Funny Thing Happened
on the Way to an Election
There's no question that Prime Minister Stephen Harper was a master political strategist. His handling of Stephane Dion and Michael Ignatieff proved that, along with his artful management of a once-minority government. An artful manipulator of the media, he deftly sidestepped his opponents' strong points, pointed out their perceived weaknesses, and bought himself a decade of power.
But, this time around, he made some critical mistakes, especially in the last few weeks of the campaign.
Let's examine what I think are the key ones.
Too Long a Campaign
This near-record-setting campaign was just too damned long. I know Harper thought he needed that amount of time to deliver his message effectively; and at first it seemed to be working. But as the long weeks ground on, it only gave people more time to think and to decide that Stephen Harper's Canada is not the Canada we want. Add to that the Mike Duffy trial and other things, it was enough, in the end, to tip the scales in the wrong direction.
"Justin's Just Not Ready"
You know, you have to have a certain respect for Canadian voters. Simply repeating a mantra and hoping it'll stick doesn't work; we Canadians can think for ourselves. Being told repeatedly, day after day, that Justin wasn't ready got dull. It was repeated way too often. It took the sting out of it. And it was petty and mean-minded. I think we resented it, in the end, and, again, the facts came out. And I think it backfired.
People already knew that Justin had nice hair and, come to think of it, a whole lot of other positive attributes that people could never find in Harper. With Harper, it was always the same story, the same dull guy with eyes like a dead haddock and a bad toupe, the parrotting of US foreign and drug policy, the embarrassment on the world stage. People recognized that Justin was, in fact, a nice guy, someone you wouldn't mind having over for dinner--with the advantage that he had political smarts. He took the high road while the Cons waded through the muck, American-style.
One fact: Justin is perhaps more ready than any before him. Don't forget that he was born at 24 Sussex and has years of political experience at this point. Politics is in his blood. Oops.
Extending Maternity Leave to 18 Months
This is a no-brainer. Harper was seen, by his mean-old-Conservative base, i.e. the diehards, to be handing over even more of their hard-won money to people who didn't deserve it. You've got to respect your own constituents, and Harper forgot that.
"The Price is Right" Fiasco
As the campaign wore on, people got tired of the message that only the Conservatives could effectively manage Canada's economy. Once again, the facts came out: Harper's economic record was poor indeed--one of the worst since the Great Depression. Most years, the Conservatives ran huge deficits. That was conveniently forgotten as the government shouted from the rooftops that Justin would spend us into the poorhouse. Fact is, Justin's promise of a 10-billion-dollar deficit was about par for the course for the Conservatives, except, of course, in election years. Harper's desperate attempt to portray it as something it was not was irritating, annoying, and insulting.
Rob and Doug Ford
In the last days of the campaign, as Harper's advisors made clear the fact that he was about to lose, Stephen got desperate. He courted the Ford brothers--yes, there was ol' crackhead, drunk-driving Robbie preaching to the converted. Problem is, Ford Nation is actually pretty small--and small-minded. Outside of the GTA, it's just not a factor. But Harper cozying up to the Fords was too much for many people outside of that region, who might otherwise have gone ahead and voted Con. The Liberal sweep in Atlantic Canada would seem to confirm this. I have great respect for maritimers (I am one, myself). They know the smell of rotting fish from a mile away; and, in that sense at least, the Fords stink to high heaven.
His Autocratic Nature
Stephen Harper is an autocrat. Throughout his terms in office, that much was very clear. Global warming isn't happening. Scientists don't know what they're talking about. It's my way or the highway. Canada's New Government. The Harper Government. The recession isn't happening (twice). I think, in the end, he pulled the rug out from under his own candidates, by not giving them a voice--because only Uncle Stephen could beat those big, bad Liberals.
Conclusion
The final outcome was almost pre-ordained; Justin Trudeau won a majority, and Harper tried, rather lamely, to turn his concession speech into a victory speech. He couldn't even bring himself to say that he was quitting. A sad exit for the master political strategist.
Disclaimer:
I am not a Conservative Party supporter.
-Bill
on the Way to an Election
There's no question that Prime Minister Stephen Harper was a master political strategist. His handling of Stephane Dion and Michael Ignatieff proved that, along with his artful management of a once-minority government. An artful manipulator of the media, he deftly sidestepped his opponents' strong points, pointed out their perceived weaknesses, and bought himself a decade of power.
But, this time around, he made some critical mistakes, especially in the last few weeks of the campaign.
Let's examine what I think are the key ones.
Too Long a Campaign
This near-record-setting campaign was just too damned long. I know Harper thought he needed that amount of time to deliver his message effectively; and at first it seemed to be working. But as the long weeks ground on, it only gave people more time to think and to decide that Stephen Harper's Canada is not the Canada we want. Add to that the Mike Duffy trial and other things, it was enough, in the end, to tip the scales in the wrong direction.
"Justin's Just Not Ready"
You know, you have to have a certain respect for Canadian voters. Simply repeating a mantra and hoping it'll stick doesn't work; we Canadians can think for ourselves. Being told repeatedly, day after day, that Justin wasn't ready got dull. It was repeated way too often. It took the sting out of it. And it was petty and mean-minded. I think we resented it, in the end, and, again, the facts came out. And I think it backfired.
People already knew that Justin had nice hair and, come to think of it, a whole lot of other positive attributes that people could never find in Harper. With Harper, it was always the same story, the same dull guy with eyes like a dead haddock and a bad toupe, the parrotting of US foreign and drug policy, the embarrassment on the world stage. People recognized that Justin was, in fact, a nice guy, someone you wouldn't mind having over for dinner--with the advantage that he had political smarts. He took the high road while the Cons waded through the muck, American-style.
One fact: Justin is perhaps more ready than any before him. Don't forget that he was born at 24 Sussex and has years of political experience at this point. Politics is in his blood. Oops.
Extending Maternity Leave to 18 Months
This is a no-brainer. Harper was seen, by his mean-old-Conservative base, i.e. the diehards, to be handing over even more of their hard-won money to people who didn't deserve it. You've got to respect your own constituents, and Harper forgot that.
"The Price is Right" Fiasco
As the campaign wore on, people got tired of the message that only the Conservatives could effectively manage Canada's economy. Once again, the facts came out: Harper's economic record was poor indeed--one of the worst since the Great Depression. Most years, the Conservatives ran huge deficits. That was conveniently forgotten as the government shouted from the rooftops that Justin would spend us into the poorhouse. Fact is, Justin's promise of a 10-billion-dollar deficit was about par for the course for the Conservatives, except, of course, in election years. Harper's desperate attempt to portray it as something it was not was irritating, annoying, and insulting.
Rob and Doug Ford
In the last days of the campaign, as Harper's advisors made clear the fact that he was about to lose, Stephen got desperate. He courted the Ford brothers--yes, there was ol' crackhead, drunk-driving Robbie preaching to the converted. Problem is, Ford Nation is actually pretty small--and small-minded. Outside of the GTA, it's just not a factor. But Harper cozying up to the Fords was too much for many people outside of that region, who might otherwise have gone ahead and voted Con. The Liberal sweep in Atlantic Canada would seem to confirm this. I have great respect for maritimers (I am one, myself). They know the smell of rotting fish from a mile away; and, in that sense at least, the Fords stink to high heaven.
His Autocratic Nature
Stephen Harper is an autocrat. Throughout his terms in office, that much was very clear. Global warming isn't happening. Scientists don't know what they're talking about. It's my way or the highway. Canada's New Government. The Harper Government. The recession isn't happening (twice). I think, in the end, he pulled the rug out from under his own candidates, by not giving them a voice--because only Uncle Stephen could beat those big, bad Liberals.
Conclusion
The final outcome was almost pre-ordained; Justin Trudeau won a majority, and Harper tried, rather lamely, to turn his concession speech into a victory speech. He couldn't even bring himself to say that he was quitting. A sad exit for the master political strategist.
Disclaimer:
I am not a Conservative Party supporter.
-Bill
Tuesday, 29 September 2015
The Weather System
My weather server is a Linux (Ubuntu) server configured with Apache2.
The server runs 24/7 as a high-availability system. I also have a test server running on a VM (VirtualBox) on another machine, and it's saved my bacon more than once.
The server system as a whole is comprised of a number of programs which interact with one another. For example, there is wxOCR (a GUI program, which I'm going to have to rename before open-sourcing it), which captures local data from an LCD panel. When it rains, the system knows it and automatically appends a second condition (Rain) to the sky condition. Every five minutes, a cron job fires off another suite of programs which capture information from the web--statistics, records, forecasts and normals from 27 locations. Another GUI program captures the webcam image and deduces the sky condition from it. These all feed into the server system.
The server captures data as it comes in, after a short delay to eliminate file collisions. Each location has an independent database which tracks all data. Pages are updated every five minutes from templates.
The template language is fairly simple and yet highly complex. Housed in <@ > tags, there are thousands of tags for data-output; every statistic tracked by the database can be output in this way. Optional suffixes, separated by colons, control the way the data are formatted (including alternate measuring units, dependent upon the source data), and the source itself (any tag can pull data from any location, allowing multiple locations' data on one page). There are loops and constants, to make it easier to show ordered data (hourly, daily, monthly, yearly). Essentially, the weather engine is acting as a HTML pre-processor.
A number of tags can be used to pull statistics from the system, as you'll see on the Diags page. In addition, a number of control parameters can be set and modified using a system configuration file.
A number of queries are possible, from raw data to webcam archives and even recalculation of the database from source readings (not as relevant now that the system is working properly). Extra web pages allow input of daily statistics and a second sky condition (ie; Cloudy, Snow).
Graphics are another big part of the system. Both canned graphics and on-the-fly charts are used. A special facility allows such graphics as wind direction to be displayed.
The system also maintains an events database (meant for astronomical events, seasonal markers and time changes, but applicable to anything, really) and associated output tags. Events can be listed forward and backward in time.
The entire system is written in a modern, OOP version of Pascal, known as Lazarus, which includes an IDE. It compiles to native code. Given Lazarus' write-once, compile-anywhere philosophy, I could come up with a version for Windows in about 15 minutes; I prefer Linux for its stability and open-source tools. Pascal is not that different from Java or C; in fact, in my last job, as Java Developer, on my first day I hadn't written a line of Java code. By the end of the day I had designed a page and underlying services, with the help of Apache Tapestry, a GUI add-on for Java. But I digress.
Bugs are tracked through Bugzilla, and the source code is backed up on a Subversion server. Both of these are also on the weather server itself.
The project consists of about 20,000 lines of source and is slowly growing to the point where it's difficult for one person to maintain. This, too, will be open-sourced eventually.
You've got to see it to truly understand. It's available at
http://mizar64.dyndns-home.com:64180/weather.html.
-Bill
My weather server is a Linux (Ubuntu) server configured with Apache2.
The server runs 24/7 as a high-availability system. I also have a test server running on a VM (VirtualBox) on another machine, and it's saved my bacon more than once.
The server system as a whole is comprised of a number of programs which interact with one another. For example, there is wxOCR (a GUI program, which I'm going to have to rename before open-sourcing it), which captures local data from an LCD panel. When it rains, the system knows it and automatically appends a second condition (Rain) to the sky condition. Every five minutes, a cron job fires off another suite of programs which capture information from the web--statistics, records, forecasts and normals from 27 locations. Another GUI program captures the webcam image and deduces the sky condition from it. These all feed into the server system.
The server captures data as it comes in, after a short delay to eliminate file collisions. Each location has an independent database which tracks all data. Pages are updated every five minutes from templates.
The template language is fairly simple and yet highly complex. Housed in <@ > tags, there are thousands of tags for data-output; every statistic tracked by the database can be output in this way. Optional suffixes, separated by colons, control the way the data are formatted (including alternate measuring units, dependent upon the source data), and the source itself (any tag can pull data from any location, allowing multiple locations' data on one page). There are loops and constants, to make it easier to show ordered data (hourly, daily, monthly, yearly). Essentially, the weather engine is acting as a HTML pre-processor.
A number of tags can be used to pull statistics from the system, as you'll see on the Diags page. In addition, a number of control parameters can be set and modified using a system configuration file.
A number of queries are possible, from raw data to webcam archives and even recalculation of the database from source readings (not as relevant now that the system is working properly). Extra web pages allow input of daily statistics and a second sky condition (ie; Cloudy, Snow).
Graphics are another big part of the system. Both canned graphics and on-the-fly charts are used. A special facility allows such graphics as wind direction to be displayed.
The system also maintains an events database (meant for astronomical events, seasonal markers and time changes, but applicable to anything, really) and associated output tags. Events can be listed forward and backward in time.
The entire system is written in a modern, OOP version of Pascal, known as Lazarus, which includes an IDE. It compiles to native code. Given Lazarus' write-once, compile-anywhere philosophy, I could come up with a version for Windows in about 15 minutes; I prefer Linux for its stability and open-source tools. Pascal is not that different from Java or C; in fact, in my last job, as Java Developer, on my first day I hadn't written a line of Java code. By the end of the day I had designed a page and underlying services, with the help of Apache Tapestry, a GUI add-on for Java. But I digress.
Bugs are tracked through Bugzilla, and the source code is backed up on a Subversion server. Both of these are also on the weather server itself.
The project consists of about 20,000 lines of source and is slowly growing to the point where it's difficult for one person to maintain. This, too, will be open-sourced eventually.
You've got to see it to truly understand. It's available at
http://mizar64.dyndns-home.com:64180/weather.html.
-Bill
Subscribe to:
Posts (Atom)
