Friday, May 31, 2013

Bugs to fix in OS X 10.9

Mail  & Spotlight:

Allow separate Control Panel > Spotlight entries for:

"Mail messages"
"Mail attachments" (not currently there)
"Chats"

Currently, one can either index bodies and attachments (and chats), or neither. I'm not the only one who would like to have Spotlight for the messages but not the attachments. Does it harm? Yep. Mail takes CPU time doing the indexing (open 'Actions' window to see).

Elsewhere on the net:

https://discussions.apple.com/thread/4198130?start=0&tstart=0
http://www.askdavetaylor.com/how_can_i_stop_spotlight_searching_my_email.html


Currently (OS X 10.8.3) one has only a single Spotlight entry for both Mail (bodies & attachments) as well as Chats (probably iChat?).



Calendar bug when traveling:

Caught on OS X 10.8.4.

I noticed this on a trip from Finland to India, having a repeating calendar entry using U.S. Pacific time zone.

What happened is that after changing the computer's time zone (manually, it didn't detect it automatically for some reason) the U.S. event was still shown in Finnish time. I could have been fooled, but India is a funny 30 minutes apart from the rest of the world, so it caught my eye.

I also found a workaround for this, to get the dates properly updated.

Here's the calendar entry. Repeats weekly, on Tuesdays, 11am U.S. Pacific time.


Now, how to get that to be 23:30 as it should? 

I ticked the below checkbox off and back on. That did it! (Calendar > Preferences > Advanced):



Now, the item is shown properly:


I haven't tried reproducing this bug. Maybe it has something to do with the specifics on how I got here (i.e. could be India specific, could be manually changing the time zone, could be anything). If it is a common bug, covering everyone using Macs and traveling, I cannot believe it's there.

Maybe, if Apple was more open about collecting bugs, these would get better ironed out (this is somewhat controversial though - I use OS X over Linux because things usually Just Work on the Mac). So Apple - if you're reading this - you can do better. You can be more open. You can actually discuss bugs with users instead of this one-way OS X feedback form.

Numbers - two small features

Since Numbers is so great, I'm using it a bit on "uncharted" territory as well, namely doing a language dictionary of Kannada words.

Two small features would make it ideal:

1. Ability to mark certain cells (a row) to take text in a certain language (with a certain keyboard layout)

Now, I must manually change between Kannada (Indian) and Qwerty keyboard. If I could make the Kannada cells know that their type is "text with selected keyboard layout" this would happen automatically. This means integration with the Keyboard selector on the top bar, so that the current input type would be shown there, of course. You are Apple - you know how to make this Right.

2. Embedding audio recordings

I didn't find an easy way to make a cell carry audio. I'd like to embed the sound of each Kannada word, spoken out by someone. Ideally, also this could be a cell type so that external tools are not needed to be used (and no files need to be saved). The feature could be useful for many other cases as well.

I filed these requests on Aug 14th 2013 on the Numbers feedback form.



TimeMachine not shutting up

Caught on OS X 10.8.4.

As many of us, I increasingly use Dropbox for file storage and syncing between my Macs. It simply is more manageable than iWork.

Since those files are anyways backed up, I have excluded ~/Dropbox at the Time Machine preferences.


I would expect this to completely ban TimeMachine from scanning and storing stuff within the ~/Dropbox folder, right?

Nope.

Recently, I noticed a Numbers file I store there had the File > Restore > All versions ... menu item enabled, and I had a look. Yep. All the earlier versions are there, nicely stacked.


What should I make of this? 

There are 28 versions stored of this document. Did I ask for them? Nope. Did I ask to exclude versioning / backups? Yes. Why are they there?

I presume "exclude" for Time Machine just means exclude from backing up. It should also mean exclude from even creating local duplicates / versions. What if this was a really, really big file (which it is not). Say a video. 

I'm seeing this as a bug that Apple should fix.

At the same time, I have a nice list of 123 versions (the full history) available on Dropbox. 100kB each. Isn't Dropbox marvellous? :)

Lighter gesture for Touchpad one-finger-stationary, another moves

The above may not ring any bells, but if you've used the Touchpad (= any recent Macbook), you have used it.

Press the pad by one finger (so that it clicks). Now move another, while keeping the finger down. Text, or icons get selected.

It's neat, but rather heavy duty compared to most (all?) other usual gestures, where the pad "click" is not needed. It's also straining on one's thumb.

I wonder if Apple has considered leaving the click out. That is, it could work like this:

- touch the pad in one place (don't click, just a gentle touch), keep the finger touching
- move a second finger up/down/left/right anywhere on the pad

This doesn't currently do anything (if you move both fingers it's a scroll gesture). Can I select somewhere that the 'click' would not be needed?

Not that I find (Preferences > Touchpad). So, Apple, please...? :)

+ One bug in Kannada font / keyboard mapping

This one might or might not be on Apple. It may as well be a Unicode bug, or a bug in the Ashwin Kumar's amazingly useful Kannada keyboard layout for OS X. Apple carries two Kannada keyboard layouts by default, but they are the 'official' Indian ones and suit badly to Qwerty thinking. Ashwin's fixes this.

Anyways, the problem is with foreign-origin words (which Kannadigas use a lot, unfortunately). If they end in a consonant, they are marked with a 'crossed' character s.a. ಕ್, ದ್, ಹ್ etc. You get the pattern. So should 'r' but instead we get ರ್. Shit now it worked.

If I do the same in i.e. Numbers, I get this (depending on font):

With Kannada MN (a built-in OS X font) I get:

With Helvetica Neue I get:

Neither of these is correct. The "mirrored 3" character is 'r' but it's never used alone. It adds an 'r' prior to the character that it is preceeding (yes, figure out that logic, us westerners... we have it easy). Anyways, it's in the wrong place here and should be the 'ರ-crossed' character instead.

Go Unicode nerds. Who is at fault? Unicode, Apple, or Ashwin Kumar??

Another possible fault or inconsistency with the OS X Kannada Unicode font is in the 'mo' and 'moo' syllables:

The part marked red is not there in a book that uses 'mo'. It doesn't need to be, because a similar syllable 'vo' gets its tail drawn from "the butt" (really - I think that's how they teach it here). Anyways, OS X "mo" and "moo" are understandable, but different from the books that I have.

Also, it seems the preference is to write 'v' with the top line, always (Helvetica Neue leaves the top out for 'va', 'vu' and 'vuu').

Maybe this is simply of different styles of writing. Maybe it's a bug. Please comment if you know better. Thanks. :)

Addendum 2-Sep-2013: 

Did some more testing on this. Here are the three detected trouble cases in three different fonts:


Helvetica Neue does all the three cases 'wrong' (but is generally usable even so).

Kannada MN (built-in OS X font) does 'va' correctly, but gets completely confused with 'mo' and 'cut-ra'.

Kadage (an addon font from here) does 'va' correctly, 'mo' wrong in another way (these may be taste/dialect issues as well?), and 'cut-ra' correctly.

On the correctness, Kedage seems to be winning. It would be great if Apple fixed these issues in the built-in fonts (both Helvetica Neue and Kannada MN) in upcoming OS X versions.

Dashboard World Clock

A bit on the side of things, but wouldn't it be nice to:

- See the difference from current time in hours (and half hours for India); now I find myself often calculating that manually

- Having selectable background color / material for the clocks (on their reverse side, behind the 'i' button). This would allow customizing a set of clocks and easily seeing which is for which area. Now all clocks look alike, only the title tells where they point to.



Ideally, one could change the colors differently for the up/down portions, thus reflecting i.e. the flag colors of a country.

Wednesday, May 15, 2013

Review of WSP Solutions magazine (Nov 2012)

WSP Solutions Magazine (Nov 2012)

During my visit to WSP Group here in Helsinki I picked up some of their publications. Here's a review of their Nov 2012 "Solutions" magazine.

The initial feeling is Wow - glossy, haute couture style fashion pictures. How does this go together with the theme of sustainability? 

In bright white the cover says: "Designing Future Cities"
In coal black it says: "From Low Carbon to High Fashion"


Part of me likes this playing with opposites. It's cool to try bring fashion (vanity) and carbon efficiency (sanity) together. We shouldn't regard either as unnecessary. The cover approach does shake one's thinking up a bit.

But. It's mostly the glossy, recycling-unfriendly material of the physical paper that makes me think "it's all just PR". These people are not really there for the long haul sustainability, they're simply giving lip service because that's currently "fashionable". Changing the paper quality of their publication would help them be more credible.

Page 2-3

The inside is more light in colors, with the normal green / yellow / orange / blue pastel color scheme going throughout. To me, this feels slightly fake. The easy way out. All the graphics look "nice" by themselves, but they are the usual clipart that can be added to any environmental, urban article. Nothing WSP about them (probably the whole layout and/or editing of the magazine has been outsourced - this is what one gets - a generic magazine). Did WSP want that? Or would they want more of their feeling to it? Now, if I were a customer, and didn't read any of the text, this would be a completely ignorable experience.

The above is probably due to my experience as a startup pitcher. We're taught to be rememberable, unique, honest. It wouldn't be too much to ask that to show in big corporations, as well?


Then to the text - and this is where it gets better. 

Short story on WSP + Genivar merger. Great, not too long, written from the customer's point of view (what are the benefits).

Sample on a "win" they've gotten in Ontario, Canada. The practical cases are always good, and there are plenty more in this magazine. We want to work with companies who are successful.

Short review on -5% carbon emissions, titled as "strong progress". Well, from where I see it it's more of "a start" and "good intentions". A company such as WSP should strive for -50% or more reductions. The problem with telling -5% (yearly) reduction is that they're basically saying "we're no worse than the others". In fact, they do say "We continue to benchmark our performance against other companies". This is just safe betting - a vigorous approach would aim at way more. Of course, most of WSP's carbon footprint probably comes through their design work's implications and not from their own office environment. Were I in charge of WSP office sustainability I'd press for full carbon neutrality by year 20xx, and compare to that. Comparing to others in a badly managed planet is not very meaningful.

Also, the small text was on 2011 figures. In a November 2012 magazine. It takes over half a year for such results to surface? Is that the same for their financial reports - don't think so. Same deadlines for sustainability reports as financial ones (another agenda to push for the sustainability responsible of WSP).

Page 3 is general backdrop on urban statistics. The text and the sunny picture are somewhat conflicting.

Page 4-6


Good text. 

The WSP personnel really makes a positive impact on me, as a reader. Like this:

"Talented people want to do interesting things in their downtime, they want to know that the world’s best art is down the road, and they want to be proud of the place they live in. They want to live somewhere where they know that their participation in the economic life of a place isn’t having a negative knock-on effect on the environment, and where there are other people like them, with similar talents and ideals."
Seems they hold the individual - the citizen - in great value. And the style of the text overall in the magazine is intimate, concrete and benevolent. 

“It comes down to what a city wants to be famous for,” says Toyne. “Is it six-lane highways and gridlock and the fact that it takes four hours to go even a short distance, or for being a free-moving, easily navigable city, accessible to all?”
“Many of the world’s cities are becoming the same,” agrees Brooks. “Retail is a key factor. It used to be a key component of identity, but now you can go to different cities and walk down the high street and you could be in the same place, it’s Starbucks, McDonald’s, Benetton.” He believes there will be a reverse:
This is interesting to read. These people are crafting our urban future, by designing our cities. They smell the trends and here they are conveying those trends back to us, as readers. This is nice. 

Maybe blogs have taught people to write better. They will get immediate feedback and criticism. In blogs, you need to be bare and honest. That approach also serves a company magazine (on page 6 is a link to Jason Brooks' blog - unfortunately the link is a generic wspgroupfuturecities.com link and not to any blog. In fact, I failed to find Jason's advertised blog even with 2 minutes of searching).

Page 7


There's a mention on a subject familiar to me - Sibbesborg just 30 km east of Helsinki. WSP has won the design contest and they're informing about what's going to be happening in that development up till 2050.

This leads to an idea for the magazine editors: do follow-ups of such projects, such that there becomes a continuation on how a certain team or a certain project is doing.

Page 8-11



On city identity and iconic architecture. Again, I enjoyed the article. It's a great approach to have multiple different people give their insights. It balances an article. Also, these people seem not to be WSP employees but collaboration partners (architects etc.). This to me tells of an open ecosystem and friendly but effective working habits. A gang one desires to be part of.

The article mentioned the Shard, a previously unknown London skyscraper to me (though I've probably seen it under construction but haven't realized). Made me google things. Now I know. Thanks for raising my curiosity.





Page 12-13

"taking it further, making sustainability a key component of their identity and using it to compete against their rivals for talent and investment. WSP is helping them do it."
This is interesting. But pictures tell more than words, and again here clipart prevails over anything that would have given context to the Chicago Lakeside or Sidney. 

Page 14

Hey, I know this guy! Following @richpalmeris on Twitter. 

WSP could actually mention authors' twitter tags if they are active there (even if it's their private and not corporate accounts). Just an idea.

The text is nice and professional, telling of city branding of Cape Town. Suits the magazine nicely and has a complementing approach to the earlier articles. Well done.

By now, the mismatch of visual vs. text is more than obvious. I also realize that none of the actual photos have any humans in them (apart from a portrait on page 2). This must be because it's more difficult to get rights to use identifiable people in a magazine shoot. But this causes a conflict between what WSP is trying to say in "cities are for the people" and showing empty streets (Bristol, page 2) or far away scenery (Capetown, page 14).

Page 15

This is the page showing project wins (as the title says). These are always interesting, but the lack of any visuals to make the data graspable in a glimpse (essential in a magazine s.a. this) is striking. Add i.e. a map of the world highlighting the locations (helps one to focus on areas of his/her interest). Add bars below each win highlighting their budget magnitude (instead of merely giving numbers in the text). I think the visual designers simply skipped this page.

It's also unknown, why the three latest contact backdrops are black, when the others are light green? I thought it might be WSP vs. Genivar (is not). Transportation vs. rest (is, but doesn't make sense). A magazine should use visual cues that make sense to the reader. This one is probably just random, and therefore counterproductive. 

The last (Finnish) case is highlighted with light green background. It's about recognition, not project win, and the highlight is supposed to be indicating that. Well, it doesn't. It sits firmly under the "Transportation and infrastructure" section. (Not that I care, but really… layout people… someone actually got paid for doing this "work"?)

Back cover


The back cover tries to draw the loop into conclusion by returning to the "high fashion low carbon" theme of the front cover. It's visually messy, but ok. Finally we have faces. :) I would consider using the back cover for continuity and connection. This is where you want to engage the reader to stay in touch. Maybe give previews of the next magazine's issues (if already decided upon). Push for Facebook, Twitter, Newsletter engagement. Use a QR code for the mobile handset (yeah, none of the bosses use those, but it will make the magazine seem cool and young). There are currently two links here, but neither of them lead to longer term engagement.

Digital copy


Opposite to the paper copy, the digital one suffers from exactly the opposite: too little quality. For some unknown reason, they're linking to a low resolution (4.4MB) PDF that has artifact problems on all of its pictures. This is such a naive mistake. You make a great-looking brochure to only ruin it online. Why, oh why? 



a) the people didn't care
b) no boss noticed it
c) no-one reads it online anyways
d) something else

This is part of branding. 

Interestingly, WSP has done it right with their older (March 2011) copy. Brilliant finishing. 

Summary

The good
+ fresh approach mixing "opposites" of high fashion and low carbon
+ very good, honest, personal, detailed, readable text contents
+ no typos or other stupid mistakes (apart from Jason's non-existent blog)

The bad
- seemingly non-recyclable glossy paper on the physical magazine
- selected layout and clipart pictures are too generic
- non-relevant and too tiny pictures, without faces
- low picture quality of the on-line version
- link to "Jason's Blog" doesn't lead there

Fix the layout and picture issues, plus consider the relevance of a shiny, non-recyclable paper material, and this will rise the overall magazine to the level that its text already is.


Monday, May 13, 2013

Testing 3D capabilities of JavaFX 8 (Early Access) on OS X

It works! :)

1. Install jdk-8-ea-bin-b89-macosx-x86_64-09_may_2013.dmg on your Mac
2. Copy-paste SphereAndBox.java to a work directory
3. javac SphereAndBox.java
4. java SphereAndBox


Great! :)

If it did not work for you, check that:

$ java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b89)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b31, mixed mode)

If you get anything else, clear the JAVA_HOME env.var and try again (or comment here and let's debug).

The demo is not much, but it does give a solid 3D proof-of-concept. Can't wait to craft real worlds in Scala (n.b. ScalaFX does not currently support JavaFX 8 and it might take a while before it does. 3D abilities are a new feature of JavaFX 8.).

Sunday, May 5, 2013

Suomi Öljyn Jälkeen (Partanen, Paloheimo, Waris)

My review of a new book, in Finnish. "Finland After Oil".


Mainio kirja.

Olen sivulla 246 ja vasta nyt alkaa kirjan itsensä niminen luku, "Suomi öljyn jälkeen".

Tähän asti kirja on kurvannut läpi energiahistoriamme ja sen erilaiset umpisolmut. Varsin hyvää, luettavaa tekstiä, joka toisaalta menee riittävän syvälle saadakseen lukijalle ahaa-oivalluksia, mutta toisaalta ei jää pureutumaan yhteen näkökulmaan tylsästyttävän pitkäksi aikaa.

Samoin kirjoittajien tyyli on mieleeni. Asiat sanotaan suoraan - esim. Venäjään liittyvää analyysia oli miellyttävä lukea, mukaan lukien itselleni uusi sana 'kleptokratia'. Kirjoittajat ottavat asiat henkilökohtaisesti ja kiertelemättä, mutta osaavat samalla pitää asiallisen etäisyyden ja perustella väitteet numeroilla tai muuten mielestäni riittävällä analyysilla.

Jonkinlaista turnausuupumusta on tässä lukijassa jo havaittavissa. Tyyli tietenkin toistaa vähän itseään ja ongelmia löytyy - yllättäen - enemmän kuin ratkaisuja. Ensimmäiset 150 sivua menivät ahmimalla, nyt viimeisten 50:n kanssa on niin ja näin. Toisaalta kappaleiden pituudet ovat koko ajan olleet mukavia. Juuri kun yhdestä näkökulmasta on saatu käytyä läpi kaikki olennainen (jonka tämä lukija jaksaa omaksua), esitetään jatkoksi jotain vähän erilaista ja taas mielenkiintoista.

Pidän jollain sairaalla tavalla romahduskirjoista. Jos sitä joskus epäilee, että ihminen on todella tyhmä, nämä antavat sille perustetta. Oikeastaan tekevät luulosta tiedon. Joukkona me olemme äärimmäisen tyhmiä. Kuten kirja asian esittää: millään muulla eliöllä ei ole järkeä tuhlata tällaista energiavaraa. Ei kyllä meilläkään. Evoluutiomme taitaa lopettaa itse itsensä.

Kirja mielestäni tarvitsee kumppanikseen vielä toisen, joka näyttää enemmän valoa ratkaisuihin ja luo mahdollisuuksia täynnä olevaa tulevaisuutta. Olemme aiemminkin pärjänneet tiukissa paikoissa, ja meillä on edelleen tieteemme tukenamme. Kriisi lieneekin enemmän poliittisten rakenteiden aikaansaama ongelma - ns. "demokratia" etunenässä. Lukiessaan tällaista kirjaa alkaa väliin huokailemaan suunnitelmatalouden perään, mutta ei sekään olisi vastaus.

Jos jostain en oikeastaan ole pitänyt, se on kirjan nykyinen kansi. Tuo ei mielestäni kuvasta kirjan paljon laajempaa sisältöä ja analyyttista mutta luettavaa asennetta. Likainen öljytynnyri vie koko kannen. Ehkä parempi olisi ollut kuva jostain suomalaisesta, jossa tynnyri lojuu tyhjänä ja tarpeettomana sivussa (toisaalta tuulimyllyjä jne. aikalaiskliseitä pitää välttää).

Upea kirja! Hieno lukukokemus!

Nyt hoitamaan tästä käännöstä ruotsiksi, englanniksi ja ehkä ennen kaikkea venäjäksi ja kiinaksi.

Ja samalla sitä ratkaisukirjaa...

Julkaisija: Into Kustannus, www.intokustannus.fi
ISBN 978-952-264-196-0

Tuesday, December 18, 2012

Adding 'condapply' to Scala, for natural JavaFX bindings

The Scala programming language is wonderful, and if anything, it suffers from a little bit too many tweaks and shortcuts (access syntactic sugar).

But here's one more suggestion.

The particular itch is that JavaFX bindings that in some languages can be expressed in a normal if/else:

  def z = bind if (b) then x else y;

 cannot be created so nicely in Scala (or in Java, for that matter) - since if and else are keywords.


  def z = when (b) then x otherwise y;

This is how the current ScalaFX library does it.

Since Scala is a very powerful language, I began to toy with the idea, how it could allow the "natural" binding syntax for ScalaFX. And - I think it can (well, not the current Scala, but it could be added).

Existing apply and unapply

Currently (Scala 2.9) Scala has methods called apply and unapply, which are called when i.e. a function call is invoked on a class. The compiler transforms the (...params...) of the call into a apply(...params...) call for the class. This is very, very common in Scala.

The unapply is used less seldom, in pattern matching (in case you want your class to support this amazing feature fully). Normally classes don't need to do that much (one can use "case classes" that do it automatically).

Anyways, this provides a precedent as to methods where the compiler transforms its syntax into bendy method calls.

Introducing condapply

I would like to call this cond, but that would probably be a bit too common, and it would lose the mental bridge to existing (and well understood) apply and unapply methods. So let's say it's condapply.

  def condapply[T]( t: => T, f: => T = null ): T

That's Scala prototype for a method that takes two "by name" parameters (that simply means, they will be lazily evaluated; only one of them). Both the parameters are expected to provide the same type of value (T), and the method itself will return this very type. If no else branch exists, f will be null.

What ScalaFX could do with this, is to have the Observable trait implement this method, and therefore make Observable's applicable within an if. What the implementation would do is bind that Observable to the two branches t and f (mathing then and otherwise in JavaFX API).

By the Scala prototype the branches would not need to be of the same type as the condition, but here they happen to be.

For cases where there is no else branch, the Scala compiler would create a condapply call with just one parameter. It would be up to the class to catch both cases (either using two separate prototypes, variable argument list, or default parameter for the latter parameter).

The benefits

The suggested addition to Scala would allow conditional bindings to be expressed in the usual if/else syntax, s.a.

  def z = if (b) x else y

It will not render any existing code invalid, since currently the if statement is limited to conditions of type Boolean

Whether it will make code more readable, and easily understandable, is a matter of opinion. Personally, I would probably use it, but also something like:

  def z = bindIf (b) x bindElse y

is quite okay (and can be done without changes to Scala).

Other uses

There may be other uses to the presented technique outside of ScalaFX.

Thursday, November 8, 2012

Oracle - how to be More Believable on OS X

Recently, the baton on Java on OS X was passed from Apple to Oracle. From Java 7 onwards (i.e. now), updates come from Oracle. Also, integration with operating system has changed in various ways.

Most of this is good.

And then there's this.



Instead of nicely integrating the Java Control Panel into where the rest of the settings are (i.e. within the topmost window), Oracle chooses to launch the one below.

There's a plethora of user interface issues here.

1. "About" is topmost on the Control Panel window, on the first (default) pane. It's the *last* thing a user needs. Move it!

2. It simply looks Bad and Boring. This is not in line with the coolness that JavaFX tries to bring to Oracle. Put some meaningful graphics on the first pane?

3. *All* of the four buttons on the first pane have "..." in their captions, meaning you can do *nothing* in this pane alone. Too deep organization.

The reason for this, of course, is that they want to run the Control Panel in Java (it looks just the same in Windows). That's probably a valid excuse for the first OS X version. Not for the long run.

So let's fix this. :)

Don't launch anything new, make things fit in the OS X usual Control Panel (hire some consultant to do it in Objective-C, it's not contagious).

We can probably use the same tabs, but some would benefit from a renaming. Let's check them one by one (sorry that I haven't made any UI sketches on this - have other things to do):

General tab

Drop the "About" from here (moves i.e. to under "Update" where it's more relevant).

Drop "Network settings are used when making Internet connections." *Anyone* (anyone who found the Control Panel, anyways), does know that. Less is more and this simply makes Oracle (the boss within Oracle who demanded this text) look Stupid..

Since you're saying "only advanced users should modify..." why exactly is *this* on the front page, then?

Pressing 'Network Settings...' gives:


This should imho be a "Network" tab of its own, just prior to the "Advanced" tab. You said it yourself. For advanced users. = moved.

Temporary Internet Files has the same "only advanced users should".. mention. By having these right on entry page of the Control Panel you make the occasional Java users (who are millions) think Java is "only for advanced users". Unnecessarily. Move this, too.


There's enough in there to grant a separate, top-level tab (within the real OS X Control Panel area). Let's put "Temporary files" (or "Disk cache") before "Advanced".

Then there's the "View..." dialog of the initial page (yet one very advanced thingy).

Or actually, it turns out to be almost like a separate application within the Control Panel (which is within the OS X Control Panel). Way too deep - I bet most people never knew this even exists? I did not. :)



It's three things.

"Applications" shows which apps are taking disc space for their cache files. This is great, but... the icons on top allow one to i.e. launch these programs and look into their source code. Someone in charge of this wanted more than one icon, and got it. *Completely unnecessary* within a Control Panel.

Let's make this into a "Cache" tab (for brevity) and just keep the possibility to list the apps and remove their cached data.


"Resources" has things that come from the Internet. Maybe it can be selected like above (show) but maybe the two lists could be put in one, i.e. Apps on top, followed by Resources. 


"Deleted applications" is completely unnecessary. Someone in some meeting wanted to play safe and duplicate a trash bin. Don't Do That. Stick to simplicity. Though Java (well, JVM) is gorgeous, you don't want it to explode on people's faces. They already have enough stuff to take care of. One can always re-install an app from the original place. Trash.

That covers the first, "General" pane, and - nicely - nothing remains on it. I would claim that the proper title for the pane should have been "Miscellaneous" since these really were things that didn't fit anywhere else. Too bad they were placed on the *entry* place of the Java Control Panel.

Update


What a waste of empty space.

Merge this with the "about" popup that comes from the General tab. 


I would bet that the *most* frequently used feature of Java Control Panel is to check which version you are running and possibly upgrade. Make this the entry page (it already has the nice graphics). Don't hide it behind an "About.." button.

That covers the "Update" pane, which now functions as the nice entry page within the Control Panel.

Java

It's kind of awkward to have a "Java" pane within a "Java Control Panel", isn't it? If this pane is "Java", what are the others?


Again, you probably noticed the (lack of) use of empty space, and making people push yet another Button... (A copy of this pane alone would make for 15 minutes of teaching at a University Usability Course - if people would learn by bad examples, which they don't). :)

Ok, let's be humble and press the "View..."


There comes "Java Runtime Environment Settings".

Let's forget about the unnecessary interim "Java" tab and call the tab "Runtimes" at once.

However, knowing that in the Oracle way of distributing Java for OS X there is only one runtime at any one time, I wonder what's actually the point of all this. Apple had a similar list where one could manage multiple Java Runtimes. Oracle itself has said this was a very, very bad idea. So .... what is this for?

Security


"Use certificates to positively identify .. certifications." Yeah, right.

- empty space
- button...

Just call the whole page "Certificates", and have this (what pops up by pressing the button) right on the topmost level:


Certificates is probably an even more advanced issue than Network and Temporary Files and therefore deserves to be listed after them.

Advanced


This can probably remain pretty much as-is, since the name anyways implies you should know what you're doing. A tiny help pane on the right side for getting info on the settings might not hurt (especially since the OS X Control Panel would have more horizontal page available).

Maybe reduce the font size a bit. It's advanced. There are many options. Smaller font size means I can get a better overall view at once.

Altogether, now

So the current (Oracle Java 7 SE) Java Control Panel organization is like this:

General
   About...
   Network Settings...
   Settings...
   View...
Update
Java
   View...
Security
   Certificates...
Advanced

The proposed flatter organization is:

Update
Network
Temporary Files
Caches
Runtime   (if required)
Certificates
Other

Since essentially all the entries (except for 'Update') are advanced (already declared so in the current Control Panel implementation), it is probably in place to re-title the earlier "Advanced" as "Other".

The Theory

I've developed a theory (mainly by observing XBox/Zune and other Microsoft mess-ups) that the internal structure of an organization is traceable in the software it produces. That is, unless a special effort is taken to smoothen such borderlines from the eyes of the user. I bet that the issues mentioned above are not coming from developers. They reflect something within probably Sun and not Oracle that caused this kind of approaches to be taken. It is sad if such usability failures are allowed to live further over the years, since *this* is what most people will feel when they touch Java. Is it flat, easy and good-looking. Or is it unnecessarily structural, hard to handle, and aging.

Oracle, please decide.

Wednesday, October 31, 2012

An IDE for ScalaFX development? Yes - PLEEEEEASE!

This entry should tell you how to get an IDE (Integrated Development Environment) up and running for Scala development - and especially for ScalaFX (graphics application) development.

It shouldn't be even this difficult (and most likely will become easier over the years).

The *current* (Oct 2012) situation is that I fought over a week with Eclipse Juno without still getting it to fully work. With IntelliJ the fight was roughly half a day (not bad). 

With this text, you'll be up and running within an hour.

You shall need:
- OS X
- Scala 2.9.2 installed via HomeBrew.
- ScalaFX jar precompiled

You probably should read this earlier blog post first.



- Download "IntelliJ IDEA". Use the "Early Adapter Program" (recommended for Scala plugin to work) and take IDEA 12 (it has a great duck splash screen):

http://confluence.jetbrains.net/display/IDEADEV/IDEA+12+EAP   ( I took version 'idealC-122.639.dmg'. )

- Drag 'Leda-IC-122.639' app to somewhere (i.e. /Applications).

- Launch it and pick 'Open plugin manager' (top right corner of the welcome page):

- "Browser repositories…" > choose "Scala" plugin (v.0.6.287) (double click to download & install)
- You may also wish to install "SBT" plugin but it seems to only provide compilation help, not sure how it can be used for debugging.
- restart IntelliJ

THIS IS IMPORTANT!!!

In order to use the Scala plugin, it needs to be given a "language facet", essentially libraries that tell where Scala compiler & libraries can be found.

We'll do it here using the command-line-installed ("brew install scala") version 2.9.2 files.

- Create a project (i.e. from scratch)

Select type: "Java module"

Click "Scala" on the "desired technologies" page (below) and fill the "Create compiler library" and "Create standard library" names to your liking (and probably you want them to be 'global').

We'll make these point to the right HomeBrew-loaded jar's in a minute.





You should get to the main IDE soon.


There's a ton of things you should go through in File > Project Structure… Do it now.

Within there, you see 'Modules > Scala' that should be like this:


Notice that "scala-compiler" is selected as the way to compile Scala. This points to the scala-compiler.jar and scala-library.jar that we'll now define under "Global Libraries" (last entry of the "Project Structure…" dialog):

Make the entries look like this (in case you do have Scala 2.9.2 via 'brew'):




This should allow IDEA to compile Scala. 

NOTE: It is absolutely essential that you only play with one version of Scala. Don't download "another" 2.9.2 and make IDEA point to it (did not work - at least not for me).

- Within "Project Structure… > Libraries" add 'scalafx-1.0-SNAPSHOT.jar' (that you've snitched earlier, compiled with the same Scala version):


- To compile, "Build > Rebuild project" (I'm not a fan of automatic build)

- To start code, right click i.e. on 'Main.scala' and take 'run MainFX.main()' (no breakpoints etc.) or 'Debug 'MainFX.main()' (will stop at breakpoints).

Did it work?

Note that i.e. renaming the "Scala compiler library" seems to be enough to throw the "Scala facet" setting off the wall, and requires it to be reset ("Project Structure… > Facets)

References:

http://confluence.jetbrains.net/display/SCA/Getting+Started+with+IntelliJ+IDEA+Scala+Plugin