Looking for a Photo Organizer/Editor

February 6th, 2009

I’m looking for a program to organize and edit my photos on the Mac. The editing duties are light. Photoshop Elements fully meets my needs there, and I really don’t want something more complex. In particular I live by Auto Smart Fix and Auto Sharpen. However I’d like to not come out of one program just to edit a photo.

I like iPhoto’s organization, but it’s too buggy and has atrocious editing and previewing tools. Lightroom 1.4 doesn’t organize quite as nicely as iPhoto, but is a little more stable. Maybe 2.0 is better? What’s my best choice? Here are my desiderata:
Read the rest of this entry »

Vista Slow to recognize the Belkin Flip

February 6th, 2009

I have a couple of Belkin Flip KVM switches, one I use to switch between a MacBook Pro and a Linux desktop (Ubuntu Dapper) and another I use to switch between a MacBook and a Vista Dell. Switching to the Macs or to Linux is almost instantaneous. However, the PC takes maybe 30 seconds before it will recognize the keyboard and mouse. (The monitor is usually asleep until it the keyboard or mouse wakes it up.) Any ideas?

%lxNSMOCqVM%

February 5th, 2009

%%6LCXPOnb%%

Data Constructors and Readability

February 5th, 2009

I think I’ve put my finger on one reason I’m finding Haskell hard to read. Consider this algebraic data type definition from Real World Haskell:

data Doc = Empty
         | Char Char
         | Text String
         | Line
         | Concat Doc Doc
         | Union Doc Doc
         deriving (Show, Eq)

There’s no distinction between the value constructor and the components of the type. This is especially critical when the constructor and the components have the same name as in the Char constructor above. It also doesn’t help that they have the same naming convention (mixed camel case, initial uppercase letter).

A Java class with multiple factory methods or multiple constructors would be much more verbose, but much more readable. Humans need redundancy, even if it’s logically superfluous.

I suspect a language that retained Haskell’s semantics, but completely replaced the syntax with something more usable, legible, and familiar would have a much greater chance of success.

Not a Yellow Wagtail

January 29th, 2009

side view of bird with streaked breast
American Pipit, San Joaquin Wildlife Sanctuary, 2009-01-29
Read the rest of this entry »

unlines with fold

January 27th, 2009

Real World Haskell, Exercise 10, p. 99: This was an easy one:

myUnlines :: [String] -> String
myUnlines xs = foldr (addLine) "" xs 
    where addLine c acc = acc ++ c ++ "\n"

It’s pretty much straight down the path of exactly what folds are meant for, though the inferred types still managed to surprise me, and my initial implementation was about twice this size.

Currently Reading