February 09, 2010

Followup To Themes

As a quick followup to the helpful article on themes posted to the Eclipse Tips blog, I would like to point out that all of the values that are in the currently active theme are also in the JFace registry. Yes, it is possible to get the current ITheme from the workbench IThemeManager, but [...]

So Long, And Thanks For All The Fish

I was hoping to post this a little closer to the date but the cat has been let out of the bag.  I’ve decided to leave IBM for a position at RIM.  It wasn’t an easy decision to make but in the end I thought it was best for me.  I feel like I’ve gotten [...]

Running to be YOUR Committer Rep

We're out of the gate with the Eclipse Board of Directors election and I'm running to be a Committer Representative. You can check out myself and the other candidates and our platforms over at the Eclipse election site, http://www.eclipse.org/org/elections/nominees.php.

My platform is simple. My biggest concern as I've documented on my blog a number of times over the years is how to get more contributions into Eclipse projects. We often complain of being starved for resources. Even this week on the cdt-dev list, we're struggling to get our new debug framework into good enough shape that it will attract further contributions. The community is coming together and rising to the challenge, but it would be great if it was easier to get more people involved. The more contributions you get the more everyone benefits.

To me so much of the answer lies in ways to simplify the path for individual contributors to get code changes upstream into the Eclipse repositories. Many are unable to get employer approvals to get committer status, but we should still be able to leverage their talent. Distributed source control is a great start, allowing downstream developers to work on their features, allowing committers to see and review their work and then push that work upstream, all while meeting the Eclipse IP processes that are so valuable to our membership. We need to make sure we continue the work to complete that infrastructure, and that the Foundation staff have the necessary resources to make it happen, and that we make the necessary changes to the Eclipse processes to make it simple.

I'll blog about other ideas over the upcoming days, and hopefully earn your trust enough to vote for me. As Ed put it, my approach to this blog tends to be edgy. But that's a facade I put on it to drive my ideas home. If you take a look at my work on the CDT, you'll see I try hard to be pragmatic. I present my ideas and always consider not only the ideas of others, but try to understand their needs as well to make sure we have a consensus from which we can all benefit. It's a lot of work there, and I expect it to be an even bigger challenge on the board. But after 7 years of active involvement in the Eclipse community, I feel I'm ready.

February 08, 2010

NetBeans 6.8 Patch 1 - looot of fixes for JavaFX

Patch 1 for NetBeans 6.8 has been released on Friday 2/5/2010. Update your IDE to get the latest JavaFX SDK 1.2.3 and 36 fixes in JavaFX area.

disclaimer: all opinions/comments/ideas in this blog represent my view of the world. They may differ from a view or an opinion of my current/recent/future employer. All feature/product reviews/screencasts or presentations were taken from a parallel universe and are not connected with anything you know if not stated differently.

It's all about the App Developer

In case you missed the news, Symbian has achieved it's goal of being a fully open source operating system. Before I start, I have to congratulate Lars Kurth (former CDT guy) and the gang at the Symbian Foundation. It's an incredible effort to take a commercial product and clean it up to be consumable under an open source license. To finish ahead of schedule is a tribute to the passion and dedication the Symbian guys have for this new direction. Very cool.

But as much as I appreciate the work they did, I do worry how well it'll succeed. Yes, I'm open source guy and am a huge fan of open source projects and working with diverse communities coming together for a common goal. But at times, I don't think it's enough in order to be successful, especially if you are in the platform business.

Funny enough, while I was calling people "Apple Fanboys", someone called me a "Microsoft Fanboy" (I didn't even know it was possible for someone to be a Microsoft fanboy). But yeah, I appreciated how Microsoft built up their app developer ecosystem. Even though it's all closed, Windows is still massively successful, thanks mainly to the apps people build for it. The same is true for Apple, obviously. There's a reason why 150,000 iPhone apps headlines their marketing material.

The important difference I'm starting to realize is that open source platforms appeal to platform developers, the guys that port the platforms to new devices. Having an open source platform helps get you on to more and more devices as the barrier to entry is much lower, or at least the run-time royalties are much lower.

But it's applications that drive device sales and application developers are a different bunch. You need a great set of tools and a great set of APIs and a great ecosystem with promises of riches to appeal to application developers. And that's independent from how open your platform is I'm afraid.

With all these mobile platforms entering the mainstream, it's a big fight for app developer mindshare right now. And that's a much bigger fight than for platform developers. Either way, it's a great day to be software developer!

Kindle developers: Don't ask, don't tell

Hypothetically speaking, if I had received an invite to join the Kindle Development Kit (KDK) for active content limited Beta program, which I didn’t, and had read over the Terms and Conditions for the KDK, which don’t officially exist, I wouldn’t have seen this section:

You will not, without our prior written consent, use our trademarks, trade names or logos in any manner, or issue or contribute to any press release or any other public statement relating to the Program, our relationship with you or the terms or existence of this Agreement.

If such a policy existed, and I’m not saying it does or doesn’t, it might prevent anyone from disclosing that they were even working on any Kindle apps. It’s a good thing I’m not doing that. And I certainly wouldn’t be able to share any source code examples or documentation from the KDK with you because the non-existent policy might say:

We will from time to time provide you access to certain software, documentation and related materials (the “Materials”) in our sole discretion. … You will not use or authorize a third party to use any software in a manner that would in any way cause the Materials to be licensed free of charge, distributed in source code form or modifiable other than as expressly permitted in this Agreement.

It’s really too bad the beta program doesn’t exist because if it did I could tell you about the neat <redacted> feature, the fact that the whole thing is based on <redacted>, or the <redacted> limit of <redacted> KB/month. Wow, I can’t believe nobody has reported on that yet.

So… what could we talk about instead? How bout ‘dem Saints?

Ad re: Contribute to Eclipse?

Stackoverflow is offering free advertising to open source projects looking for contributors [1], but I don't see any submission from the Eclipse Foundation. Maybe it's still being designed?
Anyway, this is the kind of thing that, if I'm elected as a committer Board rep, I'll be pushing the Foundation to do: outreach to recruit additional contributions of all kinds (code, tests, doc, translations, etc).

Inventory Management Software on the NetBeans Platform

Recently I mentioned the E-Mail Management System that is part of a customer service suite provided by Artificial Solutions in Stockholm Sweden:

However, it turns out that that same organization also has inventory management software on the NetBeans Platform. Their internal Time Reporting, Project Management and Resource Allocation system is based on the NetBeans Platform, while they've worked on quite a few different prototypes and mock-ups, using the NetBeans Platform as a natural base, using a wide array of the different APIs provided.

And the NetBeans Platform was also chosen for the UI for their internal computer hardware, server and virtual machine inventory system:

All three of the above applications are extremely data-intensive, which is a typical reason for wanting to use the NetBeans Platform, since it provides so much UI (especially complex Swing components that aren't found in standard Swing) for managing large sets of data out of the box.

In other news. Read an interview, published today, with the developers behind these applications here on NetBeans Zone!

GlassFish Support, HA, Clustering and More

ALT DESCR

The Sun-Oracle Strategy WebCast and subsequent Webcasts and Docs generated multiple comments and discussions threads in the Web from which I want to highlight a few comments in here. Please check the original posts for context, clarification and caveats.

On OSS licensing - "There are no plans to change the open source GlassFish licensing for any of the GlassFish modules that I am aware of as I work directly with the team right now in the integration process" (Mike Lehmann, Director of PM for WebLogic Server and GlassFish).

On clustering - "Clearly GlassFish 2.1 has clustering today and 3.0 currently does not. Customers depend on the GlassFish 2.1 implementation and as I have said on TSS we are committed to continue supporting it per our lifetime support policies" (ML).

More on clustering - "We are very much working with the team to assess how clustering will fit on the 3.x roadmap given it was already on the original 3.x roadmap - the ideal will be at least parity with 2.1 - so judge on the result when we deliver versus ahead of the plan" (ML).

Ultimately, all of these comments will need to be judged by the reality of what Oracle delivers. As I wrote at TSS, "The Proof of the Pudding is in the RoadMap". In that same thread, Mike writes: "You will have to judge us on how we execute over the next few months while we realign roadmaps and delivery schedules but I hope we can surprise folks with some good turns we can do as a combined company."

It is still very early in the process of integrating the GlassFish team into Oracle; remember that the two companies could not work together before CiC. Hopefully we will soon be able to give you more details.

February 06, 2010

Airport & Passenger Management on the NetBeans Platform

In case you missed it, there's a new interview/article on NetBeans Zone entitled "Airport Operation Management on Oracle and the NetBeans Platform".

You'll find out about two NetBeans Platform applications created by AirIT in Orlando, FL, for managing airports and passengers. AirIT's solutions are operational at many airports around the world including Detroit, Minneapolis, Memphis, Philadelphia, Miami, Puerto Rico's, Luis Munoz Marin International Airport, Frankfurt, Berlin, and Düsseldorf International Airports in Germany.

Why is the NetBeans Platform being used? "When we began thinking about evolving our rich client framework, we wanted a proven foundation to base it on. The NetBeans Platform provides us with a module-based system that includes many conveniences that we now take for granted: full Swing integration, allowing us to reuse existing UI components; a robust windowing framework, modes and undocking windows enhance user productivity; loose coupling between modules, allows for the recombination of modules to build new suites of products to meet the needs of a specific customer; and the ease of use, the underlying APIs are easy to pick up and use even for a developer new to the platform. The NetBeans Platform has been integral in our efforts to integrate our products into a comprehensive enterprise suite."

The first of the two applications is Flight Information System, used by airport personnel to plan for and manage flights of all types, airport usage (such as concourses, terminals, gates, ticket counters), and flight schedules, among other information:

The second is Local Departure Control System, which is a passenger processing solution that allows airline operations without proprietary departure control systems to deliver first-rate passenger and baggage handling by alleviating the need to manually process passengers and baggage:

Next week more recently discovered NetBeans Platform applications will be highlighted here and on netbeans.dzone.com. If you have applications on the NetBeans Platform that the world should know about, please say so!

February 05, 2010

[video] Overreacting to Oracle Acquisition

If there were a doubts that the Sun and Oracle are different companies with different approach and different kind of employees then you should see these videos. LOL.
  • Videos: Overreacting to Oracle Acquisition of Sun



    disclaimer: all opinions/comments/ideas in this blog represent my view of the world. They may differ from a view or an opinion of my current/recent/future employer. All feature/product reviews/screencasts or presentations were taken from a parallel universe and are not connected with anything you know if not stated differently.

MercurialEclipse 1.6.0 beta released

For those of us who uses Mercurial distributed version control system (DVCS), I have great news: Intland has released the 1.6.0 beta of the MercurialEclipse plugin!

The main changes are dedicated the "enterprise" use case - we've improved scalability, usability and performance of the plugin.

P.S. Screenshots are coming soon...

What I'm doing Monday of EclipseCon

I've got my Monday all mapped out (don't forget, the full conference starts early Monday morning!) - and it's all about OSGi and eclipseRT.

First, I'm checking out Paul VanderLei and gang's "Working with OSGi" tutorial, maybe popping in and out as I do some new-member jumpstarts.

After lunch, I'm heading to a interesting looking series of talks -- Apache Aries, Eclipse Gemini and finally an overview of the Eclipse Virgo Project. Hopefully all the speakers stick around to the break for some Q&A.

After the break, I'm going to jump in on some lightning talks - first a couple on SWT, then SOA. Depending on what Microsoft has planned, I might pop in there for a bit and finish off with one of the panels (Panels will be posted on the schedule Monday!)

After that, it's off to the Member and Committer reception, sponsored by our friends at Oracle! Oh, and the community awards ceremony will be there as well!

Rest up, it's going to be a busy week.

- Don

February 04, 2010

EclipseCon Early Bird Registration Fast Approaching

That right, just 10 days left before the prices jump to the next tier. Register today!

- Don

SWT API for Windows Ribbon Framework

Are you interested in SWT API for the Windows Ribbon Framework? If yes please raise your voice in bug 293637. It looks like the Ribbon can’t be used in the SDK or any other Eclipse project at the moment. However, it’s still unclear if it can be part of the SWT API.

February 03, 2010

SailFin V2 webinar: February 3rd 2010

Sailfin logo

Today, February 3rd 2010, at 10 AM Pacific Standard Time, Prasad is talking about SailFin V2 (Sun GlassFish Communications Server 2.0) in the latest edition of Sun Software Webcasts. The webinar will cover new features in SailFin V2 and also explain how to develop SIP applications using SailFin V2.

You can register here for the webinar. For more information, please take a look at Prasad's blog.

February 01, 2010

The Opposite of Open is Theirs

Eclipse is at a cross-roads: it has more users than ever before but also less committer involvement than ever before [1,2]. Thinking about this, I'm struck by the similarity between Eclipse's situation and David Weinberger's "The Opposite of Open is Theirs", specifically he says:
If we allow others to make decisions about what the Net is for — preferring some content and services to others — the Net won’t feel like it’s ours, and we'll lose some of the enthusiasm (= love) that drives our participation, innovation, and collaborative efforts.
or, reworded for Eclipse:
If we allow others to make decisions about what Eclipse is — preferring some plug-ins and projects to others — Eclipse won’t feel like it’s ours, and we'll lose some of the enthusiasm (= love) that drives our participation, innovation, and collaborative efforts.
In other words, as long as the official Eclipse distros are controlled by single companies, the growing body of users will continue to be disenfranchised. I think the Apache Foundation epitomizes what the Eclipse Foundation should strive to emulate:
We consider ourselves not simply a group of projects sharing a server, but rather a community of developers and users.
Required diversity, decisions made by contributors, refusal to allow sponsors to control project direction, ... those are some of Apache's open fundamentals. If elected to the Board, I will work for moving the Foundation in that direction. I'm pro-member-company-profits, but not in a way that is anti-open. I want Eclipse and the Foundation to be viable in the long-term and I believe the only way to accomplish that long-term relevance is through a truly open meritocracy.

It needs to be ours and not theirs.

January 28, 2010

Computer-driven trading puts stock exchanges at risk

Here’s a scary thought for you. Every day, hundreds of billions of dollars of financial transactions are driven completely autonomously by computer algorithms. The fate of corporations and nations rests on bits of computer code sent out by their makers to do battle in a high-stakes trading war. And when something goes wrong, it can go spectacularly wrong.

When you think of stock exchanges you probably have a quaint notion of a paper-strewn room full of stressed-out traders yelling to be heard over each other while watching big screen monitors that cover every square inch of the walls. Or maybe you have a more modern picture of an army of white collar workers barricaded in their caves of steel intently staring at computer displays, waiting to pounce on the right news or slightest movement by executing a quick buy or sell order.

In reality, today’s markets are largely driven not by bellicose bombasts or educated elites but by algorithms written by programmers like you and me. Programs that are set free to wreak profit (or havoc) in the innards of the world’s electronic cyber-market. According to the Financial Times, program trading accounts for about 30% of the total daily activity on the New York Stock Exchange, and a whopping 60-70% of the activity on other markets such as the Nasdaq. In 2008, the total world derivatives market was estimated at nearly $800 *trillion* dollars.

Unsatisfied by the decision speeds of mere humans, huge banks have turned over the keys to the vault to programs to do the trading of stocks and derivatives for them. The idea has a certain appeal: Put in a few billion dollars, push a button, and walk away while the computer does all the work. When you come back, if all goes well, you’ve made a nice profit. “Leave the driving to us,” as the slogan goes. Even a monkey could do it. Right?

Well, if you’re not a developer and you’re reading this, please take heed. Computers make mistakes, because they just do what their programs tell them to do, and all programs have mistakes lurking in them. “Bugs,” we call them. Much of the craft of computer programming is concerned with reducing the number of bugs. When a program controls something really important, like say an X-Ray machine, a fighter jet, a space craft, or a nuclear power plant, extreme efforts are put into eliminating as many bugs as humanly possible. But as a number of high profile cases have proven, it’s impossible to detect them all.

Take the case of the NYSE Euronext exchange operator. Recently it fined a trading firm for “failing to control” its trading algorithm. One day, out of the blue, the program decided to send “hundreds of thousands” of messages for faulty orders, clogging up the exchange for everyone for hours. All it takes is a bad “if” statement or a misplaced semicolon, or maybe an array that grows larger than expected or a race condition in multi-threaded code. Let’s not even mention what a malicious hacker with an agenda can do.

So what’s the fix? Acknowledge that bugs happen, and put in checks and balances to catch and contain them. Don’t assume computers are infallible. They’re just as fallible as the humans that build and program them. More, because humans have the advantage of common sense. Let’s use it.

Photo credit: Walt Dabney

Live Templates in JavaScript/ActionScript/Flex

Writing JavaScript/ActionScript/Flex code becomes easier with upcoming IntelliJ IDEA 9.0.2. New set of live templates (see Settings dialog (Ctrl+Alt+S), Live Templates, JavaScript/ActionScript group), allows to avoid tedious typing when you need to loop over an Array, Vector or anything else. Luckily, some abbreviations are the same as with Java: iter, itar, ritar. Here’s the list of currently available live templates:

Abbreviation Description
iter Iterate (for each..in)
itin Iterate (for..in)
itar Iterate elements of array
ritar Iterate elements of array in reverse order

To use a live template, just type its abbreviation anywhere in your code and press Tab.

Ctrl+J shortcut shows you all live templates available for current context.

January 27, 2010

Where Life Takes Me Next...

You've probably seen the news - the Sun/Oracle transaction has closed. With the passing of that milestone, I can once again speak freely.

Having had nine months to accelerate down the runway, there's not a doubt in my mind Oracle's takeoff and ascent will be fast and dramatic. I wish the combined entity the best of luck, and have enormous confidence in the opportunity.

Greg Papadopoulos, one of the brightest people I've ever known, once made a very interesting statement - all technology ultimately becomes a fashion item. It was true for timekeeping, and it's definitely true of computing and telecommunications. To that law, I'd like to add a simple corollary: the technology industry only gets more interesting. It's been true my entire life.

As for where life takes me next, you should follow me via Twitter at openjonathan to find out. I'll also be rehosting this blog (and again, stay tuned to Twitter by following me here). I expect to do my part to keep things interesting.

Thank you for your support and commitment. I wish you all the best of luck building, taking advantage of (and likely wearing) the future!

Jonathan Schwartz
CEO, Sun Microsystems, Inc.
A Wholly Owned Subsidiary of Oracle Corporation.

Apple iPad: $499 gets you a powerful tablet for browsing, books, and apps

Special Report: Apple Tablet

Steve Jobs has just announced the iPad, calling it a “magical device at a breakthrough price”. Apple says the iPad runs all applications currently available on the iPhone App Store, plus apps customized for the device.

Here are the official specs direct from Apple:

  • Powered by a custom 1GHz “Apple A4″ CPU chip (built by Apple),
  • 16, 32, or 64GB of flash storage
  • 25Whr built-in li-poly battery, 10 hours battery life, 1 month standby
  • 1024×768 9.7″ IPS glossy display (132 pixels per inch)
  • 802.11n WiFi and Bluetooth
  • Speaker and microphone
  • 9.56″ x 7.46″ x 0.5″ (242.8mm x 189.7mm x 13.4mm)
  • 1.5 pounds (.68kg) for WiFi Model, 1.5 pounds (.73kg) for 3G+WiFi model.
  • (Optional) unlocked 3G capability using GSM micro-SIM.
  • Video out: 1024×768 with VGA cable or up to 576p with A/V Cable.
  • H.264 video up to 720p, 30fps.
  • VoiceOver screen reader

Price: $499 for 16GB, $599 for 32GB, $699 for 64GB. If you want 3G that’s $130 extra up front, plus $14.99 for 250MB/moth, or $29.99/month for unlimited data.

Shipping is expected in March worldwide for the WiFi model, April for the 3G model. Unfortunately you can’t pre-order one right now pending FCC approval.

The iPhone 3.3 beta SDK with support for the iPad is available now from the Apple Developer’s web site. It includes an iPad simulator so you can begin testing right away. Similar to Android, you write one iPhone/iPod Touch/iPad app that runs on any device but adapts its user interface to the user’s resolution.

If you try to run an unmodified iPhone app on the big screen, it will either display in a small window in the middle of the screen or the user can zoom it up to 2x size. Zoomed apps won’t appear as crisp as apps adapted for the iPad, of course. That’s because original iPhone apps were designed for a resolution of 480×320 pixels. If you blow that up to 2x the size, you have 960×640 but every dot is 4 times bigger (and blockier) than it was originally.

See also: Live coverage of the announcement.

January 26, 2010

GWT UiBinder support

The first IntelliJ IDEA 9.0.2 EAP build will add support for UiBinder, new functionality introduced in GWT 2.0. IntelliJ IDEA will understand tags and attributes in ui.xml files:

Inconsistencies between ui.xml file and associated Java class will be highlighted:

You can jump from field to the corresponding tag by using icon on the gutter:

Also IDE provides actions to quickly create new ui.xml file with associated Java class (in Edit | New | Google Web Toolkit menu) and to generate @UiHandler method (in Code | Generate menu).

Expect new version EAP to be published shortly.

January 25, 2010

I'm a Candidate for Elected Committer Rep

Like Zaphod Beeblebrox, I'm the candidate you want to vote for. You've (probably) read my blog and you know that I believe the Foundation should be doing a lot more for the committers, especially the independent and small company committers. I want the Eclipse Foundation to provide value for the long-term and I, and others, believe that to do that, the Foundation has to change. I want to be your voice in that change.

I'm sure there will be many solid candidates running for the three open committer rep positions (the list won't be announced until Feb 3 and I have no inside information), but here's why I think you vote for me Feb 22-Mar 12:
  1. I've been on the Board before and I know how it operates. Even Mike said that I was one of the most effective Board members during my previous term. I'm confident that I will be one of the most effective members again. You want an effective representative.
  2. I've been on the inside of the Foundation and I know how it operates. I know the right questions to ask to make sure that the committers are getting the straight dope and the appropriate resources. If you've seen any board at work, you'll know that management tailors its presentations to present the best picture and thus without deep knowledge of the inner workings, board members are handicapped in their inquiry and oversight. My inside knowledge will eliminate that problem for, you, the committers.
  3. I've proposed specific reforms that will dramatically improve the situation for committers and contributors, e.g., moving the IP burden from the producers to the consumers (April 2009), and a less constrained "what it means to be an Eclipse project" (January 2010), and many others. I will push for significant reforms for the committers and contributors: especially you smaller, independent and non-corporate committers.
  4. I will advocate for a larger percentage of the Foundation budget providing direct value for the contributors. There are many ways that the Foundation could help the projects without directly hiring developers. For example, the Foundation should have someone actively helping each project enable and encourage community contributions (setting up processes, writing "quick start" guides, recruiting up bug triage volunteers, etc). And the Foundation should have a wiki-editor to curate the Eclipsepedia and make it into something we can be proud of (Ward himself explains that wikis are best when curated) ... The ideas are endless, but they need someone forceful to advocate them at the Board.
  5. I will communicate with you. You deserve to know what's going on. Neither rain nor sleet nor verbal attacks will silence me. I will keep the committer rep blog up to date by posting after each monthly Board meeting (instead of e.g. just twice a year). I will not repeat just the party line. I will hold weekly office hours on IRC with rotating times optimized for the Americas, Europe, India, and East Asia (noon EST one week, 3pm CET the next week, 9am IST, 9am JST, and then repeat).
I'm a small-time committer, but I'm independent. The big company committers are represented by their Strategic board members, but the independent and non-corporate committers also need someone at the table. I will be your representative at that table.

P.S. If you are an independent committer but you have not yet signed a membership agreement, you'll need to do that in order to be eligible to vote. Just being an active committer isn't enough: you also need to be a Committer Member.

Resize (tool) windows with keyboard

Since IntelliJ IDEA is so much loved by keyboard addicts, here is a tiny yet helpful feature introduced in version 9.0.2: you can change size of a tool window by means of your keyboard.

Say, you’re doing “find usages”, the tool window is popping up and it’s too small for you to comfortably look at the usages tree. Now you don’t have to grab a mouse to stretch it up, just hit Ctrl-Shift-Up (Meta-Shift-Up for Mac users) and your tool window is getting bigger.

So, if you need to resize a tool window: focus it (by Alt-number or Ctrl-Tab) and then use Ctrl-Shift plus an arrow key that points to the direction you want.

You can also use these arrow shortcuts to resize dialogs and actually any window that IntelliJ IDEA shows. Say, you opened the project structure dialog and it’s too narrow for you. Use Ctrl-Shift-Right and Ctrl-Shift-Down to make it bigger.

January 23, 2010

Maven vs ant

Just found a very good write up about maven vs ant builds - http://www.iternum.com/knowhow/guidelines/maven-vs-ant/. A very interesting read for everybody who need to build Java applications.

P.S.
Interestingly, I see that there are not much changes since the last time I was heavily involved in the maven configuration nightmare on a big J2EE application (this was at 2006). Right now I'm in a good position - we are using ant build files generated automatically from the Eclipse plugin projects by the PDE. All what we need then is to integrate them via Makefile.local to our overall (custom) build process which also manages to compile and build our C/C++/Java/Eclipse code to handy rpm files of ~300MB size :-)

January 22, 2010

Live coverage of Apple Tablet event: Hello, iPad

Special Report: Apple Tablet

It’s “T-Day” for Apple as the company is set to announce the long awaited Apple Tablet. I blogged about the event as it happened, and now that it’s all over I’ve re-arranged the comments a bit for easier reading. Enjoy!

[ See also: $499 gets you a powerful tablet for browsing, books, and apps ]

7:57am (Pacific time): The media mob is already assembling at the Yerba Buena Center for the Arts. If you’re like me and you can’t be there in person, I’ll try to make you feel like you are. The temperature is a little nippy, 50 degrees, so bundle up, folks.


8:02am: It’s not too late to try your luck at the Apple Tablet polls. Scroll down to the very end of this post to see them. Polls close at 10am Pacific time.

8:11am: Interesting article at The Gawker about all the Apple Tablet anticipation. They call speculating about the tablet “one of the great modern pastimes”.

8:22am: Crowdsource prediction from the polls below: iSlate, available in March, for Book reading, $700-799, programmed in Objective C. My predictions: iPad, in June, for Games, $900-999, in Objective C.

8:26am: Apple Tablet, #Apple, iSlate, and iTablet are all trending on Twitter. No surprise there, but the one I can’t explain is “Frantic Steve Jobs”.

8:29am: Comments are open! Add your voice to the Trackback area below. We did away with that nasty registration form, so jump in.

8:33am: Is this the outside of the Apple Tablet? Looks pretty bland but plausible.

8:38am: Quite a mix of people in the crowd. Young and old, sweatpants and power suits, not to mention “black clad Apple security types” guarding the entrances. Not many women. Maybe they’re smart enough to avoid standing out in the cold for 3 hours.

8:43am: Lots of iPhone developers in the crowd. Everybody is wondering how compatible the tablet will be with the iPhone/iPod touch. Will it start with zero apps or 100,000?

8:50am: Apple shares down $3.38 this morning to $202.56. Is this a case of Buy on the rumor, sell on the news?

9:05am: Wireless networking is becoming a problem. WiFi is prohibited in the center, and 3G is iffy. Ars writes “We use Sprint [on EVDO] actually, at any big event, AT&T dies because there are 1000’s of iPhones around”. Even people with wireless mice are having a hard time.

9:07am: If the Apple Tablet allows background processing, and is available on carriers other than AT&T (or no carrier at all), I wonder what that will do to the momentum behind Android? Comments welcome.

9:20am: Some people are getting inside the building now (the glass part), others are still standing in the long registration line.

9:22am: Overheard on gizmodo: “I hope Apple announces a tablet that’s really just 6 iPod touches glued together, bezels and all.”

9:28am: Doors are about to open; mood is jovial but some crowding.

9:36am: No, there is no live video feed available. That’s what you have us for! You know, everybody disses Apple for this but I think it just builds on the whole anticipation/insider/secret knowledge thing they have going. Is that why Google events are so boring in comparison? Yeah, that’s it.

9:38am: Another good one: “I hope Apple announces a tablet that makes us all understand why we inexplicably crave a tablet.” Only 20 minutes left before the polls close!

9:42am: Doors are open and the crowd streams in. Looks like Steve Jobs will be in attendance after all. How can we tell? Because Dylan is playing.

9:45am: What kind of company would Apple be without Steve Jobs? He certainly makes it more fun.

9:46am: This just in: Leaked pictures of the Tablet! Er, not really, but funny.

9:48am: Everybody is commenting on the chair on stage. Is Steve J not feeling up to standing? Please God don’t let this turn into Dick Clark’s New Years Rockin’ Eve.

9:56am: People are taking their seats (in the audience I mean). Al Gore is here. How come he gets all the good invites?

9:59am: Looks like TechCrunch has crashed under the load. Or maybe the server died in shame over what CrunchPad could have been.

10:01am: Steve is out on stage! Big applause. Big grin on his face. “We want to kick off 2010 by introducing a truly magical and revolutionary new product”. But first, a few updates.

10:08am: (AppleInsider feed falls by the wayside too… zdnet.com and cnet.com showing strain but still up. No update from Ars in like 20 minutes).

10:08am: 250M iPods sold, 140K apps in the App Store, 3 billion apps downloaded.

10:09am: Jobs: Is there room for something in the middle of a laptop and a smartphone? Not the netbook - too slow, low quality display, and PC software. [snicker] It should be better at things like browsing the web. Email. Photos. Videos. Music. Games. eBooks.

10:11am: Jobs holds up the tablet… and the crowd goes wild. It looks just like a big iPhone.

10:14am: It’s called the iPad. Desktop is customizable, looks like a cross between Mac OS X (dock at bottom)and iPhone OS (icons, strip at top). Steve is emphasizing the web browsing right now.

10:14am: Display is not wide screen - looks closer to 4:3. “Much more intimate” than a laptop. Ah, now I see what the chair is for, that intimate, fire-side chat feeling. Steve runs through the demos.

10:18am: On-screen keyboard is *huge*. Looks like full size.

10:20am: Apps are not just scaled up versions of iPhone apps. For example the Calendar is 2 pages wide. Mail shows iPhone-like summary on left, reading pane on right.

10:23am: Interestingly, the demo unit is connected via WiFi. There is no 3G/phone icon visible anywhere.

10:23am: iTunes runs natively on the iPad. Album covers and all. No need to have a computer to sync up with it.

10:25am: Now showing Google Maps with Street View. Graphics are super smooth. I wonder if this has one of those dual-core ARMs? Or is it Intel Atom? Or Snapdragon? It has to be something pretty darned fast.

10:28am: Here come the specs. 0.5″ thick, 1.5 lbs.

10:30am: Custom 1GHz Apple A4 chip.

10:35am: 16-64GB Flash storage. Full capacitive multi-touch. WiFi 802.11n.

10:40am: Existing iPhone apps will run unmodified. They can run in 1x mode, unscaled, in the middle of the screen, or in 2x (full screen mode). The iPhone SDK has been enhanced to support the iPad. Using the new APIs you can write an app that works on *both* devices, and takes advantage of the bigger screen on the iPad if the user has that.

10:42am: Demo of Nova, a first person shooter. Looks nice. Ships “later this year”.

10:45am: Newspaper reading demonstrated with the New York Times. Multiple columns, inline video.

10:46am: Now showing the Brushes demo. Painting on the screen. Like the iPhone app only bigger.

10:48am: Next up: EA games. Given 3 weeks with the device to make a demo. Need for Speed Shift - touch and accelerator enabled. Touch mirror to see behind you. (Sorry for zdnet/cnet slowdown folks, server is getting hammered!)

10:50am: No word on multi-tasking or camera yet, looks doubtful.

10:53am: MLB.com app looks awesome. Live-game experience, navigate through games, pitch-tracker, trajectory of each pitch from the player’s perspective. And oh yeah, real video from the game if you want that.

10:55am: New app: iBook Store. Browse, buy, and read books online. All 5 major publishers (Penguin, Harper Collins, Simon and Schuster, MacMillan and Hachette) are on board. “Stands on the shoulders” of Kindle and goes a bit further. Bookstore opens this afternoon.

10:59am: iBook store uses the standard EPUB format (unlike the Kindle). You can change the font, size, etc..

11:00am: Also new: iWork on the iPad. New Keynote presentations designed specifically for the iPad. New version of Pages (word processor) and Numbers (spreadsheet). [I wonder if it can video out to a projector?]

11:11am: Keyboard changes based on the application. For example there are custom keyboards in the spreadsheet application for entering formulae.

11:12am: iWork apps are $9.99 each (not bundled together).

11:13am: Steve’s back. The iPad supports USB synching, but
also there are models with built-in 3G. There are 2 plans. $14.99 for 250MB/mo, or $29.99 for unlimited data. Wow.

11:15am: 3G is provided by AT&T in the US. International available in June. There is no contract - cancel any time.

11:16am: All models are unlocked and use GSM micro-SIMS.

11:19am: Price: $499 for 16GB, $599 for 32GB, $699 for 64GB. If you want 3G that’s $130 extra. Shipping in 60 days worldwide.

11:22am: Accessories include a nice case, and a dock with a built-in keyboard.

11:30am: Cue video espousing how great the iPad is.

11:34am: “This is a magical device at a breakthrough price”. That’s it folks, thanks for joining us.

Just for fun I’ve created a few polls in the days running up to the event. The polls are closed now, but check it out and see how well you scored.

Note: There is a poll embedded within this post, please visit the site to participate in this post's poll. Note: There is a poll embedded within this post, please visit the site to participate in this post's poll. Note: There is a poll embedded within this post, please visit the site to participate in this post's poll. Note: There is a poll embedded within this post, please visit the site to participate in this post's poll. Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.

Enjoy!

OK, it's time to look forward...

Enough of being maudlin, it's time to look forward to being a unified company:
Sun + Oracle = Snorcle ?
Where else would Duke need a snorcle, but in an aquarium visiting a glassfish?
You'll find all the images here.
Thanks to Rich Green for open sourcing Duke.

January 21, 2010

January 19, 2010

IntelliJ IDEA 9.0.1 released

IntelliJ IDEA 9.0.1, the first bugfix update for IntelliJ IDEA 9, is now available. With almost 200 resolved issues in such areas as Flex support, version control integration, Groovy support and others, it’s a strongly recommended upgrade for all users of both Ultimate and Community editions of IntelliJ IDEA 9.

Download IntelliJ IDEA 9.0.1 now, and check the release notes for the new update.

January 18, 2010

Flex SDK Sources and Flexmojos Projects

If you are working with Flexmojos Maven projects in IntelliJ IDEA 9, and have imported Flexmojos project as described in this post, and are planning to debug your application and browse through Flex SDK sources, this post is a must-read for you. Inside you will find details on how to configure IntelliJ IDEA so that it properly recognizes SDK sources and their ASdocs.

When IntelliJ IDEA imports a Maven project, it creates a bunch of module libraries that match pom dependencies. For each library it also configures sources and documentation, assuming that they are located in *-source.jar and *-javadoc.jar respectively. Unless you have these files in your local Maven repository, you’ll see them marked with red (see Projects Structure dialog (Ctrl+Alt+Shift+S), Libraries section).

If there is a remote Maven repository containing these files, you can download them via Maven tool window.

For example, standard Flexmojos repository contains *-sources.jar files for the latest Flex SDK distributions (3.5.0.12683 and 4.0.0.12575): http://repository.sonatype.org/content/groups/flexgroup/, which is enough both for debugging code and viewing documentation, because IntelliJ IDEA automatically picks up ASdoc from sources.

If remote repository does not contain Flex SDK sources, you can set them up them manually, but consider that you’ll have to do a lot of routine work yourself — SDK sources should be individually configured for each module library. You may download a standard Flex SDK installation and keep it somewhere on your computer, and then add source folders to Maven libraries according to the following table.

Flex Library Source Folder
com.adobe.flex.framework:framework:swc [Flex SDK]/frameworks/projects/framework/src/
com.adobe.flex.framework:flex:swc [Flex SDK]/frameworks/projects/flex/src/
com.adobe.flex.framework:rpc:swc [Flex SDK]/frameworks/projects/rpc/src/
com.adobe.flex.framework:utilities [Flex SDK]/frameworks/projects/utilities/src/
com.adobe.flex.framework:osmf:swc [Flex SDK]/frameworks/projects/osmf/src/
com.adobe.flex.framework:spark:swc [Flex SDK]/frameworks/projects/spark/src/
com.adobe.flex.framework:sparkskins:swc [Flex SDK]/frameworks/projects/sparkskins/src/
com.adobe.flex.framework:textLayout:swc [Flex SDK]/frameworks/projects/textLayout/src/

Note that AIR-related libraries have similar source structure and locations.

Foundation as a Service

The assertion by Doug and Boris (and others) that soon we'll be able to create Eclipse projects in less than 15 minutes led me to the interesting discussion of "what does it mean to be an Eclipse project?" In the past, being an Eclipse project meant six things:
  1. Source repository at eclipse.org (CVS or SVN)
  2. Mailing lists, newsgroups and forums at eclipse.org
  3. Following the Eclipse Development Process (committer elections, release reviews, etc)
  4. Clearing all code through the Eclipse IP Process
  5. An opportunity to be part of the annual coordinated release
  6. A select few projects can be part of the standard distro
With the advent (soon) of the non-eclipse.org-hosted Eclipse projects, I assume that at least four of these will no longer be required:
  1. Source repository at eclipse.org (CVS or SVN) Can host a project anywhere; can use any repository technology
  2. Mailing lists, newsgroups and forums at eclipse.org Can host the community anywhere
  3. Following the Eclipse Development Process (committer elections, release reviews, etc) Can follow any reasonable open source process (I'm assuming this because the current EDP requires at least a one month pre-creation review period which is contra-indicated for 15 minute project creations.)
  4. Clearing all code through the Eclipse IP Process IP Process is optional. (again, because the IP process is slow, if one will be able to create a project in 15 minutes, clearly the current IP process will not be involved)
  5. An opportunity to be part of the annual coordinated release
  6. A select few projects can be part of the standard distro
This seems like an excellent expansion of what it means to be an Eclipse project: basically, it appears that what it will mean is "if your project is Eclipse related and open source, you can be an Eclipse project".1 At the same time, however, in certain contexts, there is value to items 1-4, so I imagine this new scheme as "Foundation as a Service", in other words, Eclipse projects will be able to subscribe to whichever of the Foundation processes and infrastructure is best suited to that project.

Perhaps you want to use the portal for committer elections: your project could do that; or your project could choose to use a mailing list for elections. Perhaps your employer requires that all the code pass through the Eclipse IP Process: your project could sign up to be one of the "certified IP clean" projects; or if you didn't feel that need at this time, your project could opt-out of that service. And so on... I imagine that each project will have badges on its project page showing which of the various services and characteristics it has, e.g., "active", "diverse", "ip clean", "well documented", etc. Some badges would be algorithmically determined (active), some by the Foundation (ip clean), and some by the community (well documented).

I think this Foundation as a Service scheme is a great way to expand and extend the Eclipse ecosystem. It allows the Foundation to do that which the Foundation is good at while at the same time broadening the definition of what it means to be an Eclipse project.

1 I have no visibility into the details and thus I'm probably wrong in one or more or all aspects of this idea.

January 16, 2010

JLibs: SAX-Java Binding, JLaunch etc

JLibs: SAX-Java Binding, JLaunch etc

Find details about updates here

January 12, 2010

Java Tutorial Update

We have just pushed an updated version of the Java Tutorial to the web to coincide with the release of Java 6 Update 18.

This update to the tutorial features some additions and an update to the Deployment trail:

  • Developing Draggable Applets – a new topic describing how to create an applet that can be dragged outside of a browser and dynamically converted into a Java Web Start application.
  • Sending Messages to Other Applets has been rewritten.
  • Deploying Without the Codebase Attribute – a new section describing how to use functions in the Deployment Toolkit script to develop and test Java Web Start applications without specifying the codebase attribute in the application's Java Network Launch Protocol (JNLP) file. The ability to deploy and launch Java Web Start applications without specifying the codebase attribute is introduced in the Java SE 6 Update 18 release.
Also, we previously reported that some of the Swing examples would not open under NetBeans 6.5 or later, unless the project.xml file was patched. This problem is fixed.

Thanks, as always, for your feedback.

- Sharon Zakhour

Android 2.1 (Eclair MR1) SDK is out

One week after releasing the Android Nexus One phone to the public, Google has released the software development kit (SDK) that allows third-party developers to write applications for the phone. Android 2.1 has several new features including:

Version 2.1 is also referred to as Eclair Maintenance Release 1 (MR1), or API level 7 to programmers. In all, 2.1 has 118 API changes, which is approximately a 0.48% difference compared to the previous version.

Availability

Android 2.1 is currently shipping on the HTC Nexus One. The Motorola Droid (Sholes) sold by Verizon is currently at 2.0.1 but users should expect an over the air update “soon” (which could mean anything from 2 weeks to 2 months). As of this writing, all other Android devices (about 80% of the market, according to Google) are running version 1.5 or 1.6:

Source: Google market data collected during the two weeks ending on 1/4/2010

Eventually 2.0.1 will go away, replaced by 2.1 just as 2.0 was replaced by 2.0.1. If current trends continue, we predict that 2.0.1/2.1 will achieve a 25% market share by February, and 50% by the end of the year.

Note that all programs written using the 1.5/1.6 APIs should work on newer devices, but you should test your apps on all targeted versions and screen sizes just to make sure. Programs written to require the 2.0.1/2.1 APIs will not work on older devices.

January 11, 2010

JFreeChart in 2010

JFreeChart is off to a great start in 2010 with two exciting new developments that I'm desperately trying to find the time to integrate into the JFreeChart sources. First, Gerrit Grunwald has been doing some stunning work on (amongst other things) a gauge component for Swing:



Check out Gerrit's presentation on Swing user interfaces, grab the sources for the gauge component, or follow his developments on Twitter (hansolo_).

The second, equally stunning, development is a 3D charting library, Jzy3D, developed by Martin Pernollet, based on JOGL and released under the New BSD License. Here's a sample:



Martin kindly approached me about integrating this library within JFreeChart, and I have started sifting through the code. But you don't have to wait, the code is available now...so try it out!

Are SSDs too fast?

When buying a new computer, the conventional advice is to buy the fastest one you could afford. That’s what I did when I recently replaced an aging laptop with a desktop screamer sporting an Intel Solid State Drive (SSD). But now I wonder, for those of us developing software for others to use, are we doing our users a disservice by always getting the latest and greatest?

My IBM ThinkPad T42 served me well for many years but it was beginning to show its age. For one thing, the 40GB disk drive was always running out of space. I used a great program from JAM software called TreeSize Pro to track down where the space was going, but there was a point of diminishing returns.

I upgraded the memory as much as I could, but the Pentium M 1.7GHz CPU running Windows XP had reached its limit. Rebooting took over a minute, and starting Firefox or Eclipse could take 30 seconds or more. Running the Android development emulator was especially painful: several minutes to start one instance, and don’t even think about starting two or more.

After months of reading excellent technical reviews of the Intel Core i7 and Intel SSD’s at anandtech.com and other sites I decided to take the plunge…

A brand new dream development box with a quad-core processor (i7 860), 160GB SSD, 8GB RAM, and a fast video card (ATI Radeon HD4670), and 64-bit Windows 7. At first I tried to order it from Dell, but when they delayed my order into January I decided to go with a local company called Intrex. 3 days later (compared to Dell’s 30+ days) I had the computer.

This box screams.

Reboots are painless. Firefox comes up instantly, almost before I can take my finger off the mouse button. Eclipse starts in a couple of seconds, and the Android emulator, well that still takes several seconds but it’s an order of magnitude faster than before. As a user of this machine, I’m very pleased with it.

And yet…

Suppose I were a Firefox developer charged with speeding up startup times. On this machine, I’d say it’s pretty darned fast and mark it Fixed. But not everyone has a machine like this. In fact, hardly anyone does. My experience is not the same as my users’ experience. By buying a super-fast machine have I become disconnected from the people I am writing code for?

Personally, there’s no question I can be more productive on this box than a slower one. I can justify the purchase by saying my time is valuable, that I can bring products to market faster, and quit wasting time watching the hourglass cursor spin and the disk drive light flash. The solid state disk drive is so fast that maybe I don’t have to spend so much time optimizing seeks and worrying about caching. Now that I have 64-bits and all this memory, I can use that memory for more sophisticated algorithms. Maybe I don’t have to be so careful with how big my data structures are. Maybe I can use higher level languages like Python and Erlang to be even more productive compared to C and C++.

Do you see the trap there? As computers got faster, some would argue that programmers got sloppier. For example, Excel running on today’s hardware is not really faster than Visicalc on MS-DOS even though the computers are 100 times faster. Like a gas, software expands to fill all available space and use all available CPU and disk speed. Users get more functions, but not better performance. And if they’re a little behind the curve on their hardware, they can get much worse performance.

What do you think? Should developers use fast computers for best productivity? Or should we make them use slower computers so that they’ll be forced to make their code fast and small?

Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.

Tim Bray on Missing Huge Opportunities

Tim Bray writes:
"The community of developers whose work you see on the Web, who probably don’t know what ADO or UML or JPA even stand for, deploy better systems at less cost in less time at lower risk than we see in the Enterprise. ... More important is the culture: [with] development cycles [no] longer than a single-digit number of weeks."
The Foundation needs to both enable, but also to actively lead, the community toward this kind of development... It should take no more than 15 minutes to start a new project (or new projects will go to github). It should take no more than 15 minutes for a newbie to get started contributing to a project (or people won't join). It should take no more than a week to finalize a release (or we'll be left behind). Etc... There's a lot of good technology at Eclipse and a lot of good people in the community, but the software world is going through one of its regular massive waves of change, and the Foundation processes are contra-indicated for being part of that wave. I want to see those processes changed so that the greatness that is Eclipse can participate in the change that is occurring.

January 05, 2010

Live coverage of the Google Android/Nexus One event

Stay tuned here for live coverage of today’s Android press event, being held at Google HQ in Mountain View, California. It’s time to finally separate the truth from the rumors.

Also see: Google’s Nexus One: Is it super? And is there a market for a superphone?

9:53am: The intro slide is showing and the music is blaring. All that is shown so far on the projector is “Android Press Gathering January 5, 2010″.

9:59am: Looks like about 100-200 people are in attendance.

10:04am: Still waiting…

10:05am: Ah, there we go, looks like it’s starting.

10:09am: Mario Quedas of Google relates The Android Story So Far… [9 minutes and I'm already bored, lol]. 20 devices, 59 carriers.

10:10am: People with Android search the web 30 times more than people with “feature phones”. [Good news for web's biggest search engine, yes?]

10:10am: The G1 begat the MyTouch3G, which begat the Motorola Droid.

10:15am: Android’s principles include an open platform, always on applications, and free access.

10:15am: The next step in Android evolution is the Nexus One.

Continue reading: Live coverage of the Google Android/Nexus One event >

Eclipse for GemStone/S

GemStone Smalltalk is awesome.
And now GemDev: Eclipse for Gemstone/S.

January 04, 2010

Resolutions

My resolutions for 2010:
  • Learn a new language. French. 40 lessons start tonight;
  • Pay off the credit card, and stop using it;
  • Travel to FOSDEM and see if I can reconnect with the spirit and optimism of Free and Open Source software. Or just drink some very fine beer with some very fine friends;
  • Make more JFreeChart releases, and find a more secure source of funding for the project;
  • Put the interests of my family above all else.
Happy New Year everyone!

January 03, 2010

Trade Association Revisited

As a follow-up to "It's a Trade Association", I thought I'd explain why I conclude that the Foundation is not an open source entity.

I start by asking if you consider Microsoft an open source entity?

Probably not, in spite of Microsoft providing open source project hosting at codeplex.com. Similarly, although Google is very open source friendly and provides open source project hosting at code.google.com, it too is not an open source company1. The Linux Foundation is clearly an open source organization. Red Hat is widely acknowledged to be an open source company even though it doesn't host the Linux project. And so on... Thus clearly "X hosts open source projects" is not sufficient to qualify X as an open source entity, but what is sufficient? It seems that:
An open source organization or company is one that contributes a significant number of developer-person-hours to open source projects.2
Microsoft does not contribute significantly to open source projects; Red Hat does. The Eclipse Foundation does not; whereas the Eclipse-centric companies do (IBM being the star contributor). Thus the Foundation itself is not an open source organization: it's a trade association of open source companies, and as a trade association it undertakes activities to support those companies (such as mailing lists and source code repositories).

An identical relationship can be seen between, for example, the Seattle Public Library and the Friends of the Seattle Public Library. The Seattle Public Library does all the real library work: it has the books, the buildings and the librarians; the Friends "support library programs, ... promote community awareness of libraries, advocate for robust city funding of The Library, ...". Nobody mistakes the Friends for the actual library, but everyone acknowledges that the Friends play an essential role in maintaining the community around the library. The Eclipse Foundation is the "Friends of the Eclipse projects": it doesn't do the actual project work, but it plays a role in maintaining the community around the projects.

1 Some people claim that Google is an open source company because it is the world's largest contributor to open source projects, and I'm fine with that position as well: it simply reinforces my point that what makes a company or organization an open source entity is the contribution of developers, not the hosting of projects.

2 One could also apply other criteria, such as "primary business success depends on open source" but "supplies developers" seems to be the primary characteristic from which all others derive.

December 22, 2009

Creating live templates from… templates

Sometimes I find myself writing repetitive code constructs without being able to extract common code due to Java syntax hmm… let’s call them peculiarities. ‘Sounds like a job for a live template’, I think, and I simply create it. Here’s how. The documentation has it too, but a good example never hurts.

Let’s suppose you have read/write synchronization in your project, and from time to time you need to wrap a bunch of statements in, say, a read action. This involves putting them into a Runnable and giving the latter to some runReadAction method. Do you still do this manually? You don’t need to, IntelliJ IDEA will help you!

First, find an existing code which already invokes the read action and select it:

Go to Tools menu and choose Save as Live Template there:

You’ll see a typical Edit Live Template dialog with the text you’ve selected. Note that all the class references are qualified there and Shorten FQ names checkbox is on, so the mentioned classes will remain the same no matter where you choose to insert it.

What we want to keep is the external syntax: the method call and the runnable. So remove everything inside the run() method braces and replace it with a $SELECTION$ on a single line. It means that you may select something and it’ll be wrapped in this particular construct.

Enter some abbreviation to easily invoke it each time, and some description (optional, but useful). Finally, the formatting looks not quite pretty, so turn on the Reformat according to style checkbox.

That’s all! Click OK and start using it. Find a fragment you want to wrap into a read-action, select it and invoke Surround With… action (Ctrl+Alt+T). You’ll see the read action template in the list:

Select it and the read action is in there:

December 21, 2009

Declining Resources on the Eclipse Core

To provide some numbers behind my concerns about the lack of continuing investment in the Eclipse core, I spent some time analyzing the commit log data. At the recent member presentation, Donald said that there are 935 committers at Eclipse (slide 7). That's a good number because it demonstrates a broad set of interests at Eclipse, but I'm primarily concerned about the Eclipse core (the Java IDE plus Equinox) - what are the committer numbers for that essential-to-all-of-us core?
  • There have been a total of 1,159 unique committers to all Eclipse projects since 2001.
  • Of those, only 227 (19%) have ever worked on the Eclipse core.
  • Of those, only 48 (4%) are active today.
  • And that 48 represents an almost 20% decline from the high in 2004.1
So, the Eclipse core is the base of everything that we users use, and the base of everything that the ecosystem sells, and that core has less than 5% of the total committers - that's not a good situation by itself. And then that less than 5% has been declining for years - that's doubly not a good situation.

The Eclipse user base and ecosystem are expanding, but the all-essential core is not. The unsung heros working on the core are not getting the help that they need to continue doing the fantastic things they've been doing for all us. The Foundation needs to lead the way in convincing all the strategic members to put full-time resources into the core [1]. And it needs to lead the way in lowering the barriers for casual contributions to the core [2]. That is what I'm agitating for... That and world peace.

1 If you consider the core to be just the Java IDE, then the number-still-active is lower and the decline is larger: 25+%.

December 15, 2009

Top 10 Google Phone rumors

Usually I don’t post about rumors but this one seems to have legs so I’ll make an exception. On Saturday Google announced on its mobile blog that it was handing out a mysterious new phone to select employees across the globe. Calling it a “mobile lab”, the device runs Android and enables experimentation with new mobile features and capabilities.

That might have been the end of it, except that rumors started flying about whether this was the mythical “Google Phone“, whether or not it would be sold to the public, and so on. Here’s a roundup of the 10 most believable rumors that I’ve heard. Keep in mind, these are just *rumors*, because Google refuses to comment on unreleased products. I’m sure they don’t mind all the free publicity though.

Rumor #10: The new phone is called the “Google Nexus One”. This is a pretty safe bet because videos of the boot animation have been posted on the internet, and the name Nexus One is clearly visible on the screen. However it might be a code name and not a real product name.

Rumor #9: The Nexus One is made by HTC, and is the same hardware as the Passion, which may or may not be the same as the Dragon. One site called it “Phone 88″. What is it with Android phones and their multiple names anyway? From the pictures, the phone does indeed look like the HTC Passion/Dragon photos that have been circulating, so again, that seems like a safe bet.

Rumor #8: The phone features a 1Ghz (maybe 800MHz) Qualcomm Snapdragon processor, a 5 megapixel camera, and 800×480 touchscreen. Earlier this year, HTC came out with a Windows Mobile phone that used the Snapdragon, and the Motorola Droid has a 5 megapixel camera with a 854×480 touchscreen. So all this sounds reasonable.

Rumor #7: The new device will be running Android 2.1, which some people claim is the same as the “Flan” version of Android (the next version after “Eclair”). I don’t know about you, but I’m suffering a little bit of release fatigue at this point. 1.6 came out, then 2.0, then 2.0.1, all in the space of about a month. Do we really believe there will be another new release in another month? Wouldn’t Google have given developers some hint this was coming, like a new SDK or something? Actually Google seems to love to spring new releases on us without warning. If I had to bet, I’d say it will probably be 2.1 but it may or may not be the same as “Flan”. I expect it will be a relatively minor update, with features like animated backgrounds and (maybe) VOIP (see next rumor).

Rumor #6: The phone does not use the conventional network for voice calls. Instead, it uses Voice over IP (VOIP), just like Skype. All you need is a data plan and a 3G or WiFi network. These rumors seem to be fueled by Google’s purchase of gizmo5, a Skype competitor. The story goes that Google Voice will handle your phone calls and voicemail. While this would be pretty cool and drive down costs for consumers I’m doubtful of this one.

Rumor #5: The new phone will use a WiMax radio, and deliver download speeds much faster than 3G. While it’s true that WiMax is being tested in some areas by different carriers, this particular rumor is not supported by FCC leaks on the Nexus One.

Rumor #4: The phone will be able to function as a WiFi router, much like the Verizon MiFi device. This would allow wireless tethering for other WiFi devices in the immediate area, like your laptop. While it’s true that Verizon has had this on their roadmap for the future, it’s hard to see T-Mobile doing it any time soon. I think it would be more useful to allow the phone to function as a USB hub, or at least support some more BlueTooth profiles, so I can use a real keyboard!

Rumor #3: The phone will be available for sale at google.com for the low, low price of $199 on January 5th. This is oddly specific for a rumor, which lends it some credibility. One version of this rumor says that $199 is the carrier-subsidized price - you have to sign up for a 2-year commitment with T-Mobile to get that price. Another version says that Google itself is subsidizing the price. At least we don’t have to wait long to see if this one is true.

Rumor #2: Google will be giving away one of these to each attendee of Google I/O 2010. Google set up this expectation last year when they gave away the Google Ion phone (which later became the T-Mobile MyTouch 3G at retail). One the one hand, I hope this one is true because I’d like to get a free phone. :) On the other hand, it can’t be good business to give a way $4million worth of phones just to get people to come to their conference. And then people will expect one every year.

Rumor #1: This is my favorite one: All the rumors of the Google Phone are false, and the whole thing was made up by Apple. Why would Apple do this? Well, one reason might be to create a rift between Google and its partners like Motorola and Verizon, who it would now be competing with. Another might be to create a massive, impossible to satisfy expectation in users’ minds that will come crashing down on Google when the phone doesn’t materialize. Ok, I know this one isn’t really believable, but it sounded fun. Better get your tin foil hat on now!

So what do you think - is the “Google Phone” real? It is just another Android phone, nothing to see, move along now… or is it the “Real Android”? Is it a “Dev Phone 3″? And why is everybody getting so worked up about this?

Leadership in Solving the Tragedy

In "Seven Harsh Truths About Running Online Communities", Paul Boag says "an anti-social [situation] is your fault" and so I wondered what my fault was in causing the reaction to my trade association post. As far as I can tell, it was my use of the word "leadership" in reference to "the Foundation is not providing leadership to solve the Tragedy of the Commons". In reflection, I can see how it could have been misinterpreted as a personal attack rather than a professional disagreement, so let me explain my use of that word. I'll start with what appears to be an unrelated story:
During a recent visit to the Wikimedia Foundation, I had a very interesting discussion about community and change with Sue Gardner (Executive Director) and Erik Möller (Deputy Director). One of the topics we touched on was the video format the Wikimedia Foundation has chosen: the open format Ogg Theora. They spent a lot of time and energy on the format decision because it was a difficult tradeoff: on one hand, choosing a proprietary format (WMF, Quicktime, Flash, etc) would provide immediate access for everyone, but conflict with their goal of "freely available information everywhere for everyone". On the other hand, choosing an open format would limit availability but would ensure the information remains unfettered by a single company. So what should they do?

Instead they chose a third route: they chose an open format but at the same time, used their leadership position in information to convince the major browser vendors to include Ogg in HTML5. This is huge. This is leverage. This is change for the better.
The Eclipse Foundation could play the same leadership role in solving the Tragedy of the Commons. Mike is the charismatic, forceful leader that member companies would follow - in fact, I think he's the only person in the Eclipse ecosystem who could create the kind of corporate investment that is needed - that's why I was a key vote in hiring him at the beginning1. I believe that no single company is willing to step into the resource vacuum because nobody (not even IBM) has the deep pockets that IBM had from 2000-2004 — our only hope of corporate investment to solve the tragedy is a central leadership bringing the major strategic players to the table to staff the core team.

That's the "leadership" I was talking about. That's my critique; that's one area where, in my professional opinion, the Foundation could be doing better.

The Foundation is doing lots of good things:
  • Ralph continues to create a fantastic European community and the repeated success of Eclipse Summit Europe is entirely to his credit
  • Donald has taken over EclipseCon and does a fantastic job supporting the member companies
  • Ian continues to expand the Eclipse DemoCamps and Eclipse Days - an absolutely vital part of the growth of the Eclipse community
  • Denis and his team provide solid IT infrastructure
  • and more
I'm pro-Foundation. Perhaps I don't make that clear enough in my posts, but I am pro-Foundation. Because I believe in the power behind the Foundation, I can be pro-Foundation at the same time I believe there is more it could be doing.

1 John Weigand and I were the elected Committer reps on the Board. I resigned from the Board when Mike hired me into the Foundation a year later.

December 13, 2009

Graphs, GXL, dot and Graphviz

Sometimes you may want to quickly generate graphs programmatically and view/analyze those. Examples include, inheritance/type relation diagrams of an object oriented program, function call graphs and any other domain specific graphs (reporting chain of your organization chart for example). I find GXL very useful for this. GXL stands for Graph eXchange Language. It is a simple XML format to specify graphs. A simple graph stating that "JavaFX" language is related to "Java" language is as follows:

File: Test.gxl

<gxl>

<!-- edgemode tells this is directed or undirected graph -->
<graph id="langs" edgemode="directed">

<!-- write your nodes -->
<node id="java"/>
<node id="javafx"/>

<-- now write your edges -->
<edge from="java" to="javafx"/>

</graph>
</gxl>

You can also add number of "attributes" to nodes and edges - like color of the edge, style of the edge and so on. For example, "red" color can be specified for an edge as follows:


<edge from="java" to="javafx">
  <attr name="color"><string>red</string></attr>
</edge>

Now that we have written a simple graph with two nodes and a single edge between them, we may want to view it. There are number of tools/libraries to view GXL documents -- I've used Graphviz. Graphviz displays it's own native format called ".dot". Graphviz comes with a set of command line tools. One such tool is "gxl2dot", which as you'd have guessed, can be used to convert a .gxl file to a .dot file.


    gxl2dot Test.gxl > Test.dot

Once converted the .dot file can be opened in Graphviz GUI and we can export it to .pdf/.jpg/.png and so on. This way you can email the graphs to others and/or publish in your blogs/webpages easily.

The converted .pdf file for the above simple graph is here: test.pdf

I've used GXL graphs in a recent debugging tool related to JavaFX compiler. More on that later...

December 11, 2009

Dell unable to meet demand for Christmas, blames parts suppliers and elves

On November 27th I ordered a Dell Studio XPS 8000 computer with an i7-860 processor and 8GB of memory. My old Thinkpad T42 is getting a big long in the tooth so I needed something new for development and writing. The estimated delivery date was 12/16/2009.

Today Dell mailed me to say the order had been delayed until 1/5/2010! I checked the online forums and found several other people in the same situation. On 12/5, dgoobs wrote:

Dell has, so far, delayed my desktop purchase 4 times. … Makes me think it is time to cancel and order an HP.

On 12/9, snapshot2 wrote:

I too ordered a Dell and had to wait 3 weeks for delivery. Just checked the status and my order has been canceled. Why? waiting for parts to arrive.

Dell uses the “just-in-time” inventory system whereby they have no inventory of parts.
They require their vendors to deliver on a specific date. The “just-in-time” inventory system only works if you have reliable vendors. Apparently, they don’t.

Using Dell’s sales chat, I asked “Brian B” about the problem and he said “It’s the holiday season and we’re getting a lot of orders”. Um, yeah. Before I could ask anything else I got disconnected.

I tried the chat again. “Brian B” answered, but when I told him I was disconnected he asked if I’d like to be transferred to the person who helped me before. Huh? Does everybody there have the same name? Or did Dell do some research and decide that the name “Brian B” somehow gave US customers a warm, fuzzy feeling? In any case, this Brian said he couldn’t help me and I should call their order support phone number instead.

So I called that number, and after a few minutes on hold I got connected to a real person. After looking up my order he said it was delayed because it was waiting on a part.

“Which part?” I asked.
“It doesn’t say,” he replied.
“Can I swap the part with something else that *is* available?”
“Not without canceling and re-ordering the computer.”
“Well if it’s the graphics card you could ship me the computer without the card now,” I suggested, “and then ship the card when it arrives.”
“Our system doesn’t work that way. Besides, as you can imagine, we have to deal with a lot of orders at this time.”
“Is your name Brian?” I wanted to ask.

If you go on the Dell.com web site right now and order a Dell XPS 8000, it says the estimated ship date for a Dell Studio XPS 8000 is 12/24/2009. Sure it is.

ActionScript/Flex UML Class Diagrams in IntelliJ IDEA 9

If you read our recent posts on ActionScript/Flex refactorings, you might have noticed that UML diagramming in freshly released IntelliJ IDEA 9 works not only for Java. That’s right, you can use it to analyze your ActionScript and Flex classes.

Diagram can be shown either in a popup (i.e. to for quick glance at classes and their relationships), or in an editor tab for a more detailed drill down. Availablility of Show UML popup and Show UML Diagram context menu actions depends on what node is selected in Project view or what element or reference is under caret in AS/MXML file editor.

You can open a UML diagram for a class or package. The former displays all superclasses of selected class, the latter — all classes and subpackages of selected package. This way you may choose whether to inspect classes hierarchy or package contents.

UML diagram shows classes, interfaces and packages as top-level nodes, and members inside parent node. Links denote inheritance relationships between classes or interfaces: implements or extends. With different types of layouts it’s very simple to get a structural overview of classes hierarchy and relationships.

Using UML toolbar you can easily control which types of class members are visible: fields, constructors, methods and properties. Also, you can filter visible members by access type. Elements in namespaces are shown when protected & internal or all visibility mode is selected.

Many of the familiar refactorings are accessible right from UML diagram! You can rename classes or members, move static members, pull members up or push them down. To invoke operations on members, first double-click class node or select it and press Enter or F2. You may also quickly add class supers or inheritors with a context menu action:

To remove unneeded nodes from the diagram, select them and press Delete. To add classes/packages to the opened diagram, just drag the items from Project view.

UML with pleasure!

December 10, 2009

Nominations open for the Eclipse Awards 2010

Every year the Eclipse Foundation hands out awards at its annual EclipseCon conference. Nominations are now open for the next conference, to be held on March 22-25, 2010 in Santa Clara California. Anyone can submit a nomination, and you’re free to nominate your own projects, products, and applications if you like.

The categories for 2010 include:

  • Individual Awards: Top Committer, Top Contributor, Top Newcomer Evangelist
  • Eclipse Project Awards: Most Innovative New Feature or Eclipse Project, and Most Open Project
  • Technology Awards: Best Commercial Developer Tool, Best Open Source Developer Tool, Best EclipseRT Application, and Best RCP Application

The deadline for nominations is January 29, 2010. Good luck!

December 08, 2009

IntelliJ IDEA 9 Released, Includes Free Edition

IntelliJ IDEA 9 is finally out, bringing you lots of goodies across the board!

If you haven’t followed the EAP (Early Access Program) or missed the Beta release, here is a quick summary of the key new features and improvements in this release:

  • Two editions: Community Edition, free and open-source, and Ultimate Edition, encompassing 100% of the famous IntelliJ IDEA functionality
  • Much faster environment, with background indexing on startup
  • Extensive Java EE 6 support
  • Many productivity features in core Java functionality
  • Best-of-breed PHP support, with dedicated debugger, PHPUnit, etc.
  • Visual editor for defining the structure of project deliverables (.war, .ear archives, etc.)
  • AIR support, ActionScript refactorings, and other Flex support improvements
  • And lots more!

Read more about what’s new and download a free 30-day trial today.

Buy or upgrade to IntelliJ IDEA 9 right now.

Oh, and did you happen to buy your IntelliJ IDEA 8 license on or after October 1, 2009? If so, download v9 and upgrade right now — for free!

Start enjoying this latest and greatest IntelliJ IDEA every day — like we do!

— IntelliJ IDEA Team

December 05, 2009

How Changing the Home Page would Make Eclipse More Welcoming

I believe Eclipse needs to be more welcoming to contributors. I've written about this in the past [1,2,3,4,5] and even suggested some ideas about how Eclipse could improve [6,7,8,9]. So far there's been no major change: it's still just as difficult to contribute. There's no easy way to get started, no easy way to get the code and build it yourself, etc:
  1. The IntelliJ home page gives equals time to "Download" and "Contribute". The Eclipse home page strongly emphasizes "Download" but doesn't have the word "contribute".
  2. The IntelliJ contribution page (1 click from the home page) lists all sorts of ways that you can contribute to the community from the easiest all the way through becoming a committer.
  3. That page even has a prominent How to Check Out and Build page, and the process is two simple steps: (a) git, (b) ant. Period. (With Eclipse even the documentation I could find admits that the "documentation [falls] short on some specifics".)
Which IDE is more inviting to contributions?

This post has been revised based on feedback. Some comments may refer to a previous version.

It's a Trade Association

I've been believing and promoting that the Eclipse Foundation is new combination of open source and commercial interests. But I've recently concluded that I was wrong and that the Foundation is an industry trade association.
... an organization founded and funded by businesses that operate in a specific industry. An industry trade association participates in public relations activities such as advertising, education, political donations, lobbying and publishing, but its main focus is collaboration between companies (see "Membership benefits"), or standardization (see "Eclipse industry working groups").
It's ok that the Foundation is an industry trade association, but it means that the open source side of Eclipse (including me) must stop wishing for the Foundation to solve the Tragedy of the Commons and find some other way to make it happen. The Foundation will continue to provide benefits to the corporate members, that's fine - I've always been pro-profit. And the Foundation will continue to do marketing around the open source projects - nobody ever complained about too much PR help!

There will still be a symbiotic relationship between the Foundation and the open source projects, but if the Foundation is not going to provide the leadership and resources to maintain the core, how can we do it ourselves? What are the mechanisms and rewards we need to put in place?
One thing that a number of people have concluded is that we need a repository that is not constrained by the IP process. That should be easy to do (google code or github). What else?

This post has been slightly revised based on feedback. Some comments may refer to a previous version.

How to Improve Eclipse Day

Some people thought my previous post was too negative, so I am trying again: same ideas, different wording.

I attended and spoke at Eclipse Modeling Day in New York. The speakers were all knowledgeable and sincere: my favorite was "Building DSLs with XText" by Heiko Behrens of itemis.

I think these Eclipse Days and Eclipse Demo Camps and other smaller, frequent, regional events are the way to go - I think the pendulum is swinging away from expensive centralized annual conferences.1

Along with the shift to local conferences is the shift away from powerpoint bullet presentations: in this era of ubiquitous information, there's no reason to go to a single location to watch presentations. You can watch presentations at your desk, you can read presentations on your iphone, ..., there's no shortage of great information available. People are going to a live presentation to do something other than what they can do at their computer.

Thus the sole purpose of gathering people together at a Day or a Camp or a Conference is for people to meet people and therefore the entire Day/Camp/Conference must be designed for maximal people meeting. Organizing for people meeting means that you wouldn't spread ten talks over two rooms because that splits the (already smallish) crowd into two. Two smaller sub-groups reduces the common experience base and thus reduces the hallway conversations... Etc. It's all about designing an experience for people to meet people.

Shorter talks, single track, inducements to start conversations, ... that's what makes a great Day.

Datablindness

During my time with the Foundation, I was tasked with producing a monthly graph of metrics for Mike to present to the Board. These metrics were unproductive in the economic sense in that the metrics never produced any actions. It was, as Eric Ries says, "Datablindness". For example, the Board wanted to know the total number of committer accounts which doesn't have any connection to how much good work is getting done in the projects.

What would be a useful metric - something that is actionable if it goes outside of the desired/nominal range?

This post has been revised based on feedback (I had used the word "useless" where I now use the word "unproductive"). Some comments may refer to a previous version.

Eclipse Needs More Diversity

Here's one reason that we need more diversity at Eclipse: "I can't believe my eyes, Conforming to the Norm". We should be constantly questioning the status quo rather than just conforming - productively, not destructively, but definitely actively.

This post has been revised based on feedback. Some comments may refer to a previous version.

December 03, 2009

Tweaking a ThreadPoolExecutor

In some cases you need to execute multiple tasks in parallel and wait until all off them complete. Using the ExecutorService and its implementation ThreadPoolExecutor from the java.util.concurrent makes it really simple:
  ExecutorService executor = new ThreadPoolExecutor(numberOfThreads, numberOfThreads, //
    60, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());

  ArrayList<Callable<Object> tasks = new ArrayList<Callable<Object>();
  tasks.add(new MyTask1(..));
  tasks.add(new MyTask2(..));

  for (Future future : executor.invokeAll(tasks)) {
    future.get(); // will rethrow an exception raised by task
  }
  ...
The only drawback of the above approach is that executor will always use N+1 threads to execute your tasks. So, if you need to execute one task, it will take thread from the thread pool and will also block a current thread. When we'll have multiple such requests going in parallel, the number of extra threads is becoming significant.

To address this issue I tweaked the ThreadPoolExecutor.invokeAll(..) method to use current thread for executing one of the tasks. In result it uses only N threads to execute all tasks.
public class TweakedThreadPoolExecutor extends ThreadPoolExecutor {

  public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException {
    if(tasks.size() == 0) {
      return null;
    }

    List<Future<T>> futures = new ArrayList<Future<T>>(tasks.size());
    boolean done = false;
    try {
      Iterator<? extends Callable<T>> it = tasks.iterator();

      FutureTask<T> current = new FutureTask<T>(it.next());
      futures.add(current);

      while(it.hasNext()) {
        Callable<T> t = it.next();
        RunnableFuture<T> f = newTaskFor(t);
        futures.add(f);
        execute(f);
      }

      current.run();

      for (Future<T> f : futures) {
        if (!f.isDone()) {
          try {
            f.get();
          } catch (CancellationException ignore) {
          } catch (ExecutionException ignore) {
          }
        }
      }
      done = true;
      return futures;
    } finally {
      if (!done) {
        for (Future<T> f : futures) {
          f.cancel(true);
        }
      }
    }
  }
  ...
The only drawback of this approach is that it won't be possible to cancel task executing in a current thread, but in many cases it is a reasonable price to pay for savings on additional Threads.

Editing HTML Inside of JS Literals

It often happens that we need to edit HTML code inside JavaScript literals. With Maia this is at last possible, and even with pleasure!

Completion, quick documentation, and navigation for HTML, CSS and even JavaScript inside JavaScript literals is at your service :)

In Reply To Mike

Wow, you seem upset. I'm sorry that you're upset. Upsetting you was not, and has never been, my goal. You might not believe that right now, but it's true. My goal has always been to create discussion that would bring about positive changes in the Eclipse ecosystem. Lately, I've also become a committer on the just-provisioned b3 project, and I've been working on building a simple two command (git + ant) way to start with Eclipse development (a la the IntelliJ community edition), because having an easy-to-use build system is something that I've been trying to enable for a while: I want to make it possible for many more people get started contributing to Eclipse because I believe that will improve the ecosystem.

I'm sorry that you find my posts to be hurtful. It is not my goal to be hurtful. As you know (because you've provided some of that feedback yourself), whenever I've received feedback about my writing, I've worked to improve. If you have some constructive feedback about my latest post (or any other post), let me know.

I'm sorry that you are unhappy with my contributions to the community. On the flip side, I think you are doing a good job as the Executive Director: it's a tough job and not one I'm interested in. The Foundation would not be what it is today without you and everyone knows that.

I look forward to better times ahead, both for the Eclipse community, and the Eclipse Foundation and all its members and employees.

December 02, 2009

Flex CSS Support in Maia

Editing CSS files in Flex applications becomes easier with the help of some new Maia features.

First, completion for CSS selectors, properties, and property values. For example, if you press Ctrl+Space in this context, you get all class names from
a default namespace http://www.adobe.com/2006/mxml + global selector:

If a CSS property has a color format, IntelliJ IDEA helps you to select a color:

You can look up documentation for default Flex CSS selectors and properties. Just press Ctrl+Q in editor or completion pop-up window:

You may easily navigate from CSS properties and selectors to their declarations in ActionScript. All you need is to press Ctrl+B. Note that if there are several declarations to navigate, you will see a pop-up list.

Also, IntelliJ IDEA provides validation of CSS selectors and properties:

Note that these features are available only in CSS and MXML files under a Flex module, or module with a Flex facet.