Latest Entries »

Mac OS X Range Selection Behavior

Sorry for the long silence, I’m really busy with work!

This is only a quick note about the list view range selection behavior (shift-click) I’m observing in Mac OS X Lion’s Finder. There’s quite more to it than you might think!

  • First off, when there’s nothing selected and you shift-click on an item, all items from the top up to the clicked one (including itself) are selected.
  • When there is an existing selection, the result depends on the previous non-range selection action:
    • Regular selection: The range between that item and the clicked one is selected (including both items).
    • Deselection (cmd-click on a previously selected item): The range between the clicked item and the next selected one below it is selected. If there is none, the range between the previous selected item and the clicked one is selected.
  • In the previous step, if the previously selected item is part of a contiguous range, all other items of that range are deselected.

Did I miss anything? Please tell me via Twitter (@anlumo) or comment below!

UPDATE: @5minpause pointed me to an article, describing the same behavior in a much more elaborate way: Legendary Selections, Dude

UPDATE 2: Alright, discovered another peculiarity in the Finder selection behavior: When clicking onto the file name or file icon without any modifiers, the selection is changed on mouseUp: (the previous selection is also not changed in mouseDown: yet). When either any modifier is held down or the row is clicked somewhere else, the selection is changed in mouseDown:. I guess this is implemented so that you can drag a file without changing the selection.

Cocoa Blocks Pitfall

Just because it bit me again for a millionth time:

int a = 0;
void(^block)(void) = ^{ printf("%d", a); };
a = 1;
block();

outputs 0, because the value of a is copied to the block when it is declared.

View full article »

About Apple’s Bug Reporter

I posted a comment on Apple’s private developer forums about an issue that might be interesting for others to read, even the ones who don’t have read access there. Thus, read on for the (slightly rephrased for context) comment.

View full article »

Book Review: The Art of Community

So, after a brief work-related hiatus, I’d like to get started with a book review.

Generally, I like to read fiction, but every now and then I have to work through some nonfiction book to gain some knowledge. I’ve tried to read technical books about programming APIs etc, but in recent years I’ve found these to be quite boring, since they’re a bit too far on the basics side of things. Why should I buy and read a whole book about something I can learn with a few free online beginner’s tutorials just as well?

So, I’ve moved more into the “general concepts”-genre of nonfiction books. One big example of that is “The Art of Community” by Jono Bacon. The author is the manager of the Ubuntu community, and he shares some of his experience with the reader.

View full article »

AquaticPrime and python/PyCrypto

Alright, another post for the same topic: How to generate AquaticPrime licenses in python with PyCrypto (also for the Google App Engine in my case). This took me quite a long time (8h), because debugging crypto is very complicated (the wrong result is returned, so what now?). I actually had to learn how to encrypt using RSA (quite simple actually).
View full article »

AquaticPrime and Java Servlets

Hi,

Maybe somebody is interested in this code. It’s relatively easy to create AquaticPrime license keys in Java once you know how. I used it last year on Google App Engine to generate my licenses for a promotion.

View full article »

This time I’d like to talk about a phenomenon we don’t learn about at school and never hear from happening in the US, but apparently being pretty common in our area: Legally Distributed Software Development. The reason is that I consider it very nice, and it deserves a highlight.

View full article »

The Software Pattern Fetishism

I’m sure this article is going to be a bit offending for some software developers, but there’s something with software design patterns that has been irking me for years, and recently I discovered the reason for that. In the hopes that there are others that think alike, I’m going to explain the reasons here. Maybe it does something good.
View full article »

Sproutcore

Right up to my first topic: Sproutcore.

I’ve held a workshop about it in the last two weekends, where I demonstrated how to build a basic groupchat application. Unfortunately, the 8h I allocated for it weren’t enough (but it was close) due to some typical JavaScript issues, namely that it doesn’t do any name verification at all.

You can get my demo application from github.

View full article »

Hello World!

Welcome to my brand-new blog!

This site used to be a static page which I updated about every 5 years. However, the times are changing, and I’ve never been one to be left behind. Since I signed up on Twitter, there have been some situations where I said to myself “Damn, I’d like to publish that thought, but I’d probably need 1400 characters rather than 140″. Not having a platform for them at the time, they’re now gone forever.

So, but being a tech-person, of course there’s a solution for that: Install WordPress on the server and go writing some stuff! That’s what I’ll do now. I can’t guarantee any frequency, but I’ll try to write up some stuff whenever I have something to say.

I’m holding some talks every now and then, and one thing I’d like to do is to write it up as a blog post, so people can read what I wanted to convey without having to be present.

Being a personal blog, this page will not have a single focus, but everything I’m interested in (check out the About Me page). However, I’ll tag the entries properly, so use those to filter for stuff you want to read!