Category Archives: Grumpiness

Embedded

Over on Flickr, I have a photo. It has a share-this url that looks like this:

https://flic.kr/p/qmzMht

I’m trying to embed this image in a WordPress post, here in the daybook. It’s not working.

The WordPress documentation says:

…simply paste that link on its own line in a post or page in your WordPress.com blog and your image will appear, linked to your Flickr image….

Alas, it doesn’t work. If I paste the url into the post – on a line by itself – I get…the url, not the image. If I use the WordPress embed tag, I get…the url, not the image.

I suspect that Flickr changed their url scheme, and the WordPress whitelist hasn’t caught up. Or maybe Flickr support in WordPress is broken, has been broken for years, and nobody cares because nobody’s using Flickr any more. Or maybe nobody’s using WordPress any more?

Either way, no image embeds today.

Windows 8 vs. OS X

For all their big talk of UX research & testing, Microsoft often displays a stunning ignorance of the Right Thing To Do. Here’s an example that’s been annoying me ever since my employer (hi, Stephen!) issued me a Windows 8 laptop:

OS X:

  1. Open laptop. Password prompt appears.
  2. Enter password. Computer unlocks.

Windows 8:

  1. Open laptop. Nothing happens.
  2. Press power button. Lock screen appears.
  3. Press any key. Unlock screen appears.
  4. Enter password. Computer unlocks.

It smells like the ‘softies have uncounted thousands of (admittedly clever) people, each beavering away on his own tiny cog of the vast mechanism known as Windows; but they have nobody thinking about how all the pieces fit together.

I suppose item #1 might be a hardware issue – perhaps it never occurred to the laptop manufacturer that raising the screen might imply a desire to use the computer.

#2, though, is just dumbness. It’s a very pretty lock screen; I’m sure the Lock Screen Group at Microsoft spent months designing & tweaking it to a state of utter perfection; but admiring the lock screen isn’t why I have the computer.

Maybe there’s a registry hack to work around this. Must investigate.

Goodbye, Internet Explorer

Jennifer’s computer picked up some malware the other day; Internet Explorer started popping up ugly dialog boxes: “This content requires Media Player 12.7”, or some such.

It’s happened a few times, in the four years Jennifer’s had her computer. When it does, she worries that she’s done something wrong, or visited a bad web site, and seems dubious when I tell her it’s not her fault. (Whose fault is it? Microsoft’s, for shipping an insecure web browser.)

So, my project for last night was malware removal. This proved mildly challenging.

The virus scanner claimed to have detected & quarantined it, but it didn’t seem very quarantined: the ugly dialog boxes kept coming.

My usual technique for dealing with these things is:

  • Log in as administrator. (Regular user accounts should not have admin privileges, because that gives the malware admin privileges – a Very Bad Thing indeed.)
  • Fire up the autoruns utility. (It’s astonishing, really, how many different ways Windows provides to automatically execute untrusted third-party code. It’s almost as if Microsoft wants Windows computers to be infected.)
  • Look for unsigned executables with random names: in the temp directory, downloads directory, etc., etc. Delete all registry references to these, then restart the system.
  • When the machine comes back, delete the executables. (Since they never started, they can no longer interfere with their removal.) Presto, your machine is disinfected.

Alas, this time that last step didn’t work. I could see the executables, but Windows wouldn’t let me delete them. (Gee, thanks, Windows!)

Fortunately, there’s more than one way to remove a file; so I switched to plan B, the PendingFileRenameOperations registry hack. That one runs in the system context (which can do most anything), and runs before any of those pesky autorun registry entries.

One restart later, the bad software was no more.

I decided to poke around a bit more, to see if I could make reinfection less likely. I made sure Windows was up to date; I updated Java (a notorious malware vector, Java – perhaps the name is an acronym for Just Another Virus Accumulator); and I disabled Internet Explorer’s Java plugin.

Then I installed Chrome, and made it the default web browser.

I feel bad for Microsoft. They’re still working as hard as ever – on Windows, on Internet Explorer – but no one cares any more. The world has moved on.

Welcome to the future

If I use Chrome:

  • OS X crashes. Frequently.

If I use Safari:

  • Xmarks prevents Safari from synchronizing its bookmarks with iCloud (hence, with the iPhone & iPad).
  • LastPass can’t always auto-fill credentials for sites that require them.
  • LastPass tends to throw, across the top of certain pages, an empty blue bar that cannot be dismissed.
  • The online-banking web site’s Flash detection doesn’t work, so I can’t see my bank statements.

As Charlie Brown would say, AUGH.

Facebook feature request

The new-post editor needs a pair of radio buttons:

[.] This is something I created myself.
[.] This is something I found on the internet.

The account settings page would then have a checkbox:

[.] Hide all the crap my friends find on the internet.

Goodbye, Reunion

I’ve been doing genealogy for a long time now – close to fifteen years, if memory serves – and have used a number of different genealogy applications to record the results of my research:

I started with Family Tree Maker (doesn’t everybody?). Honestly, it’s been too long to remember much about FTM, aside from a certain annoyance that it nagged me to ‘share’ my data with them, so they could sell it to their other customers.

After a while, I switched to Personal Ancestral File. I used PAF for a long time. It was…adequate, no better than that. (PAF was my first experience with Mormon-centric genealogy software. Ever since, in every application I’ve used, I’ve had to find & turn off all mention of temple ordinances, sealing-to-whoever, etc., etc. I don’t do any of that, I’m not interested, I don’t want to see it.)

In 2006, I bought the iMac, which presented a problem: PAF was Windows only. After a bit of research, I switched to Reunion: supposedly, the best OS X genealogy application available. But Reunion fell somewhat short of adequate, and I never did get very far with it.

In 2009, I bought the netbook, which – since it came with Windows XP – presented new options. After a bit of experimentation, I settled on RootsMagic. I like RootsMagic, it’s a good match to the way I (want to) do genealogy. I set about recreating my genealogy database, recording even more information than before and with proper source citations on everything. Life was good.

Then, last December, I bought a MacBook Pro and spoiled everything. The iMac went to Jake, the netbook went to Sam, and I was back to using Reunion. I even upgraded to the latest version (Reunion 9), which wasn’t particularly cheap.

This afternoon, doing a little data entry with Reunion, I realized: I don’t like this program.

The screen layout is ugly, data entry is cumbersome. Some date fields accept free-form dates, others don’t. There’s no way to record an event – e.g., residence, military service, etc. – that spans a range of dates. Source management & citation are pretty feeble, compared to RootsMagic.

So I’m done with Reunion, and the search for a suitable replacement is on.

Don’t you people talk to each other?

Loyal readership (if any remain), be advised: work stuff ahead. Feel free to skip this entry.

So: I’m using WiX 3.5 to create an MSI installer for [censored]. Among other things, this installer needs to create a few shortcuts in the Start menu (which these days is called the Program Menu Folder).

That’s easy: use a <Shortcut /> tag:

<Component Id='WiX_Shortcuts' Guid='*'>
    <Shortcut
        Id='WiX_Foo_Shortcut'
        Name='Foo'
        Description='Foo'
        Target='[INSTALLLOCATION]foo.exe'
        WorkingDirectory='INSTALLLOCATION'
        />
</Component>

But there’s a problem: every component needs a key file, and shortcuts – even though they are files – cannot be key files. The fix: add a registry key to the component, and make that the key file:

<Component Id='WiX_Shortcuts' Guid='*'>
    <Shortcut
        Id='WiX_Foo_Shortcut'
        Name='Foo'
        Description='Foo'
        Target='[INSTALLLOCATION]foo.exe'
        WorkingDirectory='INSTALLLOCATION'
        />
    <RegistryValue
        Root='HKCU'
        Key='Software\Wolfram Research\Foo'
        Name='installed'
        Type='integer'
        Value='1'
        KeyPath='yes'
        />
</Component>

But there’s a problem: the installer needs to run in either per-user or per-machine context (depending on user privileges, the version of Windows, and – for all I know – the phase of the moon, current temperature in Tahiti, etc., etc.). The fix: set the ALLUSERS and MSIINSTALLPERUSER properties:

<Property Id='ALLUSERS' Value='2' />
<Property Id='MSIINSTALLPERUSER' Value='1' />

But that causes validation errors. (Which ones? Beats me, I forgot to write ’em down. Sorry.) That’s because the shortcut (which, you’ll recall, is a file) is installed into a (potentially) per-machine location, but the key file (which, you’ll recall, isn’t a file) is installed into a per-user location. (Why care about validation warnings/errors? Because MSI is such an insane kludge tower that if you get anything wrong, it will take a giant [censored] all over your computer. You’ll be hours cleaning up the mess.) The fix: use the HKMU registry root:

<Component Id='WiX_Shortcuts' Guid='*'>
    <Shortcut
        Id='WiX_Foo_Shortcut'
        Name='Foo'
        Description='Foo'
        Target='[INSTALLLOCATION]foo.exe'
        WorkingDirectory='INSTALLLOCATION'
        />
    <RegistryValue
        Root='HKMU'
        Key='Software\Wolfram Research\Foo'
        Name='installed'
        Type='integer'
        Value='1'
        KeyPath='yes'
        />
</Component>

There’s no such location in the Windows registry; it’s a kludge that magically points to the correct per-user / per-machine location. And it causes ICE57 errors:

ICE57: ICE57 - Checks that components contain per-machine or per-user data, but not both.
ICE57: Created 02/11/1999. Last Modified 01/17/2000.
setup.wxs(66) : error LGHT0204 : ICE57: Component 'WiX_Shortcuts' has both per-user data and a
keypath that can be either per-user or per-machine.

The fix: there isn’t one, because ICE57 is wrong. It seems the ‘softies who implemented ICE57 weren’t talking to the ‘softies who implemented dual-mode (per-user/per-machine) install packages. I may be disappointed, but I am not particularly surprised.

So the only thing to do is suppress ICE57, and get on with life.

Air(head)

The local fishwrap asks:

What’s so great about a pair of shoes that you’re willing to get up early on the Friday before Christmas and wait in line for them, with no guarantee you’ll be able to buy a pair?

My anwer:

Nothing. Only an idiot would do that.

Annoyances

I had the notion that I should replace cgi with a less-ancient means of executing the code that implements various web pages. (This is at work.) So: what to use instead? WSGI looks interesting.

There’s a mod_wsgi package for Apache. Is it already installed? Alas, no.

The mod_wsgi installation instructions begin with the traditional list of compatibility warnings (because Linux is hopelessly fractured, providing endless opportunity for breakage):

…if Apache has been installed from a package repository, you must have installed the corresponding Apache “dev” package as well.

Apache was installed – at least, it’s running – but apparently not from a package repository. (Because Linux software is also hopelessly fractured – everything is available from nine-and-ninety different sources, and each source is installable in nine-and-ninety different & mutually-incompatible ways.) Does this mean the “dev package” is present? How am I supposed to tell? The mod_wsgi folks have no advice for me.

Next, some warnings about Python:

The version of Python being used must have been compiled with support for threading.

On Linux systems, if Python has been installed from a package repository, you must have installed the corresponding Python “dev” package as well.

“Support for threading”? How do I tell? The Python documentation is silent on this point – though perhaps the existence of the thread module indicates threading support. (Unless the Python distribution helpfully made thread an alias for dummy_thread.)

It appears that Python was installed from a package, and that the dev package is also installed. And – as Batman once observed – exactly that much is right with the world.

But wait, there’s more:

Python should preferably be available as a shared library. If this is not the case then base runtime memory usage of mod_wsgi will be greater and conflicts with mod_python can occur causing Apache to crash if both Apache modules are loaded at the same time.

How do I tell whether Python is “available as a shared library”?

Also: it looks like mod_python is installed. I don’t think it’s being used – the Python-ness of my cgi scripts is probably unknown to Apache – so it should probably just go away.

I am rather frustrated just now.

A few problems with iBank

I had a few receipts on my desk, so this evening I decided to do a little iBank data entry.

The iBank transaction editor is nice enough. It’s different from Quicken, but I’m sure I’ll get used to it. (I wish the new-transaction form would come up with the input focus set to the date field, instead of set to nowhere. I should be able to click the add-transaction button and start typing, but instead I have to hit tab once.)

I had some trouble figuring out which receipts belonged to which accounts, but that’s my fault, not iBank’s.

I noticed that transactions imported from Quicken occasionally had bogus values in the payee field – i.e., the values from the bank download (‘COUNTY MARKET # 123-456-7 CHAMPAIGN’) instead of their carefully-hand-entered replacements (‘County Market’). I think this is a bug in Quicken, but it’s still annoying.

iBank apparently can’t tell the difference between ‘importing my data from Quicken’ and ‘downloading transactions from my bank’ – every transaction imported from Quicken has been marked as cleared, even the three checks from last year (total, $37) that still haven’t reached the bank. My first statement reconcile is going to be…interesting.

Finally, with my data entry finished, I decided to try downloading new transactions from the bank. Alas, none of our accounts – bank, credit card, 401(k), etc. – is supported by iBank’s direct-download function. (Maybe in version 5? Dare I hope?) I did a manual download, and imported that into iBank. It seemed to go well: iBank did a fairly good job of matching the incoming transactions with ones I’d already entered. I checked off the good ones, and clicked Import.

And the incoming transactions replaced the existing ones, in the process discarding all the payee, category & split data I’d already entered. Especially annoying was the way it wiped out my last paycheck. It kept the amount, but discarded all the deductions: taxes, insurance, 401(k) contribution.

The damage was so pervasive that I had to restore my iBank file from backup (once again, Time Machine saves the day). Then I had to re-enter all the receipts I’d just entered.

I confess to being mildly annoyed with iBank just now, but I’ll probably keep using it (and fork over $50 when the trial period is over). iBank isn’t perfect, but it surely has more of a future than Quicken.