Languages

Links

The Building Windows 8 blog has plenty of interesting posts on how Windows 8 will look and behave. Many of them also detail why particular design choices were made.

I have noticed an interesting trend in those explanations. They usually explain how user behaviour changed from the beginnings of Windows until Windows 7 and use that as the basis for upcoming changes in Windows 8. E.g. it has been noted that the taskbar has become the primary program launcher in Windows 7 as opposed to the Start Menu in earlier times – the Start Menu instead was only used for rarely-used programs.

The problem I see there is that (depending on who you ask) between 25 and 45 % of Windows users are still on Windows XP. If many major design changes in Windows 8 are done in response to how user behaviour has changed with Windows 7 they probably provide upgrading Windows 7 users with a natural progression. But many people skip one or two Windows versions (Windows XP usage dropped only slightly with Vista but dramatically with Windows 7) and Windows XP is close to its end of life. So it is natural to assume that many XP users will switch to Windows 8 once it hits the market. But while some changes may be gradual when going from XP to 7 to 8 they might be much more abrupt when going directly from XP to 8, skipping Windows 7 which introduced users to some concepts that are expanded and built upon in Windows 8.

I wonder whether they take that into account when designing the new OS.

On some occasions I tend to make way too many photos of the same subject.
Sorting through dozens of nearly identical photos is often hard and seeing that
wall of images in Lightroom usually doesn't help in determining which is the
best one. Some people have similar problems, as the following question from the
Photo Stack Exchange: How do you select the 10 best
images from a set of 300?

Written in C# for .NET 2. Works on Mono (tested on Linux so far), too.
Requires dcraw on the PATH
(compiled executable for Windows or OS X can be downloaded here).

Currently the user interaction is very rudimentary. This is probably subject
to change. Also the code is an evil mess as usual with such a hack-job.

The application has to be started in a directory that contains the images to
sort. It then proceeds to load all images it can find and handle (JPEG, GIF,
PNG, BMP are supported natively, all other formats are either supported by dcraw
or skipped if not). Keep the number of images reasonable, as every image is
preloaded in memory to speed up display – I tried starting it on a folder
with around 600 images and terminated it at around 2 GiB memory usage.

After that you get a two-pane view with an image on the left and on the
right. Click on the one that you consider the best of the two. You will then get
two new images. Continue until done. You can close the program if you want, it
will resume where you left off.

After all necessary comparisons have been done2 the result can
be seen:

It has the sorted list of images on the left with the highest-ranked at the
top and the lowest-ranked at the bottom.

Todo list:

Allow selecting the images to sort.

Solve the issue that portrait pictures are always displayed in landscape
orientation (at least for raw images. dcraw allows rotation but cannot do so
automatically and I don't see an easy way of finding that out externally).

Reduce memory usage for large numbers of images.

Shuffle the images beforehand so bursts of nearly identical images are less
likely to be compared directly against each other.

Change synchronization between the sorting thread and the UI to no longer
rely on Thread.Sleep and polling but to use proper synchronization
methods.

Add a 1:1 preview (or at least a larger one). Currently this cannot be used
to judge things on the pixel level.

Source code can be found in my SVN repository
and is released under the MIT license. I welcome patches ;-)

Images in above screenshots are my own.

1 Of course it wasn't as trivial as others would want to make me
believe. After a long struggle with Libraw, I simply went the dcraw route. Not
pretty, but works with minimal amount of code.

2 This is in the order of n log2n
where n is the number of pictures compared – so, for 20 pictures
you can expect something around 20 × 4.3 ≈ 85 comparisons – I know,
it's not a small number. For the 300 images you mentioned you'd get around
2400. The actual number that has to be performed manually is (a) different
(since complexities omit the linear factor) and (b) as far as I observed so
far, smaller. To avoid inconsistencies the user will never be prompted twice on
the same two images (either order) and never prompted with the same image on
both sides.

I stumbled over a (for me) quite serious bug in an application I use.
Nothing security-related (I have no clue of that), but it impacts the
usefulness of the program for certain cases. After looking around how to report
bugs I find that there is no bug tracker; they use a forum to track that. Ok,
their choice, I don't have to manage that. But registering does not
automatically enable me to post anything and I am still waiting for approval
(since 2010–11–10 12:10).

I think for developers of products it should be in their best interest to
make bug reporting easy. After all, if a user is nice enough to report
something that does not work they should be thankful and not put them on a
waiting line that might take days to clear. At least for me my incentive of
investing time into writing a good bug report goes down if I have to wait
longer than necessary before actually being able to report anything.

Yay. Now that Stack Overflow has bronze badges for tags I got a whole bunch
of them (they are awarded for 100 upvotes in a specific tag). But by that
I rose into a quite exclusive circle: The only person with a
batch-file badge:

Specializing in obscure languages pays off after all. Then I'm one of only
two persons with a batch badge:

It's been a few years by now I am writing batch files every now and then,
some for trivial tasks, some for things other people would just declare me
insane for doing it with batch files. Anyway, cmd has become boring by now. I now
want to concentrate on another target for writing batch files, one that's still
very much alive, at least on 32-bit systems: command.com.

In a way, cmd was too powerful. It's more fun
the more limited you are so I'll gradually rewrite all batch files on this site
to run in command.com instead. That also
allows them to run on all non-NT versions of Windows as well as DOS. I consider
that to be quite an improvement over the limited platform availability of cmd.

The problem is that Stack Overflow is largely content-based. Whatever there
may be in community is mostly driven by content and not by the users. Which
means that I could judge the candidates by the content they contribute which is
easy enough but doesn't tell me anything about their qualifications as
a moderator. Equally unsuitable are the moderator nominations, mostly done by
the candidates themselves and their user profiles; they simply aren't an
accurate picture of how well they would do their job.

Stack Overflow goes great lengths in pushing the actual users into the
background, emphasizing the questions and answers. There is a little incentive
to continue contributing, namely reputation and badges; I'm playing that game
too. But overall it doesn't really matter for Stack Overflow to keep
specific persons there—as long as the contributions are still there
and of high quality, no one can complain. But ultimately you don't really know
about those people. You know about their technical knowledge and how they write
or how willing they are to provide outstanding answers. But about how well they
would perform as moderators? Nothing. While sometimes discussions arise in the
comments on a question or answer they are mostly very short-lived, just as the
questions/answers themselves (most questions, even those with stellar answers
vanish after at most a few hours and no-one reads them anymore). What's more:
comments are de-emphasized on purpose: smaller font size, gray text, hidden by
default (except for the top-rated comments). As a discussion medium, where
I could actually see how people approach problems, how they deal with it and
ultimately solve it, this is a complete fail; again, on purpose.

Stack Overflow isn't alone in this regard; I just picked it out since
it's the one example I'm most familiar with at the moment. The problem is
similar for me at Wikipedia where the means of communication are comparably
arcane and inefficient. Mostly you're communicating with a large blob of vaguely
human form which could be anyone. And most of the time you don't talk to the
same persons regularly. To me it is surprising that (at least for the German
Wikipedia) many people participating in discussions, polls, &c. seem to know
each other and are actually talking there. Maybe I'm the ugly kid who stands
besides all this or maybe I just didn't see a suitable way of getting to know
the people behind the content.

Ultimately, there are probably persons who could judge how well
someone is suited as a moderator: Those that have access to logs that detail
what moderator-like activities a person has done. For Stack Overflow this would
include things like close-votes on questions, flagging questions and answers for
moderator attention—that's the technical side. Then there's the human side
which necessarily includes discussions (such as what makes a question
programming-related). But discussions are, as noted, very much de-emphasized in
contrast to questions and answers (which tell me only about technical problems
someone faced and was able to solve).

For the normal user there is simply no easy way of looking at the things that
would matter in this regard and help in a decision. As for the candidates: I've
never had anything to do with the vast majority of them, except for two.

Well, back to my original point, I find it a little weird that such sites
ask their members about positions that need certain qualifications, who—by
definition and purpose of the site—don't know each other well enough to make
an informed decision on that. I see it as a kind of pseudo-democracy where the
site owners/adminis­trators give the „community“ something to decide. But
in the end I doubt the final decision will be made with regard to the actual
qualifications of the elected person. The votes itself are probably rather
random for most people participating in the election or maybe guided by prior
advertising on behalf of the candidates. I don't remember the original
nominations of the candidates anymore but what I read of them didn't strike me
as convincing. Heck, not knowing those people I couldn't even decide whether
their application/no­mination was meant seriously or is just full of
senseless talk.

I think such sites should either make actual communication (read: social
behavior of people) part of their purpose (not that I see this necessarily as a
good thing—I'm part of no social network for a reason) or stop trying to
pretend they have a community. In fact, they haven't, in my opinion; they have
content, they have people that contribute it; but they have no community.

I needed the format painter pretty often in the last few days. It's quite a
handy tool sometimes, though with one caveat: The mode created by selecting the
format painter ends after one use. So usually you can only paint the formatting
onto a single destination before having to re-enable the tool. That's not very
nice when having multiple places to apply the formatting.

However, you can simply double-click the button in the Ribbon which leaves
the mode activated until Esc is pressed. Found this by accident but it
is handy.

And, noticing now, it's even mentioned in the documentation. But who reads
that? :-)

Currently at the 26C3 and the network is pretty flaky here. At least
on the first day. Out of necessity a friend implemented a simple network
connectivity checker as a Windows Sidebar gadget. I started playing around a
bit with WPK and decided to do the same in PowerShell with a nice WPK
interface.

After a long learning process and much trial and error the following
came out:

To use it you have to install the PowerShellPack which
includes WPK, the WPF PowerShell Toolkit.

The window looks as follows:

The two halves „4“ and „6“ correspond to IPv4 and IPv6 connectivity,
respectively. The program tries pinging google.com and ipv6.google.com. If a
half turns red this means that the ping failed. Below the IP version number is
the last response time.

And I thought it greatly sums up the usual problem. Both users and
developers think at vastly different levels of abstraction. To the developer the
UI is „just another shell“ around the core and most erratic behavior of the
UI can easily be explained by the inner workings of another component in the
program. To the user, however, the UI is the program. And she just
doesn't bother with understanding anything else. For all intents and purposes
it's really magic.

Now, above image is a bit small, unfortunately and I didn't find an original
creator or a higher-resolution version, so I created a vector version of the
image which is attached to this post. Actually, I made two vector versions, one
white on black and one black on white, the latter of which should use up
substantially less toner when printed:

The font used on the high-res PDFs versions is the free (and pretty) Fontin font.

I attached the Expression Design files as well, if someone wants the
„source“ files. The Design and PDF files are released into the public domain
by me.