|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This view of the diary is limited to these topics: technology. There may be lack of continuity in the text, and some days may be completely missing. In case of doubt, please enable the complete display.
| Friday, 1 April 2011 | Dereel | Images for 1 April 2011 |
| Top of page | ||
| next day | ||
| last day |
|
Firefox on Microsoft: no easier
|
Topic: technology | Link here |
Started up my Microsoft VM to check some markup and found a whole lot of windows had popped up, including yet another unsolicited firefox version 3.6 download waiting for installation. Started that and was asked to accept a strange license agreement:
|
|
||||||||
Was that part of the firefox installation? Who knows? It doesn't say what it is, and it took me a while to realize that it was a GPL license agreement. I still don't know. I can accept the GPL, so accepted, but I don't know if it was related. The firefox installation continued, and once again I got the message “Thanks for downloading Firefox, but this version is out of date”. Surely it should realize that itself and download the next one. Followed the instructions, downloaded the executable firefox 4 executable, and... nothing. It proved that it had save the thing on my desktop, and I had to install it manually. Why is this stuff all so clunky?
| Saturday, 2 April 2011 | Dereel | Images for 2 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Photos into the sun and software experiments
|
Topic: photography, technology | Link here |
House photos again today. After noting significant flare in my Zuiko Digital ED 12-60mm F2.8-4.0 SWD lens and the comparative lack of it on the “before” photo was taken with the Zuiko Digital ED 9-18mm F4.0-5.6, decided to try some shots directly into the sun. Yes, there's flare on the 9-18mm too; it doesn't show up as much because it covers most of the field of view. But I took these photos to stitch them together, so what's wrong with taking a photo where I obscure the sun with my hand, and then eliminating it from the final photo?
|
|||||||||||||||||||||||
The exposure is identical for both images, and the flare in the first image is clear in the shaded walls of the house and shed, and on the grass. Left that for experiments later, and just did the normal stitching. To my surprise, hugin incorporated both of these photos in the final panorama and completely omitted my hand:
|
|||||||||||||||||||||||
More experimentation needed there. In particular, the new version of hugin now has a tab “mask”, which enables you to choose the areas of an image to include or exclude. In that respect, it's like what I was looking for last year: a non-rectangular crop function. But the crop function is still there as a separate feature. Who knows how they interact, but it looks as if the mask function still needs a lot of work. Tried it out on the panorama I was working on last year, and found a number of problems. The biggest problem was where people in two different images overlapped:
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
|
|
|||||||||
The problem here is that the overlap between Peter Jeremy (left) and Juha Kupiainen (centre) wasn't vertical. There's no way to include all three people in the image, so I chose to remove Juha. I finally managed it back then by cropping vertically, but it chopped off Peter's left foot and the end of Sue Blake's stick, and also left Juha's right foot behind:
|
|
||||||||
What I needed was a way to slice cleanly between Peter's and Juha's legs, and then back around the stick to remove the foot. The mask function offers that:
|
||||||||||||||||||||||
|
|
||||||||
Unfortunately, it's very difficult to use:
You draw the mask by selecting “Add mask” and then left clicking to add a point and right clicking to finish. There are two obvious ways to draw it: at highest resolution (200%) or with the entire image in the window.
With the entire image, drawing the mask is fast and easy. I had then intended to scale up to 200% to place the points more accurately. But moving a point moves adjacent points too (in fact, I think, even ones further afield), and there seems to be a minimum number of pixels by which they can be positioned, about 16. That makes the approach as good as useless.
Setting 200% to start with eliminates some of the problems, but then you can't use the scroll bars; you have to use the keyboard, and that's slow.
When it's all done, you can see the result in the preview and fast preview windows. But they're small, and the windows can't be resized. Thus, even in the last attempt, I'm left with a tiny black triangle to the left of the bottom of Sue's stick:
|
|||||||||||||||||||||||
|
|
|||||||||
Still, it's an improvement. I almost feel like looking at the code myself.
|
X: race condition?
|
Topic: technology | Link here |
While doing the photographic work, used up amazing amounts of memory, and for the first time found numerous processes stuck in pfault status. While trying to look at it, got the mouse cursor wedged between two displays, and X hung itself altogether:
|
|||||||||||||||||||||||
By the time I took that photo, the processes had long since successfully completed, but the X server remained wedged and had to be shot down. I've seen something similar before; is this a race condition of some nature, possibly related to the mouse moving between displays?
| Sunday, 3 April 2011 | Dereel | Images for 3 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
More free computers
|
Topic: technology | Link here |
Down to Smythesdale today to visit Matt Tatum, who had offered me a couple of old computers a week or so ago. The couple gradually grew, and in the end there were 13 of them:
|
|||||||||||||||||||||||
Back home and unloaded them in the shipping container. A lot of them are effectively junk, but in another I found a 250 GB disk, and there is a Dell PowerEdge 2400, whatever that may be, and 5 IBM NetVista machines:
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
The NetVistas look interesting, and possibly something I could use for my 3G Internet connection, but what's in the boxes? I don't know: I can't open the damn things. They don't seem to have any kind of screws on the cover, and there are no slides or anything. Went Googling and found that I'm not alone, but it looks as if I'll first have to identify the exact model, so put that into the “too hard” basket until I go back out to the container.
|
Masked panoramas, continued
|
Topic: photography, technology | Link here |
More work on the panoramas today, in particular the one where I had put my hand in front of the sun. It confirms yesterday's impression: there are bugs in hugin's mask function. I can easily define an exclusion mask (an area of the image that should be excluded from the panorama), but when I try to define an inclusion mask, it does random things. Sometimes it does nothing, and then sometimes it does, but there are discrepancies between the windows, and it seems to forget masks. Here the first image (mask window) shows image 1 of the panorama, of which I want only the area round the sun. But it shows no mask, and that the entire image will participate. In the second image (fast preview), the mask has been applied correctly (pink region):
|
||||||||||||||||||||||
|
|
||||||||
Didn't finish that one either; I need to understand things better first, including how to work round the bugs.
| Monday, 4 April 2011 | Dereel | Images for 4 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Panorama masking, finally
|
Topic: photography, technology | Link here |
More work today on the panorama into the sun, and finally got a presentable panorama. Here the first attempt, then the one I did today:
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
The increase in shadow detail is particularly obvious round the south verandah:
|
|
|||||||||
|
|
|||||||||
And how did I do it? Pretty much the way I described yesterday, just with a lot of fiddling.
And how can I improve things? Clearly the hugin mask tab needs improvement, and I think it should be merged with the crop tab. But then there needs to be some way to fine-tune things from the preview or fast preview window, and also a way to increase the display size without changing the panorama. Currently any change in the displayed image changes the resultant panorama, which isn't my intention.
Also had another stab at the time-lapse output of the verandah photos. I had thought that maybe I needed to crop all the images so that none of the frame remained. Nada. The problem was the same as before: the first image was larger than the other two. I need to investigate (and probably document) how these things work.
| Tuesday, 5 April 2011 | Dereel | Images for 5 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Time lapse photography, still more dead ends
|
Topic: photography, technology | Link here |
Continued my investigation of how to resize images for time-lapse photography today. The program I have been using is nona, part of hugin. Went looking for documentation, which, as I feared, was very scant. What I've discovered is effectively the usage() message:
The important thing here is the project file, which contains all the input information. It's supposed to be compatible with the PTStitcher project file. An old version of the format is described on that page. It seems that hugin creates one internally when invoking nona directly, but it save it as a file panorama.pto, where panorama is the base name of the output file.
Trying to read nona source code is painful. There's even a file src/hugin_base/nona/TODO.txt which is not overly complimentary. And with that minor exception there's as good as no description how it works.
So decided to try PTmender, which is also supposed to be compatible with PTstitcher. But somewhere the compatibility has faded:
=== grog@dereel (/dev/pts/5) ~/Photos/bloody-stupid-hugin 129 -> PTmender -o foo.tif 00-02.pto *.jpg
It appears to be complaining about the first character of every line. I don't even want to start thinking about looking at why. But where do PTmender-compatible project files come from?
| Wednesday, 6 April 2011 | Dereel | Images for 6 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Looping software and warm cupboards
|
Topic: multimedia, technology, general | Link here |
I've noticed in the last couple of days that the cupboard with cvr2.lemis.com, my computer video recorder, has been particularly warm. This afternoon I discovered why:
That represents 17 days of CPU time; in other words, almost since starting the front end, it has been using 100% CPU time. No idea why. I don't use mythfrontend (part of MythTV) on that box, so I hadn't noticed. Looking at the start time, it appears to have been started when I was looking at the reception problems.
And later Yvonne came to me and told me that her Emacs was running excruciatingly slowly, up to a minute for a response. Went and took a look: yes, indeed, it was, using up to a minute of CPU time per keystroke. I've never seen anything like that before. She was editing her horse training diary, which is a simple markup interpreted by a PHP script:
The * in the first column are magic: *d generates a date header, and *> interprets the following URL, extracts a valid photo URL from it and generates HTML to display the image. Empty lines generate a paragraph break. That's all there is to it, but it's easy enough for her to use, and it's sufficient for her needs.
But why was it looping? Tried to debug the scripts by setting debug-on-quit to T, and was able to get a stack trace, but it wasn't very informative:
It took a while to come to the hypothesis that it was due to using Emacs HTML mode, which was presumably trying to match up tags in the markup, and not finding any. The file is currently nearly 7000 lines long, and needs to be broken up for legibility, but normally that wouldn't be a problem. But the HTML functions are not optimized for looking through the whole file for every tag, and that proved to be the problem. Score: guesswork 1, Emacs debugger 0.
| Thursday, 7 April 2011 | Dereel | Images for 7 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
More weather station woes
|
Topic: technology, general | Link here |
Came into the office this morning to find my weather station software crashing at regular intervals with SIGSEGV. Further investigation showed that I hadn't had any readings since yesterday morning. Tried putting the thing in the debugger, but it didn't seem to read anything at all from the device.
This device has a pretty flaky USB interface, so tried various things, including disconnecting and reconnecting the cable (no difference) and then power cycling the device (remove and replace batteries). That didn't work either, but it pointed out the problem: it didn't reset. The batteries were flat. Replacing them solved the problem. Now wouldn't it be nice if the device were to give some indication in advance? Of course, maybe it does. How can I find that out?
|
Opera font strangenesses
|
Topic: technology | Link here |
I'm gradually coming to terms with Opera. It's much faster, not only with photos, but also with normal web page display. As I suspected, though, I'm not yet ready to switch over completely. One of the biggest issues are fonts. There are two separate issues:
For some reason, Opera doesn't find the non-European fonts installed on the system. firefox does, so it's not a question of missing fonts. It seems that Opera must be looking elsewhere for them, but the documentation doesn't give details.
Font sizes appear to be Just Plain Broken. At some point it started rendering my own pages very large, then very small, and nothing I could do in the settings would change it; even a font size of 25 pixels rendered the text in minuscule size. I don't specify font sizes in my web pages (I believe that no web page should), so it can't be the page itself. Restarting Opera did change, back to normal. But when I opened another window, that page (also without any special font specifications) came out extremely large:
|
||||||||||||||||||||||
This seems to happen at random. I wonder how to chase it.
There also seems to be an issue with positioning on anchors. In the HTML version of this diary I have self-referential links to each article. Clicking on one should position it at the top of the window, and that's what happens with firefox. But for some reason, Opera positions further down, at least some of the time.
A related problem is refresh. If I have selected a URL like http://www.lemis.com/grog/diary-apr2011.php, the refresh occurs without repositioning the window to the top. This is what firefox does too, and I think it's the correct action. But if I have chosen a URL with an anchor specification, like http://www.lemis.com/grog/diary-apr2011.php#D7-1, it does reposition to the anchor position (modulo the error described above), which is quite irritating.
| Friday, 8 April 2011 | Dereel | Images for 8 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Mail on teevee
|
Topic: technology | Link here |
In the evening, waiting in front of the TV screen for Yvonne, decided to check on my mail. That's simple enough: ssh to my main machine and start mutt. But teevee runs FreeBSD too. It's a simple matter of:
=== root@teevee (/dev/ttyp3) /var 5 -> ln -s /dereel/home/var/mail
Somehow the immediate “you have mail” amused me.
| Saturday, 9 April 2011 | Dereel | |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Utilities in C: the pain
|
Topic: technology, photography | Link here |
I should have been taking house photos today, but it was far too windy. Instead I played around with an issue that had occupied me for nearly a year: last year at the last hacker's barbecue, Juha Kupiainen, Peter Jeremy and I took a lot of photos of each other, and I put them all up on my photos page. Problem: the clocks on the cameras weren't in sync, so the connection between the photos (ordered by time) got lost. Mine was the fastest, Peter was 15 seconds behind me, and Juha was 1 minute 54 seconds behind.
How do I know that so exactly? With Juha it was simple: by sheer fluke we not only took photos of each other at the same time, but the timing was so exact that Juha got a photo of the flash from my camera, a synchronization of better than 4 ms:
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
The original EXIF data shows a discrepancy of 1 minute, 54 seconds.
With Peter it's not quite so certain, but he took this photo, which must have been just before I took the photo of Juha:
|
|||||||||||||||||||||||
It's unlikely that I would be sitting like that after taking the photo, so I have rather arbitrarily decided that it was one second before. So at least we have a fairly good idea of the times by which to reset the timestamps.
But how? The basic incantation with exiftool is:
In passing, it's interesting to note the various dates reported by exiftool:
The first column is the EXIF tag, which is useful because people tend to describe things differently in different programs. The exif program reports the following values for the same image:
According to the EXIF 2.2 specification, pages 30 and 60, the meanings of the individual output from exiftool are:
This isn't EXIF data at all. It's the UNIX modification timestamp of the file.
This is the timestamp of the last software modification. I don't use it, and by default it's set to the same time as the other two, so it's convenient to abuse it to show what was originally in the image. The standard calls this one “File change date and time”, and the tag name is DateTime.
This is the time the photo was taken. The standard calls it “Date and time of original data generation” and gives it the tag name DateTimeOriginal.
This is the time the image was digitized. I suppose it could differ from the previous one for film images, or on a camera with very slow JPEG conversion. The standard calls it “Date and time of digital data generation” and gives it the tag name DateTimeDigitized.
Getting back to the issue, it's easy enough to write a script to do much of that for you, but here I have to handle timestamp offsets, a messy business at the best. The obvious way is to do it in Perl, especially since exiftool is written in Perl, but I don't do Perl. Considered the options:
Write it in classic Bourne shell, using grep, sed, expr and things. I can't imagine such pain.
Write in awk. Only little less pain.
Write in PHP. That seems to make little sense, but I understand PHP and can write utilities in it.
Write in C, which can do everything.
Seriously considered the last two options, to the point of starting hacking some code in each language. In the end, I settled on C. It took me a good part of the day to get the program finished, most of it wondering about the correct way to do it. Why is date processing so messy?
| Sunday, 10 April 2011 | Dereel | Images for 10 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Flash on Opera?
|
Topic: technology | Link here |
Looking through eBay auctions with Opera today, and again tripped over the missing flash support. Today I had enough time, so followed up on what to do. The otherwise quite good documentation didn't help much: it seemed to think I was running Linux, and gave me instructions how to install the support for various Linux distros, which isn't much help for FreeBSD.
Google to the rescue, pointing me at an article in the Opera Knowledge Base. It seems I need a separate port, www/opera-linuxplugins, which I installed. Then to the Preferences > Advanced > Content menu and clicked "Plug-in Options" and then "Change Path" to change the directories that Opera searches in.
But how do you enter the directory names? “Change Path” gives me a window with non-editable fields and truncated path names, and when I select “Add”, it gives me a window for selecting a file out of my own home directory:
|
|
||||||||
|
|
||||||||
Fiddled around with that for a while, making little progress, and suddenly I found that it had found my flash plugin. I don't know what I did to get it, but finally it was there:
|
|
||||||||
And how does it work? Barely at all:
|
|
||||||||
That should be a graphic display of a panorama head, but there's nothing there. On lowering and then raising the window, the area contains what was there before, in this case an entry from the most important work of the Brothers Grimm, the Deutsches Wörterbuch.
|
How I hate UNIX time functions!
|
Topic: technology | Link here |
Playing around with a few more details on my EXIF time reset program today, and discovered an amazing thing: if I tried to increment the time by 1 hour, 15 seconds, it only incremented by 15 seconds. If I tried to decrement the time by the same amount, it decremented by 2 hours:
=== grog@dereel (/dev/pts/22) ~/Photos/20110410 179 -> exiftool foo | grep "Create Date"
=== grog@dereel (/dev/pts/22) ~/Photos/20110410 180 -> resetdate 1:0:15 foo
=== grog@dereel (/dev/pts/22) ~/Photos/20110410 181 -> exiftool foo | grep "Create Date"
=== grog@dereel (/dev/pts/22) ~/Photos/20110410 182 -> resetdate 1:0:15 foo
=== grog@dereel (/dev/pts/22) ~/Photos/20110410 183 -> exiftool foo | grep "Create Date"
=== grog@dereel (/dev/pts/22) ~/Photos/20110410 184 -> resetdate -1:0:15 foo
=== grog@dereel (/dev/pts/22) ~/Photos/20110410 185 -> exiftool foo | grep "Create Date"
A clear case for the debugger. But in the debugger, everything worked correctly! Ended up with lots of printfs all over the place before I finally found it. And then I realised I had seen this before: strptime, which converts a specific text representation of a date to a struct tm, has the following definition:
The result gets stored in timeptr. But it also interprets the prior contents of timeptr, in particular the member timeptr->tm_isdst to check whether the current time is DST. It should be dependent on the time itself (though clearly there's one hour a year where that's ambiguous). I had allocated timeptr on the stack, so the prior contents are undefined. That's presumably why things worked in the debugger.
Even more annoying is that I've tripped over this before, but I didn't mention it in my Diary. I'm continually reminded of what I wrote in “Porting UNIX Software” nearly 20 years ago:
UNIX timekeeping is an untidy area, made more confusing by national and international laws and customs. Broadly, there are two kinds of functions: one group is concerned with getting and setting system times, and the other group is concerned with converting time representations between a bewildering number of formats.
In that time, nothing seems to have improved.
| Monday, 11 April 2011 | Dereel | Images for 11 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Using "scripting" languages
|
Topic: technology, opinion | Link here |
I don't do perl. I don't do python. I don't do ruby. I use the bash shell, and sometimes I do some AWK, but it's painful. Why nothing more modern?
For once, it's not a question of objections to particular languages or approaches. It's a question of thresholds. I can use bash for simple things like running programs. I can (and usually do) interface to it interactively. If I want to do more complicated things, I can build on existing command line input, coming up with monstrosities like:
Yes, it's ugly, but in most cases I never use it again, so it doesn't matter. If it proves useful (this one might: it's designed to check if I have forgotten to process photos), I can store it in a file, tidy up the format a bit, and call it a script. Incrementally, no sharp edges.
If I had to do that with a “scripting” language, I'd have to rewrite the script at this point. That's a transition I don't need, and only do it when it becomes really painful in a shell script. Paradoxically, I do it in PHP, because that's one interpreted language I do understand. It's clear, though, that that's not optimal.
The alternative is to use a scripting language as my main shell. Does that work? I don't know. Probably it does to a certain extent. But I don't see many people using perl or python as their login shell. I gather that there are interactive versions of many of these languages, but how smooth are they? What's command line editing and file name completion like?
To be found out about, I suppose. Currently I'm happy that I've identified a reason.
| Tuesday, 12 April 2011 | Dereel | Images for 12 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Workplace efficiency
|
Topic: technology, opinion | Link here |
It's been nearly 5 years since I decided that I'd rather retire on far too little money than continue working in an environment that drove me crazy. Yes, it's still far too little money, but I'm sure I made the right choice. The work conditions in the modern IT market (there, I said it; I can't think of a better word) didn't make up for the income.
Recently I've heard of another trend that points in the same direction: Hot desking, a kind of dynamic workplace allocation. Like most dynamic allocations, what you get on allocation is empty, and you lose whatever is left when you free the resource. Yes, in many cases it makes sense for people to share a desk, or probably a cubicle. And certainly it can save money by saving space.
But how do you do it in our business? It implies that you require very little in the way of supporting objects (computer, other hardware, books) to do your job. That doesn't work for me. Shortly before retiring, my (home) office looked like this:
|
||||||||||||||||||||||
|
||||||||||||||||||||||
|
||||||||||||||||||||||
That would have made a wonderful panorama, but unfortunately I took it before I got involved with panoramas, and it doesn't line up. And clearly it's a little extreme. But it's not just the monitors, it's all the other stuff in the room. Even now I have retired, I have four monitors on my desk, and my room is packed with books and hardware. How could I ever have worked in a hot desk environment? Clearly I'd have to do away with just about everything, and just use a laptop. I know people who can do that, with the great advantage that they can work while traveling. It's an acquired skill, I suppose, but somehow it requires significant tradeoffs. Can people work efficiently under these conditions?
The whole thing reminds me of a rationalization attempt made by our bean counters at Tandem in Frankfurt about 25 years ago. Much of our work at the time was second-level defect support (“Tandem Product Reports” or “TPR”s). They had a justifiable desire to know how much each problem was costing, and they came out with a logical solution: we would fill out forms describing the amount of time we spent on each TPR.
They went away and designed the forms, had them printed, and then presented them to us. I thought some of our (not very ruly) people were going to lynch them. The forms were in quadruplicate, required specifications that were almost impossible to find, and to crown it all, the field for the TPR number was about 1 cm wide. Our bean counters didn't know the format, which was date, time and employee number, something like 20110412 1734 4395.
Somehow, and somewhat atypically, I managed to calm people down, and after most of the people had gone, I explained to the bean counters why people had been so upset. The whole project folded, and I found some of the forms hung in the toilets next to the toilet paper.
It's interesting to consider what went wrong here. Yes, it does make sense to know where your money is going. But as a result of one-sided analyses, they made a very poor choice, and it even stopped the implementation of a sensible solution. Similarly, it seems that hot desking saves money on real estate, but loses it in employee efficiency, and—is this word still politically correct?—motivation. You can measure the real estate cost. You can't accurately measure employee efficiency.
|
Another web site
|
Topic: technology, gardening, general | Link here |
While at the Botanical Gardens, also spoke to Mike Sorrell, who wants me to take charge of the computer side of the Friends operation, notably the web site. I wonder if they'll still want me to when they find out about my opinions. Back home, took a look at the site. It doesn't look too bad, but there's very little content there, a total of 12 MB. By comparison I downloaded 66 MB to my site on Sunday alone. I suspect that the tools are an issue. I wonder how to prepare something to enable as many lay people as possible to contribute. A wiki might be a possibility.
Stopped off for a haircut on the way home. They've broken into the barber's shop again. It seems that there are a lot of hooligans around in Sebastopol.
| Wednesday, 13 April 2011 | Dereel | Images for 13 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
In praise of the kludge
|
Topic: technology, opinion | Link here |
My thoughts about scripting languages yesterday aroused a certain interest on IRC:
But that's not the point, at least not yet. Consider a parallel with texts: if you want to write a document for presentation, you cross all your 'i's and dot all your 't's. But if you're just writing a shopping list, you may write it on the back of an envelope in a scrawl so bad that nobody else can read it. Similarly, when you write a meaningful program, you do everything correctly. But if you're just messing around for a one-off program or script that will never be used again, why bother? In this specific case, I know things about the input data that Mavvie doesn't (though it should be clear that this has little to do with a crontab), so I didn't need to check for errors. Yes, there's a bug in the line
If FOO couldn't be empty, I wouldn't need to test for it. And if it were empty, the comparison wouldn't work. That's one of the down sides of this kind of kludge, of course, but the way it grew up, I found that this condition never applied. Still, I've fixed that comparison.
Some of this is contrary to what I wrote yesterday: meaningful shell scripts should be clean too, and this one is not particularly clean because it's based on incremental interactive development. But will anybody except myself ever use it? If so, I should tidy it up. And that is still easier than translating into a different language.
And no, I hadn't intended to write any more about this topic, but clearly it's something that interests people.
|
More TV reception problems
|
Topic: multimedia, technology | Link here |
My TV reception problems still aren't over. All four recordings I made yesterday were useless. There's no doubt that the antenna connection was responsible for at least some of the problems, but not all of them.
So what's the issue? I still don't know. Clearly I need to document things more carefully. I've been suspecting the individual tuners, but I don't have much evidence yet. Did some test recordings and discovered the sequence of tuner cards, something that I haven't written down before. There are two PCI tuners, on the right of this photo, and one USB tuner, the white stick in the USB slot. The white cable is the antenna input, which goes to the rightmost tuner. The output from that tuner goes into the other PCI tuner next to it, and its output goes to the USB tuner:
|
|||||||||||||||||||||||
In the sequence of antenna inputs, also right to left, the assigned card numbers are 2 → 3 → 1. MythTV always starts with the lowest numbered tuner that is free, so this means that most of my recordings are done with the USB tuner, something I'd prefer to change. Did a bit of snooping round the database and found a table cardinput with the following definition:
The column preference was set to 0 for all my tuners. Tried playing around with it, but it didn't make any difference. Then off looking at the MythWeb code for displaying recorded programmes;
|
||||||||||||||||||||||
The structure passed to this page includes a member cardid, but unfortunately it's always set to 0. Spent some time crawling through the code, but without success.
| Thursday, 14 April 2011 | Dereel | Images for 14 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Browser strangenesses
|
Topic: technology | Link here |
I'm gradually coming to the conclusion that opera has a number of irritating bugs, at least in the FreeBSD implementation. At some time today the opera process stopped, probably because I accidentally stopped it. Started it again and it came up with a single window pointed at cvr2.lemis.com, not my home page. Clicking on the “Home” icon had no effect. After starting a new window, I was able to go to the home page, but I couldn't do anything with the original window.
During that time, it came up with the information that a new version of opera was available. Interestingly, it wanted me to use the Ports Collection to install it. It's clearly a good idea to upgrade. Maybe some of the bugs will be gone, but didn't get around to it.
Instead, while doing something else, opera hung. Even a kill -9 wouldn't get rid of it:
=== root@dereel (/dev/pts/13) /var/db/mysql/weather 148 -> ps ltpts/30
=== root@dereel (/dev/pts/13) /var/db/mysql/weather 149 -> kill -9 96898
=== root@dereel (/dev/pts/13) /var/db/mysql/weather 150 -> kill -9 96898
=== root@dereel (/dev/pts/13) /var/db/mysql/weather 151 ->
Another bug in opera? Moved to firefox, and shortly after, firefox hung to and also couldn't be stopped. Again, it was hanging in ucond:
Further investigation showed that I had somehow left an NFS mount of teevee:/spool open when I powered down teevee last night. I didn't realise that that was still a problem. Rebooting teevee solved the problem.
|
Network problems: a conspiracy?
|
Topic: technology, opinion | Link here |
Back inside, discovered that my Internet link had been down for nearly an hour. That hasn't been typical lately: the PPP session was still up, and had been for two weeks. The signal strength indicator was normal (RSSI 7, which is relatively good here). And there were no error messages in the ppp.log.
Called up Internode support and then investigated while waiting for the callback. Stopped the PPP process:
The statistics information on the last line is interesting. Peak 317 kB/s, or 2.5 Mb/s. Unfortunately, it's wrong. At the time specified, the link had been down for 7 minutes. Restarted the PPP process:
That continued for a while. Then I removed the (USB) modem and replaced it. The same PPP process retried the operation, and it was successful.
I've heard that this modem (Huawei E1762) can wedge from time to time, and when Daniel from Internode called back, he confirmed it. Somehow I think everybody's ganging up on me: the NBN for not providing any proper network coverage in this area, Wendy McClelland to ensure I don't get a good enough signal, Optus for providing flaky coverage, and Huawei for supplying devices with flaky firmware. And that after more than 20 years of Internet connectivity.
| Friday, 15 April 2011 | Dereel | Images for 15 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Opera update: can't render the Opera web site
|
Topic: technology | Link here |
Got round to updating the Opera port today, which was painless enough. When I restarted it, I got a new page:
|
||||||||||||||||||||||
Note the modern truncation of the page in four directions. In fact, it's very modern:
|
|
||||||||
That looks like truncated text. I can't access this page with other browsers, so it's difficult to say whether the problem is the page or the browser, but looking at the source (and adapting the markup to this page), I find it says:
What is new in Opera 11.10
This new release of Opera brings many enhancements and new features to make browsing better than ever. Here are the highlights:
Speed Dial 2.0
Opera's popular Speed Dial has been greatly enhanced; your favorite pages now have clearer previews, and dials can even dynamically show live content for websites.
There is now no limit to how many dials you can use, and it is simple to adjust the Speed Dial view to best fit your setup.
Opera Turbo enhanced
With improved compression, Opera Turbo is faster than ever. Boost your browsing speed on crowded Wi-Fi hotspots, tethered mobile phones or dial-up connections.
Simple Plug-in installation
We have made it easier to install and use plug-ins. With this release, the most popular plug-in, Adobe Flash Player, installs seamlessly and automatically.
Great new CSS3 Support
This version of the Opera browser now supports CSS3 linear gradients and multiple columns. The Opera browser shows webpages using the latest and greatest standards in their full glory.
For more details, read the Opera changelog.
That is so impossibly bad that I can't believe it happens to everybody. But there are still serious issues here, and I can't see that any of them have been addressed in the new version. That's a pity, really, because it has a lot going for it. I'll continue to play around and use both opera and firefox to get round bugs in each.
|
More FreeBSD build strangenesses
|
Topic: technology | Link here |
Spent some time in the afternoon upgrading my FreeBSD test “boxes” (really VirtualBox VMs). Problems installing world on swamp.lemis.com:
How did that happen? And yes, it's repeatable, and dirname is there. More debugging needed, I suppose. I'd be surprised if it had anything to do with VirtualBox, though.
|
Still more TV reception problems
|
Topic: multimedia, technology | Link here |
I recorded 4 TV programmes yesterday. All failed: my reception problems are still dogging me. Spent some time looking at the cable connections, but didn't come to much of a conclusion. At least one of the daisy chain cables looks a bit worn, so possibly I should look at that first. As it was, removed the USB tuner and the second PCI tuner, so I can only receive one programme at a time. That should be OK until next Thursday; maybe I can fix things better before then, or maybe I should be prepared to rebuild the machine on the few occasions when I need more than one tuner.
| Saturday, 16 April 2011 | Dereel | Images for 16 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Updating web page format
|
Topic: technology | Link here |
Tim Bray is another of the authors on ACM Queue, and we seem to have a few interests in common. Earlier this month he published an article on reformatting his web pages, based on reading yet another blog entry by Blaine Cook. In both cases, they come up with some ideas similar to mine, in particular (from Tim's page):
Now we have wide variety in the pixel density on the screens we use, extra work is required to come up with density-independent designs.
Right-justified text should be used because “Ragged right is an abomination”.
Hyphenation, which has long been used in conjunction with right justification, is now easily achievable with good-quality results.
OK, I've done the first and second a long time ago, though I disagree with the sentiment that ragged right is an abomination. It's just ugly.
And hyphenation? That sounds like a good idea. As Tim said, “Hyphenator.js is trivial to install and seems to Just Work”. Followed the link and installed. Nothing. Further investigation and comparison with the working example showed that the instructions are inaccurate.
They don't mention the text in bold in the installation instructions, though it's there in the example. Without it, I got a completely empty display.
After doing all that and applying it to my diary, I saw—no difference. I suppose it must be conflicting with some other component of my CSS. I'll shelve the idea for the time being.
|
Another X hang
|
Topic: technology | Link here |
I really need more memory in dereel.lemis.com now that I'm running extremely memory intensive programs like Hugin and VirtualBox. Currently it has “only” 3 GB (and thus 12 million times as much as my first computer), and once again, under conditions of heavy paging, ran into problems with X: it hung with the mouse cursor trying to move from one screen to another. I wonder how to address that kind of problem, but I suppose throwing memory at it might make the problem go away.
|
Opera on Apple and Microsoft
|
Topic: technology, opinion | Link here |
I still don't understand where my problems with opera are coming from, so decided to install it on boskoop.lemis.com, my Apple G4. Downloading was straightforward enough, but the name of the download file looked suspicious: it contained the text Intel. Back to look at the web page. No mention of requirements, so decided to try it anyway. Downloaded and installed without any problem. It wasn't until I tried to run it that I got the message:
|
|
||||||||
Now surely they could have thought of a better message and presented it earlier.
Then installed on smart, my Microsoft VM. Worked, and showed many of the problems I have seen under FreeBSD, including incorrect positioning in my diary. I wonder if there's something wrong with my markup.
| Sunday, 17 April 2011 | Dereel | Images for 17 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Trying DxO Optics "Pro"
|
Topic: technology, photography | Link here |
Returned a couple of laptops to Chris Yeardley, and in return got yet another computer that she doesn't seem to use much to try out DxO Optics "Pro", a Dell with the requisite 2 GB of memory and running Microsoft “Windows” XP Professional. OK, that's what pain.lemis.com runs, so it shouldn't be difficult, right? Wrong.
It was easy enough to add a user, and then I had to set up the network for my environment. Maybe I should really run DHCP for this sort of thing; it would solve a lot of problems when guests come. In any case, set it up for one of my other IP addresses reserved for Microsoft, ugliness.lemis.com. But it didn't stick. Tried a couple of reboots, and on one occasion saw a fleeting message about IP address conflicts. Tried another address (braindeath.lemis.com) and it worked. arp told me:
So there was another machine on 192.109.197.172. The MAC address didn't match any other machine, so it wasn't an alias. But where? Somebody abusing my 802.11 connection? Started a ping and wandered around looking at switches, but saw nothing. Finally it dawned on me: smart.lemis.com, my Microsoft VM. I had forgotten to update my DNS, and it was still called ugliness. And since it's a VM, you can't see any traffic in the switches. That's what I get for being lazy.
But my network woes weren't over yet: I still had to set up Samba. And I couldn't connect. Wrong password? Fired up pain and discovered I couldn't connect there either. It seems that funny things must have happened to my password file with the recent update. Ran through the man pages trying to find things, but there was too much to read. Finally found just what I was looking for in “The Complete FreeBSD”, specifically pages 464—470. There's not much there, but it's just what I want, probably because I've been through this pain before.
Then I could look at my main photo directory. Well, not immediately. It took Microsoft 30 minutes to display pretty little pictures of each “folder”, in itself not a bad idea, but that's a ridiculously long time to take. Of course, the Microsoft view makes this approach impractical in the first place. There were 91 screens, all looking like this:
|
||||||||||||||||||||||
When I later started a backup, I discovered that Microsoft had also created 2009 files called Thumbs.db, one per directory, without so much as a by-your-leave—a total of 33 MB of useless files. Andy Farkas recognized them—I had blamed them on DxO—and told me how to stop it doing that: in “Control Panel”, select “Folder Options”, then select “Do not cache thumbnails”. And while you're there, it's a good idea to unselect “Truncate file names”, which they spell “Hide extensions for known file types”.
So finally I was ready to install DxO. I had done this once before, but there's been another update since then, so I had to download 211 MB all over again. Installation went fine, but when I tried to start it I got the message:
|
|
||||||||
So why does DxO want to execute in data? That sounds very fishy to me, but then, it is in the Microsoft space. Added the execption:
|
|
||||||||
Then rebooted and tried again. Same message. Of course, who knows if the name in that list is the name of the executable? I followed the instructions, so you'd think so, but there's only part of a file name there, and potentially it added the directory. Clicked the other radio button (“DEP for essential Windows programs and services only”), rebooted, and I was able to start it. Pointed at yesterday's original files and found:
|
||||||||||||||||||||||
Why do so many of these programs have an anthracite background? In any case, it's a typical Microsoft-space display. It shows the first 72 of yesterday's 678 image files. The instructions tell me to select by clicking and then dragging to the bottom section (I think) or just selecting a group of images. With 678 files? Especially since I have both raw and JPEG images, so I would need to select only every second one:
|
|
||||||||
If there's one thing in the Microsoft space that drives me to distraction, it's its inability to handle files and directories sanely. I've been there before, of course, with hugin and Ashampoo Photo Optimizer, and I've found a workaround: with a script, create a static directory and move only the files you want to it. So far I had ~/Photos/Bloody_stupid_ashampoo/ and ~/Photos/bloody_stupid_hugin/, so the new one is ~/Photos/bloody_stupid_DxO/, though it's becoming clearer that the real stupidity is the interface. Then I was able to move all images for a single photo (here the 72 image verandah photos) and convert them.
It took over an hour! OK, it does a lot more work than, say, UFraw, so I could forgive that; at least there was no more mouse pushing. And the results? It's difficult to say at the moment. Here's the same image as in-camera JPEG, converted by UFraw, and converted by DxO:
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Run the cursor over any image to see a comparison with the one to the right. At least from the point of view of shadow detail, the in-camera JPEG wins, and the DxO image is not obviously better in gradation than the ufraw version. Distortion correction is a different matter, of course; I'll have to play around with it a bit.
| Monday, 18 April 2011 | Dereel | Images for 18 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Yet another X hang
|
Topic: technology, photography | Link here |
While trying to get hugin to resize images correctly, managed to provoke yet another X hang. This time I had no VMs running, though VirtualBox itself was still running. The symptoms are always the same: the mouse pointer oscillates between the adjacent edges of two screens, X uses 100% CPU, and it's completely unresponsive. I have to shoot it down to get out of the problem.
|
Still more TV reception problems
|
Topic: multimedia, technology | Link here |
We've been getting by relatively well with only one tuner in cvr2.lemis.com, but today Yvonne wanted to record another programme, and that caused a conflict. I needed another tuner, so put in the second PCI tuner, checked the cable connections, and tried things out. No reception at all on one, and bad reception on the other.
Lots of experimentation, cursing and reboots later came to the conclusion that the second PCI tuner is part of the problem. Took it out and put in the USB tuner, and things seem to be OK at the moment. I'm keeping my fingers crossed.
| Tuesday, 19 April 2011 | Dereel | Images for 19 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
More playing with DxO Optics "Pro"
|
Topic: photography, technology, opinion | Link here |
Took some forgettable photos today to process with DxO Optics "Pro". Yes, it claims to be able to improve dynamic range, but the main purpose is to convert raw images and apply corrections for the camera and the lens. And I hadn't tried that yet.
Once again, tried with an image of the verandah. The Zuiko Digital ED 9-18mm F4.0-5.6 is quite a good lens, but it does show some chromatic aberration at full aperture, so tried a photo under those conditions. Interestingly, DxO also corrected some distortion, so the images don't look quite the same. Here the image as the in-camera JPEG, processed by UFraw, and processed by DxO. Pass the mouse over the images to show a comparison with the next (with wraparound):
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
And chromatic aberration? Yes, indeed, it's there, and DxO improves the situation. Here two examples from the in-camera JPEG and DxO. UFraw doesn't correct this sort of thing, so it's no different from the in-camera JPEG. I chose following crops with much GIMP pain so that the “big” images (click on the thumbnails) is exactly the size of the original crop (600×450 pixels):
|
|
|||||||||
|
|
|||||||||
Here the fringes on the leaves at top left have been almost completely removed. The image also looks sharper.
|
|
|||||||||
|
|
|||||||||
Here the fringes to the left of the hanging baskets are almost completely gone.
So: this looks like it greatly improves the image quality. Is it worth it? I'll reserve judgement about that one, but it certainly has its irritating sides. In particular, how do I get rid of the photos I did the other day? When I started it up, selected new images and moved to “Process”, only the old ones showed up. To get rid of them, I had to explicitly delete them. Never mind that the underlying images in the directory were gone, and that I couldn't access them:
|
|
||||||||
After that, loaded the new images and proceeded to the “Process” tab. Presto! My new images were gone, and the old ones were back again.
|
|
||||||||
I had to restart the program, after which I was able to process these images. But it didn't keep the EXIF data, as one of my scripts irritatingly complained in red script:
I know my way round that problem; that's why I have my exifcopy script. But why did they leave the data out? Is there some knob set to the wrong default?
Also took some other photos that I haven't had time to compare yet, notably the HDR images that I wanted to make. But once again, it seems that I have to work around “features” that people seem to think that I need, and which they won't let me get rid of. Why can't they have a more modular approach? Particularly a raw image converter isn't an important enough component of the workflow that it should impose its own constraints on how you do your work.
| Wednesday, 20 April 2011 | Dereel | Images for 20 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Tracking the reception problems
|
Topic: multimedia, technology, opinion | Link here |
After rebuilding cvr2.lemis.com's tuner configuration a couple of days ago, it would have been nice to hope that there would be no more problems. Alas, that wasn't the case. I recorded four programmes yesterday. Three of them came out fine, but the fourth was nothing but junk for the first few minutes. Then it came good. Spent some time looking at the log files, and found:
It would be easy to guess that it was the second programme (“The Curious Case of Benjamin Button”), because it was on a different tuner (spelt cardid here). And it was. But things aren't that simple: the difference in signal quality was extreme. Initially the image was unrecognizable, and after a while it improved to a point where on first inspection it seemed to be normal. Possibly what I missed was only the commercials anyway.
But how can such a complete change be due to signal strength issues? During that time there was another recording that had no problems, so it can't be the antenna connection as I had previously suspected. And secondly, it came good after a while, which you wouldn't expect from a poor daisy-chain connection. More inspection of the log file showed:
And that was (almost) all. Just the occasional error until 21:55, and then nothing at all. But the Benjamin Button video went on until 00:30, a good 2½ hours with no error at all. Coincidentally, the other tuner finished recording at 22:10. Is there maybe some issue with both of them running together? Could it be that the other tuner (the PCI one) doesn't transmit a good signal when it's recording? Time to get out a splitter and see if that helps.
|
JavaScript and other opinions about DxO
|
Topic: photography, technology | Link here |
I really need to learn a way to do comparisons of photos by moving the mouse cursor over the image. That's trivial with JavaScript (I contend), but I don't really do JavaScript. Off on the web looking for examples, and found a nice one on the RawTherapee site. I still need to digest it, but it looks clean, and the results are effective.
Not completely by coincidence, this page is related to the kinds of comparisons I'm doing now: which raw converter to use? And they compare their own converter with most of the others I've heard of, including DxO Optics "Pro". Clearly their demosaicer does best on the sample image (which they chose, of course), but DxO doesn't do badly either with demosaicing. But, as I've noticed, the default results are much darker than the competition. Is this a general problem, or a choice of bad defaults? In any case, it's worth investigating RawTherapee as well, especially since it doesn't need Microsoft to run.
| Thursday, 21 April 2011 | Dereel | Images for 21 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
DxO and RawTherapee
|
Topic: photography, technology | Link here |
Took a couple of photos to investigate the “HDR” capabilities of DxO Optics "Pro", but they proved to be less useful subjects than I had hoped. I'll have to wait for some really extreme contrasts. In the meantime, read the RawTherapee documentation. I looked at it very briefly two years ago, but didn't get round to trying it, probably because I had decided to try to port it to FreeBSD first. Now I may have time for that. Did some investigation and discovered that the latest stable version was released in September 2009, and since then they've been building a new version. So that means checking it out of a Mercurial repository.
Did that, read some rather confusing mutually referential documentation about how to build the package. It uses cmake, unfortunately, and just the “standard” invocation suggests that something hasn't been completed yet:
Of course, in the Linux world build dependencies are a bit of an afterthought, and the second document (really a mail archive) contains multiple mail messages with different lists of what's needed. Started adding the dependencies until I found:
That's cmake's inimitable way of saying “missing dependency”. But I can't find anything similar in the Ports Collection. So another thing to put on hold until I have more energy. I really should be looking at DxO anyway, since the trial license only lasts a month.
| Monday, 25 April 2011 | Dereel | Images for 25 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Google [Cc]hrom* revisited
|
Topic: technology | Link here |
Nearly a year ago I tried to get Google Chrome (or is that Chromium? Or chrome?) running on FreeBSD, and in the end gave up. Today I heard that it was now in the Ports Collection, so had another go.
The good news: it works. But that's no better than firefox or opera. And the package is enormous!. Here the sizes of the tarballs for the latest opera, firefox and edited zucchini:
Comparing the size of opera is not really fair, since it's a binary distribution. But I've complained in the past about the size of firefox, and the tarball for chrome (that's the name of the executable, anyway) is nearly double the size.
Starting the browser for the first time had a surprising result:
|
|
||||||||
Why did it create a profile there? This was from my last attempt, when I was working on lagoon.lemis.com. And now it thinks it's called Chromium and not chrome. Got rid of the lock file and it started, along with myriads of error messages:
Is that [Cc]hrom* or the port? There's much to suggest the latter, but it's irritating. Also, on every roll of the mouse wheel I got:
That's clearly from the nspluginwrapper port, but it's still irritating, and it's the same package that firefox uses without whingeing so much.
Anyway, went looking for documentation (what a 20th century idea!) and first found help for firefox: it seems that [Cc]hrom* was a bit generous in importing stuff. Finally started without import and found a link to the “Welcome” page, the most important part of which seems to be the 20 Things I Learned about Browsers and the Web, which told me nothing about [Cc]hrom*, instead offering badly rendered advice for such topics as “What happens if a truck runs over my laptop?”. Almost as an afterthought, down the bottom of the pages, was the text:
For more on Google Chrome's features, check out the Google Chrome Help Center.
I'm reminded of Alice in Wonderland:
`Take some more tea,' the March Hare said to Alice, very earnestly.
`I've had nothing yet,' Alice replied in an offended tone, `so I can't take more.'
`You mean you can't take less,' said the Hatter: `it's very easy to take more than nothing.'
Finally got some information and was able to set a very limited set of options, not including disabling tabs—indeed, just about everything uses tabs, and I quickly ended up with a tab bar like this (blue sawteeth at the top):
|
|
||||||||
What use is that? And why do browsers want to be window managers?
A bit more investigation showed nothing that I don't already have with firefox or opera. It handled Emacs key bindings out of the box, probably because of my gtk settings. It renders images faster than firefox, but so does opera. And like opera, [Cc]hrom* has problems with fonts. And it still doesn't handle proxies. So I think I'll leave it to mature a little before I try it again.
| Tuesday, 26 April 2011 | Dereel | Images for 26 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Photo comparisons in web browsers
|
Topic: technology, photography | Link here |
For some time I've been looking for a way to display comparisons of two photos in web browsers. Sure, you can do it by putting them next to each other, but it's much nicer to be able to pass the cursor over an image and have it change from one to the other. I know it's possible with JavaScript, but I don't do JavaScript—yet. Last week I loaded an example from RawTherapee, including a 107 line script that did the switching. Today I finally got round to trying to understand it and bend it to my purposes.
I once had a link to this script at http://www.rawtherapee.com/RAW_Compare/compare.js, but that seems to have disappeared.
In such cases, I normally retain a reference to the source of the script, but in this case all I did was excise, and in the end I was left with two lines of code:
Even that looks like it should be collapsible to a single line, and indeed Google Chrome and opera have no problem with that. But firefox can't handle it. Similar things occur with the names of IDs in the document. chrome and opera can address them directly:
This doesn't work for firefox. The whole thing leaves me slightly confused: clearly what I want to do here is to pass the parameter image by reference, but that sort of concept doesn't seem to exist in JavaScript. And clearly there's some kind of implicit typing go on. The online documents don't explain that, of course, because they don't look at languages from that way, but it leaves me feeling confused. I'm getting some books out of the library on Friday; possibly they will help, though books with titles like “The complete idiot's guide to JavaScript” don't suggest that they'll go too deeply into the implementation.
All that took about an hour. The rest of the day I spent working through my horribly baroque PHP function showphoto(), now 730 lines long (with comments). Now I can do the kind of comparisons I wanted to do earlier in the month, such as these two (mouse over to show the other image). The first one shows how much darker shadow detail is in images converted by DxO Optics "Pro" (normal display) than in the out-of-camera JPEG (mouse over):
|
|||||||||||||||||||||||
This one is more interesting. It shows two different renditions of the same panorama. It's as good as impossible to line them up (until I work out what nona is doing wrong), and the images are of different size. I've modified the size of the second image to match the first, partially for convenience and partially because I'm not sure that it's not the correct thing to do:
|
|||||||||||||||||||||||
And how well do the browsers handle it? It varies. I found opera to be the fastest, and in some cases found chrome to be excruciatingly slow, almost as slow as firefox—but I wasn't able to repeat the problems. Maybe it has something to do with the browsers' internal memory management. And then there's the issue of seamless redisplay. chrome and firefox do well enough, but opera can occasionally flash when changing larger images. Maybe I can do some JavaScript magic there, but I'm quite happy with what I've achieved so far.
| Thursday, 28 April 2011 | Dereel | Images for 28 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Photo processing software: Not the UNIX way
|
Topic: photography, technology, opinion | Link here |
I haven't had time to look at DxO Optics "Pro" in more detail, but it's about time I did before the free trial runs out. Spent some time reading the manual, which is more a walk-through than a description, but it gave some ideas, including forward references to terms used in a specific manner (what's a “Preset”? It seems to have some specific meaning in photo processing).
Didn't get as far as actually processing photos, but by coincidence found an article in c't about raw image processing software. Or that's the idea. Somehow I just don't understand where current software is going.
To get an idea, let's think about how people used to process their photos, assuming they did it themselves. 45 years ago I did something like:
In the darkroom, remove the film from the cassette and load into the spiral of a developing tank. Turn the lights on.
Develop the film.
For reversal films, stop bath, reexposure and second developer.
Stop bath, fixer. In the case of colour films, also clear.
Dry film.
In the case of negatives, print film.
Parallel to this, keep records of what has been done:
|
||||||||||||||||||||||
That's in addition to the exposure records, of course.
At some later date, maybe do something with the photos: slide show, exhibition, publishing. Not really related to the processing.
It's worth noting that, without exception, each of these steps has a single input and a single output. I can split the operations into at least three groups requiring different materials:
The tank. Interchangeable.
The developer. Within limits, interchangeable. On the example above, I developed numbers 78/66 and 79/66 (Kodacolor) in a substitute C-22 developer which I had made up myself. For black and white films (all the others), I had a wide range and used three different developers for the films on that page.
Postprocessing, which I'm not looking at here.
Record-keeping, manual of course.
In each of these cases, I had a choice of what tools to use. And where are we now? The principles haven't changed that much, just people's attitudes to them. From what I read in c't, though, it would seem that There Can Only Be One. They praise the fact that the output is distinct from the input (“non-destructive processing”). And the packages all keep their own records, often in a format that you can't influence in any degree. Why?
How does digital processing relate to the analogue processing steps above? It's clear to see a parallel with the first step, loading the images for processing. In a digital context, this is a copy (and not a move!). Images are invariably stored in individual files, and all operating systems have a primitive file copy command, though some cameras present the data in such an unfortunate manner that you can't use it. Even there, though, you can remove the storage card and access it with a card reader, something that I have to do with Yvonne's Kodak M1093 IS.
That's straightforward, but for some reason all the reviewed packages offer ways to copy the files, usually imposing restrictions on the location and name. Why? It just makes things more complicated.
The processing has two individual components: format conversion and image enhancement. The first generally only means conversion from raw format to JPEG, which some people misguidedly call “development”, as if the JPEG were more “developed” than the raw image.
There are two potential kinds of image enhancement: correction for image problems such as chromatic aberration, distortion and exposure, and cosmetic correction (“retouching”). And, amazingly, many packages still write the results back to the original file (“destructive processing”). Who would ever have thought of doing that in the analogue days, even if it had been possible? Whoever thought of doing it now?
So somehow the concepts have got confused. The c't article compares features such as backup, intelligent albums, web publishing, printing and slide shows. That's not c't's fault: each is supported by at least one of the tested converters. But why? That's a different function. And in the process, it draws attention away from the real purpose of the tool.
Somehow this isn't just the UNIX Way (OK, none of these programs even run on UNIX, unless you count Mac OS X, in which case you can say they swim on a layer above UNIX), but it seems that a bit more attention to the UNIX philosophy would help. As Doug MacIlroy said:
This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.
Wouldn't that make things simpler?
This isn't just about convenience of use. I don't know of any off-the-shelf solution that would have enabled me to do the image comparison tricks I did earlier this week. And it wasn't even difficult, but only because I didn't use tools that wanted me to work the way the project managers want me to work.
| Friday, 29 April 2011 | Dereel | Images for 29 April 2011 |
| Top of page | ||
| previous day | ||
| next day | ||
| last day |
|
Photo processing: correction
|
Topic: photography, technology | Link here |
Yesterday I ranted about the concept of “destructive” digital image processing, and said that that never used to happen in the analogue days. That's nonsense, of course: when you develop a film, the result replaces the original undeveloped film. You can't develop it again, though there were many times when I wished I could. One of the advantages of digital processing is that yes, indeed, you can reprocess a file, assuming you haven't been using some inferior product designed by people still trying to emulate the analogue processes, warts and all.
|
New word to describe GUI software
|
Topic: technology, opinion | Link here |
I've come up with a new word to describe the way I feel about so much GUI software: paneful. I've been using X on the desktop for 21 years now, and right at the beginning I arranged for my entire department to do a course on X. I had expected it to be a course on how to use X, but in fact it turned out to be a programming course. It was quite interesting, and a number of precepts seem to make as much sense today as they did then. Two stand out:
Windows are cheap.
Window managers are there to manage them.
But it seems that that's no longer modern. Want to look at the history in a web browser? Press c-h and get—a long thin pane in the same window, cutting into the display, and thin enough to truncate the text. Why? Run photo processing software like DxO Optics "Pro", and all the information is in the same window. The “select” window is typical: a pane on the left showing a representation of a directory tree, and one on the right showing part of the contents. Underneath is another pane, the width of the window, showing the selected images.
Apart from the fact that this is a horribly clumsy way of doing things, and that it doesn't scale—how do you show the contents of 360 files?—there's an issue of scale here. The images in the user guide show only a couple of directories with 11 in the current directory, of which only two are selected. That fits: the top-right pane in the example is big enough to display about 20 photos, and the project pane is big enough to display about 10. But what happens if you want to process 700 files, like I do every Saturday? DxO specifically state that they can do that sort of thing.
In the case of the web browser, it makes so much more sense to have a separate window. In the case of DxO, it would improve things, but it wouldn't solve the problem. A full-screen window for each of those panes would handle about 100 images, still far from my 360 image example. That's more easily done by more conventional means:
That would completely remove the necessity for the entire paneful window. But you've got to understand that this isn't user-friendly. It's just for geeks.
| Saturday, 30 April 2011 | Dereel | Images for 30 April 2011 |
| Top of page | ||
| previous day |
|
More panorama refinement with hugin
|
Topic: photography, technology | Link here |
Photo day today, and once again a bright, sunny day with the sun shining directly into my lens:
|
|||||||||||||||||||||||
That was part of a panorama, so I couldn't just leave it out, and the results were as could be expected. In the end went out again later and made another series of photos (a total of 70!) with extra shots with the sun cut out:
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Unfortunately, it was windy, as the second merged image clearly shows on the leaves of the Salvia microphylla at bottom, but it had the desired effect:
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Selecting the masks for the images is still an issue. I think I'll have to accept that the mask processing is very buggy, and that include masks don't work at all. And the only way to set them effectively is to have the fast preview window visible at the same time: it gets updated as soon as the mask is selected. The following image shows the mask window on the left and the fast preview window on the right and underneath. In this example, which needs to be enlarged to full size, frames 9 and 11 are highlighted in the fast preview window, and frame 9 is shown in the mask window. I've set the mask a little too low, so there's a gap between it and frame 10 (the other image above, also masked), which shows up as a black area:
|
||||||||||||||||||||||
It's a pity that the windows all have to be on the same screen. Maybe it's time to investigate xrandr.
|
Learning JavaScript
|
Topic: technology, opinion | Link here |
I now have two of the four books on JavaScript that I had ordered from the library. The other two are available, but apparently they couldn't find them, so I'll have to wait 2 weeks. The two are “Creating Web Pages All-in-One For Dummies , 4th Edition” (the space before the comma is from the official web site, so maybe it's modern) by Richard Wagner, not a name I would associate with web design, and JavaScript: The Missing Manual by David Sawyer McFarland. Given that choice, I would expect the second book to be much better, but it's not so clear-cut.
Part of the problem is that both books are designed for beginners, the Missing Manual particularly so. I don't need to be told what kind of editor to use (he doesn't even mention Emacs), and it's not clear after 50 pages if the approach is right. In particular, he introduces jQuery very early on. While using libraries is a good idea, why particularly jQuery? And I want to learn the language, not a library interface.
The Dummies book is what they call a “minibook”, one of nine in the overall book, and it's only 88 pages long. As a result, it's a lot more compressed, and I stand a chance to finish reading it. Since it is minibook 5 of the 9, it also makes assumptions that you have either read the previous books or at least understand the concepts.
Both, however, aren't my kind of book. They seem to have the phrasebook approach to language learning: get up and running first and discover later what you've been saying. I'm reminded of six years ago when I wanted to learn Swedish, and I found only rough explanations of the words I had been using. It took me a long time, for example, to discover that the Swedish word “varsågod”, variously translated as “please” or “here you are”, really translates as “be so good”, and the “here you are” is a very context-dependent translation. It's much closer to German “bitte”, which is used in the same manner. Yes, you can learn languages without knowing that, but for a language so close to English, it helps a lot to know it.
| Top of page | Previous month | Greg's home page | Today's diary entry | Next month | Greg's photos | Copyright information |