Michael A. Covington    Michael A. Covington, Ph.D.
Books by Michael Covington
Consulting Services
Previous months
About this notebook
Search site or Web

Daily Notebook

Popular topics on this page:
New grandsons!
MVP, MVC, ViewModel for scientific software
Easier file dialogs in Windows programs
Open file dialog that can choose a folder, Vista-style
How to survive in cyber-wartime
Tools of thought: One expert isn't enough
Support your local police – and make them better
Comet Lovejoy C/2014 Q2
Comet Lovejoy C/2014 Q2
Moon (gibbous)
Orion (wide-field and belt)
Orion (belt)
Lambda Orionis nebula
M36, M37, M38 (in Auriga)
M36, M37, M38, and nebulae (in Auriga)
M42 (Orion Nebula)
California Nebula
Star clouds in Cepheus
North America Nebula
Many more...
This web site is protected by copyright law.
Reusing pictures or text requires permission from the author.

For more topics, scroll down, press Ctrl-F to search the page, or check previous months.

For the latest edition of this page at any time, use this link: www.covingtoninnovations.com/michael/blog

The ads that you see here are not controlled or endorsed by Covington Innovations. They come from Google based on your browsing history.
If offensive ads appear, click on "AdChoices" and then "Ads Settings" and make changes, and/or turn off cookies in your browser.

Click here to see books and other items (mostly astronomy-related) that I am selling through Amazon. More will be added in coming days.


What was 2014?

During all those years when I was in academia, the last week of the year was always a slow time, a vacation time during which I caught up on personal projects. Not any more. I'm a busy consultant and it's the last working day of the year. So after scribbling a few notes I'm off to hack more C#. I do plan to take New Year's Day off (and probably build bookshelves).

What was 2014 like? A year of scrambling to maintain the status quo, I think. (Maybe the year's motto should be Fluctuat nec mergitur.) Melody had three hip operations (even though she only has two hips) and is finally able to drive again, but not totally out of the woods yet. I have a new telescope and am doing the best astrophotography ever. And my consulting business is booming.

What is my new year's resolution? About 1600×2560 if I buy the tablet computer I'm thinking about...

Now, if you'll excuse me, I have work to do. Happy 2015!

North America Nebula

We conclude the year with one of my favorite objects, the North America Nebula (NGC 7000). This picture shows you more of the star clouds north of it than my other pictures do.

Stack of six 1-minute exposures, Canon 60Da, ISO 3200, Sigma 105/2.8 lens, at Deerlick.


Lambda Orionis

This is a stack of six 1-minute exposures of northern Orion taken at the same session at Deerlick as many recent pictures, with the same equipment.

There are several interesting things in this picture. The two brightest stars are the shoulders of Orion; the one on the left is the red supergiant star Betelgeuse. The brightest of the stars in the group near the middle is Lambda Orionis.

Lambda Orionis is surrounded by a huge, faint red bubble of glowing gas, which almost fills the picture. You can see dark streaks that define its edges at the upper right and lower left (to the right of Betelgeuse). I think they are unilluminated or less-illuminated parts of the same gas cloud.

In one of my astrophotography books, I named this nebula the North Orion Bubble, not realizing it already had a name, the Lambda Orionis Nebula.

An iPad saga

Anyone buying an Apple iOS computer should be aware of Apple's strict anti-theft measures, which may be justified but can cause great difficulty if they malfunction. We're suffering from such a malfunction right now.

A family member (whom I won't name to protect privacy) gave us an older iPad which was still on her Apple account. Obviously, we didn't want to read her e-mail, post on Facebook as her, etc., so in order to protect her privacy, we set out to wipe the iPad clean and put it on Sharon's account. Here's what we did:

(1) With the family member's help, went online and reset her Apple ID password. (The password had been forgotten.)

(2) Verified that the reset was successful by logging onto various Apple websites.

(3) Put the iPad on our Wi-Fi network.

(4) On the iPad, turned off Find My iPad and then performed an Erase. Each of these operations required entering the original owner's Apple ID and password, which were accepted.

(5) Rebooted and started the new configuration process.

And there we're stuck. Activation Lock says this iPad is still tied to its original owner's account, and demands the original owner's Apple ID and password. And says they are incorrect when we enter them, even though it took them earlier when turning off Find My iPad and when doing the Erase.

Meanwhile, when we use the original owner's Apple ID and password to log onto www.icloud.com/find, we successfully log in and are told that there are no devices. At least that server knows Find My iPad was turned off.

Experts have told us that the problem is that Apple's servers are out of sync, and Apple will have to fix the problem. We are going to check with the local Apple dealer. Apple wants $30 for a consultation, and we don't want to pay that just yet, if the problem is really that they need to fix their own server. I'm thinking maybe the changes from step (1) haven't propagated.

By the way, this is iOS 7, and I'm told "restore mode" with a connection to iTunes on a PC will not crack the Activation Lock. I haven't tried it. I suppose there's some chance Apple's servers will synchronize themselves over the next few days.

The moral of the story? Too much anti-theft protection can make a computer useless, even to a legitimate owner.

If this iPad had been sold rather than given away, and if steps (1) to (4) had been done by the original owner (exactly as Apple says to do before selling an iPad), the original owner would not have known anything was wrong and step (5) might have been happening thousands of miles away.

Used iOS computers are booby-traps.

I wonder how many companies issue iPads or iPhones to their employees and get them back in unusable condition, all locked down.

It's like having a car whose hood you can't open — and even your mechanic can't open.

Android for me!



Happiness is a Wary Puppy (Linux!)

Yes, I said wary, not warm.

If you want to make someting useful out of a computer from the Windows 98 era, I suggest Wary Puppy Linux as a modern operating system. I successfully got it running on a Toshiba laptop dating from 2005 with only 160 MB of RAM. That's less than a Raspberry Pi (but a thousand times more than the first serious micros I worked with).

Puppy Linux is a Linux distribution for smaller computers. Wary Puppy is especially designed to be compatible with older hardware.


Clouds of stars

Here is a rich cloud of Milky Way stars in the constellation Cepheus, with a dark nebula (dust cloud) above center and the yellowish "Garnet Star" Mu Cephei at the upper right. For another look at the Mu Cephei region, click here.

It was Galileo who first used a telescope to look at the Milky Way and realized that it consisted of stars, not a glowing milky substance.

What you see here is a stack of five 1-minute exposures, Canon 60Da, ISO 3200, Sigma 105/2.8 lens, iOptron SkyTracker, taken at Deerlick on December 13.


California Nebula

This is the California Nebula in the constellation Perseus, so named because of its shape. It is not at all connected with the North America Nebula. (Whether that tells you anything about California is up to you...)

Stack of six 1-minute exposures taken at Deerlick on December 13. Canon 60Da, ISO 3200, iOptron SkyTracker, Sigma 105/2.8 lens wide open.



Comet Lovejoy in high contrast

Here is the same picture of Comet Lovejoy with the contrast greatly boosted so that you can see the tail, faintly pointing upward — and a huge amount of camera noise. Believe me, the picture would not be viewable if it were any larger.


Comet Lovejoy C/2014 Q2

Interrupting my series of pictures taken at Deerlick on the 13th, I hasten to present this picture of Comet Lovejoy taken around 12:30 a.m. today (Dec. 27). The comet is a fifth-magnitude object south of Orion; if I had been out in the country I could have seen the comet with the unaided eye and photographed its tail. As it is, I got a picture that shows just a hint of the tail pointing upward. The bright star just above the comet is ν1 Columbae (Nu-1 Columbae) [corrected]. I am honored to have the comet's discoverer, Terry Lovejoy, as at least a Facebook friend.

Stack of four 30-second exposures taken with a Canon 60Da (ISO 3200) and Sigma 105-mm f/2.8 lens at f/5, on an iOptron SkyTracker. I would have used the AVX mount and 300-mm lens, but the sky was cloudy earlier in the evening and I didn't expect to get to see the comet.

Not forgotten


Yes, Christmas did come at the Covington household. We had not prepared very well because we didn't know until mid-December whether Melody would be home and whether she would be up and about. Also, we are having to avoid gatherings in order to shield Melody from infectious diseases, especially the flu.

But Christmas did come, and Melody made us a delicious dinner of turkey pot pie. Our gifts were modest; we gave Melody a necklace with a kaleidoscope as the pendant; Sharon and I got several books and other things; and Sharon's dolls got Macbooks (actually compact mirrors that looks like 2-inch-wide Apple laptop computers).

And I took a couple of days off work. "Don't y'all get a whole month off for Christmas?" Not since UGA went to the semester system, and certainly not since I left UGA to go into business for myself. The last week of December is when I get a lot of work done while everybody else is keeping quiet!


Belt of Orion

Again from my Deerlick trip on December 13, here is a much better image of the Belt of Orion. What's most prominent is the rich star cluster filling the middle third of the picture in each dimension, around and behind the three bright stars. (This cluster is so big and so bright that it's easily overlooked.)

You can also see the Flame Nebula to the left of the leftmost of the three, and the Horsehead Nebula, which is the dark notch in the red nebulosity that hangs down from the same star. (The Horsehead is actually a dark nebula in front of the red one.) Toward the upper left, the reflection nebula M78 looks so bright that it seems to be a misshapen bright star.

Stack of nine 1-minute exposures, Canon 60Da, ISO 3200, Canon 300-mm f/4 lens at f/5.



In memory of Tim Nix

Sad news today: Tim Nix, owner of Camera Bug, the only telescope dealer in Atlanta, has died. May God grant him eternal rest.

Back in May, Tim sold me my latest telescope (the Celestron EdgeHD on the AVX mount), and to his memory I dedicate the most recent picture taken with that mount, which is also my best picture of the Orion Nebula:

Taken from my driveway in Athens with a Canon 60Da camera and 300-mm lens, this is a stack of thirteen 1-minute exposures at f/5, four at f/8, and three at f/16, processed with DeepSkyStacker and PixInsight and then mixed to taste using Photoshop, showing the outer parts of the nebula without overexposing the center as severely as would usually happen.

Tim would be glad to know that my last major purchase from him is serving me so well.

Two mundane notes

I don't think it dishonors the memory of a merchant to talk about commerce. So here are two notes...

Because of Tim's passing, the telescope that I've had on consignment at Camera Bug will shortly be coming back to me unsold. It is an 8-inch classic Meade LX200, vintage 2001, computerized (which means it finds objects in the sky automatically after you align it on two known stars), and would be an excellent telescope for a serious visual astronomer. (I outgrew it as a photographic instrument.) It is the telescope that inspired my book How to Use a Computerized Telescope, and a copy of the book is included. I am asking only $500 for the complete telescope with Meade tripod and homemade wedge, two eyepieces, and power supply, but the buyer must pick it up in Athens, since shipping is not practical. (Adequate packing and shipping might cost another $400!) For easier visual use, you would probably set it up in alt-azimuth mode, without the wedge. I will be glad to help the buyer get started with it.

Also note that I am selling some books and other astronomy-related items through Amazon. These can be sent anywhere, of course. I plan to keep adding to the list. Although slower than eBay, Amazon is much easier to work with.



Clusters and nebulae in Auriga

Remember the star clusters in Auriga that I photographed a few days ago? Well, on December 13, I went to Deerlick and photographed them properly, or at least a lot better:

The three big clusters, from left to right, are M37, M36, and M38. To the right of M37 is a dark nebula, about the same apparent size, designated B34. Above and a bit to the left of M36 is the small red nebula Sharpless 2-235, which I want to investigate further; it looks almost like a red star. And to the right of the center are two relatively large red nebulae, IC 410 and IC 405 (the AE Aurigae nebula).

Stack of eight 1-minute exposures with a Canon 60Da at ISO 3200 and a Sigma 105-mm f/2.8 lens (wide open) on an iOptron SkyTracker.

I have quite a few more astrophotos to show you — so stay tuned!

Astronomy and the Star of Bethlehem: For what I have written about this, click here. Nothing has been revised this year. I've been told that there is more archeological evidence that Zoroastrian astrologers were expecting a big event in Judea at the time, but I haven't looked into the details.


Support your local police —
and make them better

When Sir Robert Peel invented modern law enforcement in 1829, "The policeman is your friend" was not a platitude — it was a new idea.

Before his time, either there were no police (and you had to catch the bad guy yourself and haul him in to the judiciary, as in the Wild West), or the police were part of an occupying army, maintaining public order for a hostile ruler.

One of the most important of Peel's principles is that the police officer is a citizen of the community, employed, trained, and equipped to do things that are, at least in principle, any citizen's responsibility. Police officers face danger so that the rest of us don't have to.

Other important Peelian principles include using the minimum force necessary to restore order; not trying to punish criminals, but rather handing them over to the judicial system without violating their rights; and evaluating the performance of the police by the reduction of crime, not by the amount of police action.

In recent weeks, America has been swept by a wave of concern about police brutality that has given way to actual murders of police officers in New York and Florida (not linked to allegations of brutality as far as I can find out).

I'm against police brutality as much as anyone, but I hate to see the community rising up against the police as a whole. I think it reflects very foggy thinking. Or even a vicious circle: Specific incidents lead to well-deserved attention to the issue nationally, which immediately metamorphoses into "The police are all thugs" and a willingness to believe further accusations without considering the evidence carefully, reinforcing the belief that the police are all thugs.

Sir Robert Peel was against police brutality too. He was one of the first people in history to take action against it. We need to follow his lead. His cure for police brutality is community support and involvement. A community that views the police as enemies will not get good policing; it can't; the job of the police becomes impossible. When you start expecting the worst, the worst is all you will let them give you.

Unpopular laws are a related problem. It's not reasonable to ask the police to ignore laws that the community doesn't want enforced. They can't, especially when a violation of such a law is part of an incident that they have to handle for other reasons. Instead, the community needs to respect the laws, and actually change the ones that need to be changed. (On particular points, my views are rather conservative. I don't think marijuana is as safe as its advocates claim. If it is to be legalized, the DUI issue will have to be addressed because the drug stays in the body for a long time. Anyhow, nobody wants to legalize cocaine and heroin, do they? As for other unpopular laws, lots of people have simply forgotten why things like gambling have to be heavily restricted. And the recent episodes with Uber have shown us why mundane things like taxicabs often require a surprising amount of regulation.)

I wish there were an easily recognizable symbol that ordinary citizens could display to show their support for community-based law enforcement. The thin blue line, which I'm seeing on cars, is not quite it; it's a registered trademark and is used by law enforcement officers to honor their fallen colleagues. Does anyone want to make a suggestion?


Tools of thought: One expert isn't enough

Now that the public has begun to realize things about "Dr. Oz" that were obvious to me all along, I want to point out a general principle about how to get advice from experts.

You can find one "expert" (one M.D., one Ph.D., etc.) who will say anything. What you want to know is what the whole community of experts thinks. It's one thing to know that a new idea is circulating; it's another to know whether the new idea holds up to scrutiny.

More succinctly: The pronouncements of one expert aren't worth much if a hundred other experts disagree. You can't just pick the one and consider the matter settled. At most, you have a possibility to pursue.

This also goes for financial advice and even political analysis from people who make a living entertaining the public. They are under strong pressure to be "original" and gimmicky so they can maintain their loyal following. The audience can't tell whether they are accurate or wise.

A related point: Sometimes a controversial new idea is right. More often, it's not! One person's speculations and hypotheses may be insightful and clever, but they're not necessarily true. If you actually follow research, you'll see a constant stream of new ideas that turn out to be mistaken. That's how science advances. Every new idea has to be tested. Real experts pay attention to the quality of the testing that has been done.

Regarding medical advice, a final point. You should definitely give priority to your own doctor, who knows your case, rather than others who don't. In that way, one doctor is superior to the rest of the medical community. But it's because that doctor really does know more about you than anyone else does. It's not because you saw someone on TV whose ideas excited you.

For more of the "Tools of Thought" series, click here and here.


Hello, Orion!

The annual return of the constellation Orion is always a happy sight for me. Orion was the first constellation I learned to recognize, back in 1968, but that happened shortly before it was lost in the sun's glow in the late spring. I was glad to see it come back the following winter, as I have been every year since.

What you see here is a single 30-second exposure with a Canon 60Da and 28-mm lens at f/4, on an iOptron SkyTracker in my driveway (back on December 12).

Now let's zoom in on the Belt of Orion:

What I want to point out is that there's a star cluster behind, or rather involving, the three stars of the Belt. O'Meara points this out in one of his books (maybe Hidden Treasures). Well, maybe not the middle star of the three; it's farther away than the two end stars and most of the medium-brightness stars scattered around them, which form a loose cluster about 1000 light-years away. The most striking part of the cluster is an S-shaped row of stars winding around the middle and right-hand Belt stars.

You can also see the reflection nebula M78 at the upper left, as well as some nebulosity to the left of and below the left-hand Belt star.

This is a stack of fifteen (yes, fifteen) 30-second exposures with the same setup, but with a 105-mm Sigma lens at f/5.

Finally, here are the three bright star clusters of Auriga, M37, M36, and M38 (from lower left to upper right). M38 is sometimes called the "starfish" because of the radial arrangement of stars. Same setup, ten 30-second exposures.

These clusters are fine sights in small telescopes. I know this picture isn't impressive; it was taken mainly to plan pictures to be taken from a dark country site.


Spanning four centuries

My grandchildren are likely to live long enough to see the 22nd Century begin in the year 2101.

I, of course, have seen large parts of the 20th and 21st Centuries.

And in my youth, I knew people who had seen the 19th, including my great-grandfather, Thomas W. Aaron, who was born in the 1870s.

The other day I was asking myself when was the last time that I saw someone born in the 19th Century. Only a few such people are still alive. My grandfather, Charles Covington, born in 1898, passed away in 1972. I think my last meaningful contact with a native of the 19th Century was actually a brief conversation with the philosopher Brand Blanshard at Yale around 1979.


How to survive in cyber-wartime

Note: This was written in 2014, but the link has been shared several times since then when international conditions seemed to warrant, most recently in December of 2020.

I hope that the recent hacking of federal government computer systems by a hostile foreign power, together with a reported flurry of smaller attacks going on right now, will serve as a wake-up call and make the whole world realize that the whole Internet, as it is presently constructed, is far too vulnerable.

I think we are living in appreciably less safe times than even two weeks ago. The imminent danger is that now that the attack has been discovered, the perpetrators will use it to do harm before they're stopped. Here is some advice for the ordinary computer user. Best of all, this advice will make you safer even if large-scale attacks never happen.

  • Do not expect the Internet to be perfectly reliable. The easiest kind of attack simply makes part of the Internet unavailable or hard to get to. Do not run your life or your business so that they absolutely depend on reliable, fast Internet connections if you can avoid it.
  • Do not obey instructions that pop up unexpectedly on your screen, especially in your web browser. They could be from anyone at all! Be familiar with how updates normally reach you and what they look like. Be especially suspicious if a message pops up telling you that you need to install an "update" immediately. Take some time to check it out.
  • Beware of fake phone calls. Never give information to people who called you! Remember that companies that do business with you on line do not normally call you; they don't even normally know your number.
  • Beware of fake e-mails telling you to do something out of the ordinary (such as give a password or other information, or make a payment). You may get a quite authentic message that seems to be from your boss, a trusted colleague, or a company you do business with. Do not do what they say without checking!
  • Do not log into sites that you reached through a link in an e-mail. If you get e-mail from your bank saying "click here and log in to your account," don't. Instead, type the web address of the bank yourself and log in there. The web site in the e-mail may be fake, designed to get your password.
  • Do not give permission for software to modify your computer unless you are sure it is something you want to install and that you got it from an authentic source. This should be obvious, but some people automatically say "yes" whenever asked. The reason the operating system is asking you is that you might need to say no!
  • Beware of fake web sites, even with authentic addresses. There are reports of tampering with the DNS (Domain Name System), the network service through which every computer finds out how to locate all of the others by name. The symptom will be that you will go to a familiar web site and actually be talking to an impostor's computer — probably with a slightly altered copy of the real web site on it. If a web site doesn't look right, don't use it. Advanced network users can use tools like tracert to diagnose what is going on.
  • Be discerning about software updates. Normally, keeping your software up to date is a good thing and is safer than not doing so. (Updates fix security vulnerabilities.) But if cyberwar breaks out, there will be a real risk of fake updates from web sites that impersonate the manufacturer. In that situation, it will be safer not to update.
  • Keep backup copies of your data, and store them away from the computer. Every disk drive in the world will eventually fail, losing all data. More importantly, a malicious attack on your computer could destroy the data stored in it, including backup disks that are connected to the computer at the time. That's why backup disks need to be stored elsewhere. It's best to have a rotating set of two or three, only one of which is attached to the computer at any given time, and rotate them every few days. If that's too complicated, just get a USB drive (thumb drive), carry it around in your pocket, and occasionally copy your important data onto it.
  • Do not store potentially damaging data in networked computers. Certainly, do not post potentially damaging information on Facebook or other social media sites, nor even send it through e-mail. The Internet is a very public place, even for private messages.

    By "potentially damaging data" I mean records of behavior you would be ashamed of, and also such things as lists of computer passwords that are not disguised or altered. I do not mean routine records, names, phone numbers, addresses, or other things that were never intended to be kept top secret. See next item.
  • If you run a bank or financial business, stop being gullible about identity. Right now, the financial system makes identity theft easy and then blames the individual victim. Not everybody who knows my name, address, date of birth, SSN, and credit card numbers is necessarily me! You can use these things to distinguish me from other people with similar names, but they are not proof of identity. Knowing some of my numbers that are not passwords does not constitute authorization to spend my money. Much of online commerce has been naive about this since the beginning.
  • Consider taking mission-critical computers off the Internet altogether, or connecting them to the Internet only briefly when actually needed. I think the expectation that all computers should be on the Internet all the time is part of what got us into this precarious situation. You can perfectly well do accounting, photography, word processing, etc., without a net connection. And your thermostat and refrigerator don't need to be open to hackers!

Feel free to share links to this entry. Please do not distribute copies; instead, refer people to the original.


Introducing the Covington File Dialogs
(Including an open file dialog that can choose folders, Vista-style)

NOTE ADDED 2020: The Covington File Dialogs are not entirely compatible with .NET Core, nor are they needed. System.Windows.Forms.FolderBrowserDialog already uses the new-style dialog instead of the old. As of version 4.7, the Covington File Dialogs are still compatible with .NET Framework.

Common file dialogs are one of the best things about Windows. They enable you to navigate the file system and choose files (even right-clicking on them to do any available operation, just as if they were on your desktop). Because they're provided by the operating system, they automatically get updated along with the operating system to reflect new facilities such as networks. That's the compelling reason to use common file dialogs rather than try to create file menus of your own within your programs.

To make it easier to use common file dialogs in C#, I'm giving away another software package free. It's the Covington File Dialogs (click to download) and consists of C# source code.

The Covington File Dialogs do two things for you.

(1) They make it really easy to use Windows common file dialogs, whether your program is WinForms, WPF, or console mode (command-line). That's right — console applications can use common file dialogs, and I do this all the time in short experimental programs.

Instead of creating an OpenFileDialog or SaveFileDialog object and calling its ShowDialog method, all you have to do is something like this:

s = Covington.FileDialogs.ChooseFileToRead(
      "Choose a JPG file...",
      "JPG files|*.jpg", "C:\\", "myfile.jpg");

or even this:

s = Covington.FileDialogs.ChooseFileToRead();

and you get something like this:

Here s is the full path to the chosen file, or an empty string if the user cancelled the dialog. The operating system guarantees that the chosen file really exists and that the path to it is correct.

(2) They give you access to the "Vista-style" way of choosing a folder.

For this part of the Covington File Dialogs, I'm indebted to code freely shared at http://www.lyquidity.com/devblog/?p=136. All I did was repackage it.

Here's the idea. In Windows XP and earlier, the only way to choose a folder was the clumsy Win32 FolderBrowserDialog, which looks like this:

Windows Vista introduced something new, an OpenFileDialog that has the option to choose folders instead of files. It is much easier to use:

The trouble is, Microsoft still hasn't made this available in the .NET Framework. All you can get from .NET is the original FolderBrowserDialog. The new kind of dialog is only available in Win32.

My esteemed colleague at lyquidity.com used reflection (the ability of C# programs to look at their own code) to get to the Win32 setting that isn't made available, and they made the new-style folder dialog available as an object. I added code to also make it available as a simple method call.

This is freeware, distributed with no warranty. Feel free to use it for any purpose, including commercial work.


Un día grande para Cuba

I am delighted to hear that the United States and Cuba will be resuming formal diplomatic relations. This is something I have advocated for 40 years.

Listening to people's comments, I've gathered that some people misunderstand what "diplomatic relations" means. It does not mean friendly or happy relations. It only means that the two governments have decided to communicate with each other in the traditional way, through embassies and ambassadors.

Opening diplomatic relations with Cuba does not mean we like the Castro régime. It only means we acknowledge that the Castro régime is the only government Cuba has, and we want to communicate with it. There is no rival government elsewhere that vies for our recognition.

It is normal for countries to have diplomatic relations even if they strongly dislike and disagree with each other. The reason we didn't have diplomatic relations with Cuba was that after the Batista government fell, it wasn't clear whether Castro's revolution was going to leave a stable government in place. One only has diplomatic relations with stable governments, not with revolutions in progress. So breaking off relations was the right thing to do in 1961, when it was not at all clear what the Castro régime was turning into.

But then we remained stuck in 1961 for 53 years.

If we believe the American way of life is better than Cuban Communism, we should want to influence the Cuban culture and economy. And we can't do that while forbidding ourselves to do any business with Cuba. We're only punishing ourselves.

En memoria de mis primeros maestros de la lengua española, Prof. y Sra. José Fernández, de Valdosta, expatriados cubanos.


News updates

Melody is home after 6 weeks of convalescent care (mainly IV antibiotics). We recommend The Oaks of Athens as a convalescent care facility.

Also, there is a flurry of astrophotography coming as soon as I have time to process the image files (250 of my own, and 390 from a friend trying out a new type of camera — more about that soon!).

Stay tuned...


Librarians, please never do this...

That was a map, for goodness sake!

Withdrawing a book from the library for resale is not the same as destroying it. In this case, this move cost the library money. I got this $50 book for $8, which means the library probably got $2 for it in its defaced condition. If they had not defaced it, it would have brought them a lot more.

Of course, why they're getting rid of a current science book, hardbound and in good condition, is beyond me...

I fixed my copy by photocopying the map from the University of Georgia's copy of the same book, then gluing it lightly in place.

In other news: We are having a spell of warm, clear weather. I had a good trip to Deerlick last night (Dec. 13) and my camera tells me I took 174 exposures in three hours. (Some of those are darks and flats, of course, and most are multiple exposures that will be stacked.) I'll spend the rest of the month processing them — especially since I'll probably do some more astrophotography from home tonight.

And we are on the countdown for Melody's homecoming. Barring further medical complications, she'll be here in 48 hours!


Greenpeace, a name that will live in infamy

From now on, archeology books will have to say that the Nazca site in Peru was damaged by Greenpeace for advertising purposes in 2014.

The Nazca site consists of huge ancient drawings of animals on the ground, best viewed from an airplane, though they can be seen from surrounding hills. The other day, Greenpeace added a very prominent advertisement right next to one of the drawings.

The Greenpeace people say they didn't intend to do harm — but they clearly did intend to walk where people aren't allowed to walk because walking would cause damage. That's a bit like saying you didn't intend to crash your car, but you did intend to run the stop sign.

Even if no actual damage had been done, the move still would have been wrong. Greenpeace misappropriated someone else's cultural treasure to turn it into an ad for themselves.

If I were a national government, I'd be worried about the risk of further cultural terrorism. What will be Greenpeace's next target? The Roman Colosseum? The Taj Mahal? The Mona Lisa? Clearly, they don't believe in following society's rules.

I have no tolerance for "activists" who feel free to harm innocent and uninvolved third parties to promote their cause. (That extends, by the way, to "protesters" who block freeways in one city to protest abuses in another city. Qui habet aures audiat.)

Not only was the gesture destructive, it was crass. By vandalizing a Native American site with a message in the language of a foreign country (English, not Spanish), Greenpeace took the side of heavy-handed colonialism. One might have expected Greenpeace to be at least vaguely supportive of indigenous cultures and peoples. Not this time!

[Clarification:] When I say "a name that will live in infamy" I am not against environmentalism. I am pointing out that Greenpeace has brought infamy on itself by this extremely unwise act. If you are (or were) a fan of Greenpeace, you should be angry at them, not me.

Indeed, so far I have not seen anyone outside Greenpeace speak in defense of it. Condemnation seems to be unanimous.

A further point. Already in my student days (the 1970s) I decided I couldn't support any "protest" that trampled on the rights of uninvolved third parties. The hippie-era excuse was that "the Establishment" was all one piece, so if, for example, you harmed local merchants in order to protest the Vietnam War, that was OK because they were all "the Establishment." I wasn't taken in by that delusion.


My General Patton moment

Yesterday I had, and took, an unexpected opportunity to follow in the footsteps of General Patton.

I was trying to pull out of a parking space, but one or maybe two other cars wanted to lay claim to it before I got out of it, and three more were just wanting to get by. Together, they got gridlocked.

So I got out of my car and directed traffic.

It only took a brief wave of the hand. As soon as everyone understood that nobody was going to get my parking space until they let me out of it, things went a lot more smoothly.

Are smartphone apps really the future of computer programming?

[Updated with minor revisions.]

We've been seeing mixed signals and lack of direction from Microsoft about the future of software development. In five years, are we going to be programming with .NET, WPF, Windows Runtime, or what? And why?

At the root of this, I think, is the mistaken notion that smartphone apps are the future of computer programming. Hence Windows Runtime (backing off from .NET Framework), the clumsy smartphone-like Windows 8.0 user interface, and the neglect of conventional Windows programming infrastructure.

You might as well have imagined in 1977 that the future of computer programming would be simple games in coded in BASIC. There was certainly a lot of that going on at the time, but it didn't replace real computing. I'm certainly glad Pascal and C didn't die out around 1980 because the cheapest micros didn't have them. We certainly needed them when microcomputers matured. Meanwhile, who still plays "Donkey"?

Related to the infatuation with smartphones is the notion that everything needs to be on the Internet and "in the cloud." Cloud computing is certainly a useful, major development. It enables us to get to our data anywhere we go. But it may not be where the real work is done. Plenty of computers, for reasons of security, safety, or performance, still need to hold and process their own data.

Anyhow, just because the server isn't in your pocket doesn't mean there's no server. Somebody still has to do the programming that actually performs computations, rather than just retrieving and displaying data. I am starting to run into computer programmers who know how to make a glitzy web page but don't know how to calculate whether a stock price is above or below its 10-day moving average.

What everyone has lost sight of is that most computer programming is not to develop mass-market software that is sold in Wal-Mart or the App Store. Most computer programming is for line-of-business software, software that is used internally by businesses. The world isn't going to support 20 major word processors, but it certainly can support 200 or even 20,000 software packages to run banks or department stores or hotels, each of them different. Then there's industrial and scientific software — there's more of it in the world than you imagine, and most of it is developed for relatively small user communities, numbering from thousands of people down to dozens.

Since the two overlap, let me introduce a new term: LOBIS software (Line-of-Business, Industrial, and Scientific). It's software that is built for users, rather than for sale to strangers.

LOBIS software needs to perform every bit as well, and be every bit as easy to use, as commercial software. It may not need "gamer graphics" or infinitely variable window styles, but it must not look improvised or awkward, nor run slowly. That is where traditional desktop software development is going to continue with little change.

One of my fears is that mainstream commercial software development is going to become so weird that scientists will flee from it and only use Python-in-a-box or something, while line-of-business people will stick with obsolete infrastructure. This nearly happened in the early days of Windows, when we didn't have anything like Delphi, and Windows programming meant writing lots of tedious callback routines. Plenty of scientific computer users (myself included) just couldn't get into that, so we kept writing command-line applications. Line-of-business software suffered too — a store near me had a DOS line-of-business application until last year!

Fortunately, Microsoft relented and gave us Visual Basic, followed quickly (and outdone) by Borland's Delphi, eventually evolving into C# with WPF. Mainstream commercial programming got its mojo back. But now it's losing it again.

Recently, I've seen alarming tendency for scientists to leave the mainstream of software development, abandoning C, Java, and C# to use something like Python or Perl, simply to have a protected environment that isn't vulnerable to the software industry's fickleness. Line-of-business people don't have such an easy alternative, but they can be driven to spend their time customizing existing packages (such as databases) rather than building standalone software.

What we LOBIS programmers need today is a consistent, well-supported infrastructure that we can use for years to come without being bumped to a different programming methodology (unsuitable for our needs) every time the wind changes.



There's a lot of satire on the Internet, and much of it is genuinely funny. But the line between genuine satire and mere obnoxiousness is getting very, very thin. I'm seeing more and more material presented as "satire" whose real purpose seems to be just to give people false impressions.

A common tactic is to make a politician look more extremist than he or she is. Someone posts or shares a fake quote attributed to a real person. It's supposed to be a comic exaggeration of what that person might say, and if you're well enough informed, you'll recognize it as such.

But it's passed off as real. Much of the audience has no way to know that it isn't. Poe's Law tells us that a parody of extremism is not distinguishable from real extremism without outside information.

I contend that such a thing is not satire at all — its real goal is to misinform, pure and simple, or at least to create an unfair impression, often by appealing to stereotypes and prejudices. ("Never mind what this person is really like, we want you to imagine they're like this instead.") Calling it satire is only an excuse.

The whole thing resembles playground taunting, where the children say falsely that someone did something embarrassing, and then they gather around to laugh at him for something he didn't do.

Satire can be a good thing. Done right, it makes a clear critical point about its target. But we always need to ask, is the criticism wise? If not, the satire serves no good purpose.

I fear that in some cases, so-called "satire" has become a socially accepted way to promote ethnic, religious, and regional stereotypes. Melody and I talk about "redeeming humorous value" — we can excuse some bad taste in things that are genuinely funny, all the more so if their underlying point is wise. But if the bad taste seems to be the main point and the humor is awkwardly contrived, we won't laugh.

Afterthought: One reason this "satire" issue concerns me is that I respect people who don't know as much as I do, especially if the things they don't know are trivial. I don't think you are a dummkopf if you don't know that the Wyoming Institute of Technology or even The Onion is fictional. I don't get my thrills from making up obscure inside jokes that would mislead anybody and then saying, "You're stupid, my inside joke misled you," or even, "You're ignorant because you're not paying attention to all the latest inside jokes."


So what's in a ViewModel?

Picking up where I left off yesterday, I need to tell you more about my approach to a ViewModel.

A ViewModel object of the right type for each window is created in the constructor for the window (MainWindow or Form1 respectively) and belongs to the window.

public partial class MainWindow : Window
     MainWindowViewModel vm;

     public MainWindow()
         vm = new MainWindowViewModel(this); // create a ViewModel object
         this.DataContext = vm; // make it this window's data context
         InitializeComponent(); // initialize the main window

From here on, in the MainWindow object, this.vm is the ViewModel.

The ViewModel is passed as an argument to the computation engine. Here's the code in the ViewModel that launches the computation engine (the routine Computation.Countdown) in a background process:

public async Task LaunchComputation()
     Canceler = new CancellationTokenSource(); // fresh one for each run
     Running = true;
     await Task.Factory.StartNew(
         () => Computation.Countdown(this)
     Running = false;

That's fairly advanced C#. What I want to call your attention to is Computation.Countdown(this). That's a call to the Countdown method in the Computation class, passing this (the ViewModel itself) as an argument. That ViewModel serves as Computation.Countdown's communication with the outside world. It is how Computation.Countdown finds out about settings made in the user interface (telling it what to compute) and reports intermediate results back to the user interface.

So what's in the ViewModel? For concreteness, I'll tell you about the WPF version first. It contains:

  • A CancellationTokenSource object that can be used to signal a background process to cancel. This is what the computation engine looks at when deciding whether to continue its main loop or bail out.
  • Read-write properties corresponding to data on the screen. There are strings that automatically stay in sync with the contents of textboxes, booleans that stay in sync with checkboxes, and so forth. The computation engine looks at these read-write properties, not at the GUI itself.

    Behind the scenes, the getters and setters of these properties keep them synchronized with the GUI. In WPF, that is done mostly through data binding. In the WinForms version, the getters and setters actually fetch data from the GUI and stuff data back into it.
  • A method to append text to a textbox that is being used like a write-only log file. It is common for scientific software to have one or more textboxes that work that way. The contents are never read back in, so there's no need to keep a string synchronized with the whole text, which may be large.
  • Properties indicating the state of the program that can affect the GUI. One of these, Running, is read-write but perhaps should not have been; it is true when the computation engine is running. Another, NotRunning, is read-only and is its opposite. A third one, Ready, is true when the computation engine is ready to launch — that is, valid input settings have been made and it is not already running.

    In WPF, these boolean properties are bound to the Enabled property of various buttons and textboxes so that input can only be accepted under the right conditions. There is also a property of type Cursor that is the wait cursor (formerly an hourglass, now a wheel) while the computation is running, and is null at other times. (In WPF, null means "display your default cursor.") It is bound to the Cursor property of the appropriate GUI elements.

    (Note: WPF also provides an ICommand interface that can be bound to a button, with methods not only to execute the command, but also to determine whether it can execute, and thus whether the button should be enabled. I opted not to use this because I don't think it would have saved me any code, and in any case it doesn't handle cursor changes.)

    In WinForms, I couldn't do anything quite that elegant. Instead, a method called UpdateGuiAppearance is called by the setter of Running and by the OnTextChanged event of textboxes that need validating. It implements all the logic for enabling and disabling components and changing cursors.
  • Methods to launch and cancel the computation. This is where the ViewModel calls the computation engine. I quoted part of this above.

My implementation of ViewModel does not contain event handlers for the GUI, and to that extent, the "Events" arrow in yesterday's diagram is inappropriate. The GUI event handlers are in the GUI (that is, in MainWindow.xaml.cs or Form1.cs respectively). They call methods in the ViewModel. The goal here is to keep the mechanics of the GUI out of the ViewModel. That includes strange-looking event-handler arguments.

I'm sure it can be done better, but that's my first stab at it!


ViewModel for scientific software

One of the big challenges in computer programming today is how to organize a large computer program that has a graphical user interface, such as a Windows application.

Creating, placing, and using the window components is no longer a problem. It used to be horrendous — I can remember when it took pages of code just to create a window with nothing in it — but Visual Basic and Borland Delphi made the components object-oriented and easy-to-use years ago.

The problem today is keeping big programs organized. Once there are a couple of dozen components on the screen, each with its own effect on the computation, it's easy for the programmer to get lost.

For a long time, programmers have understood intuitively that the window components need to be separated from the computation and data, with some kind of intermediary between them. Variations on such an architecture include Model-View-Presenter, Model-View-Controller, and Model-View-ViewModel. This is often thought of in the context of business applications that update a database. The "model" is the database with its computing capabilities, and the "view" is what goes on the screen. In between is something else, most recently called the ViewModel.

I spent the day trying to come up with a personal way to apply this architecture to scientific software. In scientific software, you're not normally updating a database. More often, you set up a long computation, then start it going; it reports intermediate results to you as it runs, and you need the ability to cancel it before it finishes.

So I started by creating a dummy piece of scientific software — a simple countdown timer. It has all the key elements: input from the user, incremental output during the computation, a "log" that is written in a textbox but acts like an output file, and "start" and "cancel" buttons.

The key idea behind ViewModel architecture is that the ViewModel contains everything the GUI and the computation engine need to know about each other. They don't communicate directly.

And the ViewModel contains everything the programmer needs to know about the information that goes on the screen. It's not cluttered with the mechanics of the GUI. It's self-contained, containing only things the programmer actually needs to be aware of.

I implemented my sample program in C# with both of Microsoft's GUIs. The WPF version is very elegant. It mostly uses data binding to tie the GUI components to the properties of the ViewModel, all of which have setters and getters that take care of minor chores whenever anything changes.

Then I also did it in WinForms, with somewhat less elegant results. The important thing, though, is that the computation engine is identical in both programs, except for some name changes that I could have avoided. The ViewModel guarantees that nothing in the computation engine itself is dependent on any non-essential attributes of the user interface.

Both of the implementations run the countdown timer in a separate process, and they demonstrate how to handle all the cross-thread calls. The vexing problem of keeping a textbox updated with intermediate results is demonstrated in two ways: keeping a string property of the ViewModel synchronized with the text of the textbox, and calling a method in the ViewModel to append characters to the textbox as if it were a file.

Download both of these and use and enjoy them. I'm giving them away as free examples, with no restrictions but also no license.

See also the next entry.



I've just had a Homer-Simpson-style head-banging moment.

All through last month, I was working on getting sharper full-face pictures of the Sun and Moon with my vintage-1980 Celestron 5.

And throughout almost the whole month, my f/6.3 compressor was on the telescope and I had forgotten about it!

The f/6.3 compressor was designed for 8-inch telescopes and not too well matched to the C5. I think it degraded the image quality substantially.

Take it out, and the Moon comes out sharper! Above, you see the result of not using it. Stack of 5 still pictures with a Canon 60Da, deblurred with RegiStax 6. The air was quite unsteady, so the picture is not as sharp as it might be. But I think I've finally gotten optical problems down to the lowest level practical.


Let's not overlook Orion
Space exploration in the 21st Century

In two days, around 7 a.m. EST on December 4, NASA will launch the first unmanned test of the Orion spacecraft. Orion is essentially a resumption of the Apollo program with newer technology. Bear in mind that the last time we sent human beings beyond low earth orbit was 1972, and at the time, microprocessors had not yet been invented! It's time to catch up.

Back in the 1960s, we were all excited about space exploration. I watched numerous launches on TV and the last two Apollos live at Cape Canaveral. But then, it seemed, the public lost interest, including me. We knew about Skylab, the Space Shuttle, and the ISS but somehow couldn't work up the same amount of enthusiasm. I think the Apollo 13 near-tragedy and the two Space Shuttle explosions took the fun out of it for many of us. Also, personally, I was seeing more of a gap between astronomy (one of my consuming interests) and low-orbit space flight (which was, in my mind, increasingly in a category with aviation).

Of course, the scientific achievements of unmanned space probes, especially Voyager and the Hubble Space Telescope, were impressive; they fill the astronomy books today. And we rely on satellites every day for communication, navigation, and images. To that extent, space is more a part of our lives than people in 1960 would have expected.

But I think it's time to get back in the game of manned deep-space flight. Partly, it's just that we don't want to lose our know-how. A 42-year lapse is a long time. Perhaps the most important achievement of Orion will be simply to pick up where we left off in 1972 and update the technology.

I don't want to debate the politics of funding. I will, however, point out that the NASA budget is tiny compared to the defense budget, and that space technology has obvious defense benefits. If space exploration is to occur at all, I think it's important for the United States to remain on the forefront.

Afterthought: I think one reason the public came to feel that Apollo was a waste of money, in the late 1960s and early 1970s, is that it was wasteful. It was a mad, extravagant race against the Soviets. One of its slogans was, "Waste anything except time." The Orion program is proceeding more slowly, deliberately, and efficiently.


Let me introduce my new grandsons!

If what you are looking for is not here, please look at previous months.