May 17, 2012

IntelliJ IDEA 11.1.2 released

Today we’ve released a new update for IntelliJ IDEA 11, version 11.1.2. Noteworthy changes in this update include:

  • BuildConfig.java support in the Android plugin;
  • Adobe AIR Native Extensions support;
  • Improved compatibility with GNOME 3 and Ubuntu 12.04;
  • Improved Subversion 1.7 support;
  • Improved Perforce integration performance;
  • Many bugfixes related to Maven, Android, JavaScript, Flex and other areas of the IDE.

You can download the new update or install it directly from the IDE using the “Check for Updates” action. The complete release notes are also available.

May 16, 2012

Debugging Vert.x apps with Eclipse


+Pascal Rapicault has me hooked on Vert.x, http://vertx.io. It looks like it can be a great competitor to node.js allowing you to use the same asynchronous web programming model not only with JavaScript by any of your favorite JVM languages, including Java believe it or not!

At any rate, tonight I started to see if I can use Eclipse to develop apps in Vert.x. It turned out to be a lot trickier than I thought so I figured I'd capture what I did here.

First, you need to create a User Library for Vert.x. I just looked at the bin/vertx script to see what it added to the Java classpath to see what jars to add to the library. After that I was able to create a Java project and add the library to the build path and code up my little hello world app (which indeed is very node.js like).


Launching is pretty tricky. First, Vert.x doesn't want your app to be on the classpath when it starts up. Weird and that means you have to remove your project from the Classpath. But you do then need to add in your Vert.x user library using the advanced option so it can launch Vert.x's main, which is VertxMgr.




And you need to add your project build output with the -cp application option, which I passed ${project_loc:/vertxHelloWorld}/bin, so it can find your Verticle class.



Finally when you debug, the Default source path matches your Classpath. Since you removed your project from the Classpath, you have to add your project to the sources manually in the Source tab.


I imagine someday, someone will create a Launch Configuration that will do this all for you but if you put some muscle in it, you can get up and debugging your Vert.x app in Eclipse now. Now, if I can debug my client-side JavaScript in the same session...

May 07, 2012

A Facelift for Planet Eclipse

It’s been a while since Planet Eclipse got the look it has today. There is some work ongoing to refresh the look. It can be previewed on our beta site at http://planet.eclipse.org/planet-new/.

Please give us your feedback in bug 378285.

IntelliJ IDEA 11.1.2 RC is available

We are glad to announce the RC build of IntelliJ IDEA 11.1.2.

This build includes many fixes in Git support, as well as Adobe AIR native extensions support.

You can download the new build from the EAP page or update from the IDE using “Check for updates”.

May 03, 2012

Get Involved into IntelliJ IDEA Community!

As you’re probably aware, lots of people use IntelliJ IDEA. Members of our community always have something to share. You can always share feedback, get answers to your questions or help other people with their problems.

We want to see our community well-connected and organized. So we’ve decided to remind you about the channels you can use to communicate with our team and each other to resolve any problems and share experiences.

YouTrack

First of all, the most valuable channel we have and use to improve IntelliJ IDEA is our bug tracker YouTrack. Feel free to submit feature proposals you think are important, or report any problem you encounter while using the product. This is the fastest way to get your problem solved. Don’t hesitate to file even the smallest problems. IntelliJ IDEA developers are always on the lookout for new issues, and respond quickly.

Tip: As we welcome help, we also show our appreciation. The most active contributors are rewarded with free product licenses from time to time.

Twitter

Another popular channel is Twitter. This communication tool is not only efficient but fun to use too. In addition to the official IntelliJ IDEA account @intellijidea, which we use to promote events and new features, there is also the hashtag #intellij, meant for sharing feedback and useful information about IntelliJ IDEA with others in real time. Today this is probably the fastest and most interactive way to share with the community. Follow us and other users to know what’s going on right now!

Developer Community

Developer Community is our own discussion forum which lets you talk directly to IntelliJ IDEA team, as well as share experiences and knowledge with other users of the IDE.

StackOverflow

If you have a question about the product, StackOverflow is probably the first place you should check out. Use the tag intellij-idea for your question and get help from IntelliJ IDEA developers and other users. Most likely, someone has previously raised a similar issue and a solution is already available.

Official Team Blog

Our official IntelliJ IDEA blog is the main place where we post news on events, product discounts, new features, Tips & Tricks and other insights about IntelliJ IDEA. The blog has an RSS feed, so you can choose the most convenient way for you to receive updates.

Internet Relay Chat (IRC)

For fans of Internet Relay Chat (IRC), the #idea-users channel is available at freenode. You can use this web client for fast access or any other IRC client.

We review all feedback and requests, and do our best to grant all your wishes. That’s how we continue to provide you with the best product.

Stay with us!
IntelliJ IDEA Team

April 26, 2012

New Docs and Updates with JavaFX 2.1

New documentation has been added with the JavaFX 2.1 release.

  • The Getting Started guide has grown into a series of introductory tutorials.
    • Hello World, JavaFX Style introduces you to the basic structure of a JavaFX application. An added benefit of this tutorial is that enables you to test that your JavaFX technology is installed properly.
    • Creating a Form in JavaFX teaches the basics of screen layout, how to add controls to a layout pane, and how to create input events.
    • Fancy Forms with JavaFX CSS is all about making your JavaFX application look attractive by adding a Cascading Style sheet.
    • Using FXML to Create a User Interface shows the benefits of JavaFX FXML in action. Here you use FXML to create the same login user interface as in the earlier section, but this time separating the application design from the application logic.
    • Animation and Visual Effects is the original Colorful Circles tutorial, which shows how to create transparent, colorful circles that move on a black background.
    • Deploying your First JavaFX Application shows how to deploy the Getting Started tutorials.
  • New Tree Animation Example chapter in the Creating Transitions and Timeline Animation in JavaFX document. The chapter describes the Tree animation sample application and provides some tips and tricks regarding animation in JavaFX.
  • Working with Layouts in JavaFX has a new chapter that describes how CSS can be used to style the different types of layout panes. Source code and NetBeans projects have also been added to each chapter to provide the code used in the examples.
  • Getting Started with FXML has been expanded to include the following chapters:
    • FXML—What’s New in JavaFX 2.1 — a list of FXML enhancements in JavaFX 2.1 and incompatibilities with previous releases.
    • Creating an Address Book with FXML — a tutorial that shows how to populate a table with data, sort the data at application startup, align the data in the table cells, and add rows to the table.
    • Deployment of FXML Applications — a description as to why some FXML applications need digital signatures. An alternative to signing the application is also presented.
  • The JavaFX for Swing Developers tutorial provides an overview of JavaFX benefits available to GUI developers, illustrates the JavaFX–Swing interoperability, and shows how to enrich an existing Swing application by taking advantage of JavaFX functionality.
    Send us your feedback to let us know which topics and use cases you would like to be discussed in this document to help Swing developers adopt the JavaFX technology.
  • New Combo Box chapter was added to the JavaFX UI Controls tutorial. Read this chapter to learn how to create combo boxes in your UI, style them, and implement cell factories. All the samples of the JavaFX UI Controls tutorial are available in one NetBeans project now. Download UIControlSamples.zip to explore JavaFX UI controls in action.
  • Refer to Using JavaFX Charts to lean more about the new types of charts supported in JavaFX 2.1: stacked area chart and stacked bar chart.
  • Study the additions to the Web Component tutorial to learn how to perform upcalls from JavaScript to JavaFX.

Our special announcements:

  • JavaFX for Mac is installed with JDK 7u4. See JavaFX SDK 2.1 Installation for Mac OS X for more information.
  • JavaFX Scene Builder 1.0 Developer Release documentation is now available as part of the JavaFX documentation offerings. JavaFX Scene Builder is a visual layout tool that lets you quickly design user interfaces for a JavaFX application.  Simply drag and drop UI components to a work area, modify their properties, apply style sheets, and the FXML code for the layout is automatically generated in the background. You can then bind that UI layout to your Java application's logic. Learn more by reading the JavaFX Scene Builder User Guide and also by creating a simple issue-tracking application using the Getting Started with JavaFX Scene Builder document.

You can download JavaFX 2.1 from OTN. For all tutorials and API documentation, see http://docs.oracle.com/javafx.

April 25, 2012

IntelliJ IDEA 11.1.2 EAP 117.281

Today we’ve released the next EAP build of IntelliJ IDEA 11.1.2. Among the usual amount of bugfixes, noteworthy changes are support for BuildConfig.java (added in a recent release of Eclipse ADT) in the Android plugin, an updated version of SVNKit for better Subversion 1.7 support and a workaround for a JDK 6 bug that caused mouse events to be received with incorrect coordinates on some GNOME 3 versions.

You can download the new build from the EAP page or update from the IDE using “Check for updates”.

April 17, 2012

Code Coverage for JavaScript Unit Testing

This is a cross-post from WebStorm & PhpStorm blog, originally posted by Sergey Simonchik.

Measuring JavaScript code coverage naturally complements unit testing. It provides a clear picture of which parts of your code remain untested, and helps you focus additional tests on the uncovered code.

From now on, users of JsTestDriver can measure code coverage visually, right in the editor with JsTestDriver plugin for IntelliJ IDEA. Make sure you have installed 11.1.2 EAP with the latest version of the plugin.

To illustrate the case, we have created a sample project for you.

When you open percentage-test.js for the first time, you will see error highlighting on the TestCase method call expression. Position the caret on the error-highlighted code, press Alt+Enter/Option+Enter and choose “Add JsTestDriver assertion framework support” from the list of available intention actions.

A global JavaScript library named “JsTestDriver Assertion Framework” will be created and associated with a project. To view it, open the Settings dialog (File | Settings or IntelliJ IDEA | Preferences) and select JavaScript Libraries.

Before you can run any of your tests, you need to start the test server and capture at least one slave browser. The server does not have to reside on the machine where the test runner is located; similarly, the browsers themselves may be located on different machines.

Starting JsTestDriver server locally

To launch the JsTestDriver server, look for the tool window at the bottom of the screen.

Click the green arrow to the left of the address bar to start a local server. The status bar turns yellow to let you know the server is running, but has no slave browsers.

Click the browser icon you want to capture. Alternatively, you can copy the capture URL and paste it in a browser. The status bar turns green, and the corresponding browser icon lights up. Now you’re ready to run tests.

Running tests with code coverage

To run tests, right-click percentage.jstd and choose Run ‘percentage.jstd’ with Coverage. Tests will be run against the local JsTestDriver server and you will get a tree diagram.

It also shows which lines were exercised by your unittests, and which weren’t, in two places. First, in your source files, it adds a green bar (exercised) or red bar (omitted) to the left of the source lines:

You can also see test coverage statistics by file and by directory in your Project View:

Excluding files from code coverage

If you use a JavaScript library in your code (e.g. jQuery), you don’t need to measure code coverage for library code. To exclude a JavaScript file from the coverage, open JsTestDriver Run Configuration you intend to run, select the Coverage tab, and add the file to the excluded file paths.

We’d appeciate to hear responses from you in our issue tracker ;).

Test with pleasure!

April 16, 2012

IntelliJ IDEA 11.1.2 EAP 117.216

Today we’re beginning the Early Access Preview for the next bugfix update of IntelliJ IDEA, version 11.1.2. The new build includes many bugfixes, in particular related to Android, Perforce, JavaScript and Flash/Flex integration. You can download the new build from the EAP page or update from the IDE using “Check for updates”.

April 12, 2012

Attaching the sources of Node.js core modules

This is a cross-post from WebStorm & PhpStorm blog, originally posted by Sergey Simonchik.

When developing a Node.js application it can be convenient to have code completion, validation and debugging capabilities for Node core modules (fs, path, http, etc).

Unfortunately, these modules are compiled into the binary. So you have to download the Node.js source code and attach it to the project (all the required sources are located in the lib/ folder). But every time you decide to upgrade your Node installation, you have to repeat these steps - and don’t forget to detach previously attached sources to avoid confusion in code completion and navigation!

Well, from now on there’s an easier way to attach the Node.js sources to your project.


1) Open the Node.js settings dialog by clicking this icon on the toolbar:


Alternatively, you can open the Settings dialog (File | Settings or IntelliJ IDEA | Preferences) and select JavaScript | Node.js.

2) Specify the path to Node.js interpreter and the Node.js version will be determined automatically.

3) Click Configure and the following dialog opens:

4) Click the ‘Download and Configure’ button to download Node.js sources to the IntelliJ system local folder. A JavaScript library named “Node.js 0.6.12 Core Library” will be created from the extracted source files of core modules.

Now, to make it work the right way, define a usage scope for JavaScript library just created. By default the whole project will be added to the usage scope. You can tune the usage scope by clicking the ‘Edit usage scope’ hyperlink:

OK, now let’s try to code-complete methods from http core module:

Our work is done here.

Attaching the sources of Node core modules from the editor

An alternative way to attach these sources to the project is to invoke a quick-fix:

Please make sure you installed the latest NodeJS plugin from the plugin repository.

Develop your Node.js applications with pleasure!

April 05, 2012

Easier JavaScript Library Scope Configuration in IntelliJ IDEA 11.1

This is a cross-post from WebStorm & PhpStorm blog, originally posted by Konstantin Ulitin.

As you may know from the previous post about JavaScript Libraries in Intellij IDEA 10, the main benefit of specifying JavaScript libraries in your project is to populate a completion list with only relevant members. We have reorganized the configuration panel at Settings|JavaScript|Libraries, so it hopefully become easier to use.

If you simply want to select a library for the whole project, check the corresponding box. For more complex library scopes configuration, click Manage Scopes… button.

Also, for per-file scopes settings, you can use JavaScript file context menu triggered by right-clicking in the editor. Note that some items are disabled because their scope is set at upper level (project or directory).

Try out this featuer with IntelliJ IDEA 11.1. We’d appeciate to hear responses from you in our issue tracker ;).

April 04, 2012

Smarter JavaScript completion in IntelliJ IDEA 11.1

This is a cross-post from WebStorm & PhpStorm blog, originally posted by Konstantin Ulitin.

We are getting a lot of reports and ideas from you about the ordering of JavaScript completion options. So in IntelliJ IDEA we made small but important improvements. More relevant suggestions now appear at the top of the list in many cases.

1. Suggested names are ordered by their definition scope nesting, i.e. global variables are placed at the bottom of the list.

2. Object members are ordered by class inheritance.

3. If a local variable exists with the same name as the parameter of the called function, that variable is considered the most relevant.

All these rules also apply to ActionScript completion.

You can explore these features in IntelliJ IDEA 11.1. Your comments and suggestions are welcome in our issue tracker

April 03, 2012

Groovy support improvements in IntelliJ IDEA 11.1

Here I would like to tell you about some of the Groovy language support improvements available in IntelliJ IDEA 11.1.

Unused Symbol Highlighting

If a class, method or property is unused even if it is in fact public, you may notice it immediately with new unused symbol highlighting feature.

Introduce Parameter Refactoring

Introduce Parameter refactoring has now become more powerful. Just select a couple of statements, press Ctrl+P, and it will create a closure parameter for you.

Groovy Shell

Ever dreamed of quickly evaluating some code against your project without wasting time to start debugger? Now it is possible with Tools | Groovy Shell. It works even in pure Java projects without Groovy libraries.

Mutable State Highlighning

As you may know mutable state is always harder to manage than immutable. That’s why I like to have it as noticeable as possible. In Java I customize highlighting so that reassigned local variables are highlighted in a way different from assigned only once. Now you can do the same in Groovy Colors & Fonts settings.

Other

And of course you may already know about Chained Call Completion posted before.

That’s it! Enjoy all the new features with IntelliJ IDEA 11.1.

April 01, 2012

Windows Phone 8 will be based on Eclipse technology!

<h2> <a href="http://en.wikipedia.org/wiki/Windows_Phone_7">Windows Phone 8 OS</a> will be based on <a href="http://www.eclipse.org/e4/">e4</a> (<a href="http://www.eclipse.org/swt/">SWT</a> <a href="http://qt.nokia.com/products/">QT</a> <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=20486">port</a>) and next <a href="http://www.microsoft.com/visualstudio/11/">Visual Studio 11</a> release will be based on <a href="http://download.eclipse.org/eclipse/downloads/">Eclipse 4.2</a>. </h2> <p> Everybody knows that last year the "father of Eclipse" (<a href="http://en.wikipedia.org/wiki/Erich_Gamma">Erich Gamma</a>) <a href="http://blogs.msdn.com/b/jasonz/archive/2011/06/06/welcome-erich-gamma-to-the-visual-studio-team.aspx">joined the Microsoft Visual Studio team</a>. Not everyone knows however the <b>real</b> background of this story. According to my sources, this move was a part of a much bigger strategical change by Microsoft. </p> <p> The story begins somewhere in early 2010. Microsoft was looking for the "plan B" in case the new <a href="http://en.wikipedia.org/wiki/Windows_Phone_7">Windows Phone OS</a> would not have a big success. As first step, Microsoft installed <a href="http://en.wikipedia.org/wiki/Stephen_Elop">Stephen Elop</a> (who previously managed Microsoft Office Business Division) as <a href="http://conversations.nokia.com/2010/09/10/stephen-elop-to-join-nokia-as-president-and-ceo/">Nokia's CEO</a> (http://conversations.nokia.com/2010/09/10/stephen-elop-to-join-nokia-as-president-and-ceo/). </p> <p> Then Nokia announced to switch from <a href="http://en.wikipedia.org/wiki/Symbian">Symbian</a> to <a href="http://en.wikipedia.org/wiki/Windows_Phone_7">Windows Phone</a> as the main OS for their hardware (http://conversations.nokia.com/2011/02/11/open-letter-from-ceo-stephen-elop-nokia-and-ceo-steve-ballmer-microsoft/). </p> <p> While nobody really understood this decision, in reality Elop simply convinced Microsoft to use Symbian as the base for the next Windows Phone OS (behind the scenes) but still name it "Windows Phone". What a genius idea! So as the second step in the big strategical shift Nokia and Microsoft joined the forces and delivered the first update for Windows Phone (7.5) later in 2011. Still <a href="http://communities-dominate.blogs.com/brands/2012/03/brutal-truth-about-lumia-cannot-sustain-even-1-to-1-replacement-of-symbian-windows-phone-strategy-do.html">not a big success story</a>, and therefore Micronokia needed something else to boost sales. </p> <p> The next logical step is just brilliant: now as they use Symbian for Windows Phone, and Symbian uses <a href="http://qt.nokia.com/products/">QT</a>, why not use SWT on QT (https://bugs.eclipse.org/bugs/show_bug.cgi?id=20486) as the base for the new Windows Phone 8 GUI? The only problem left was a good IDE support - Microsoft needed a truly cross-platform IDE for Symbian UI (Windows Phone 8) development. </p> <p> Here is where next generation Eclipse IDE e4 project (http://www.eclipse.org/e4/) role becomes more clear: it not only gives you nice CSS based UI on Windows Phone 8, due it's flexible architecture it also can be used to as the base for Visual Studio 11 (http://blogs.msdn.com/b/visualstudio/archive/2012/02/23/introducing-the-new-developer-experience.aspx). </p> <p> So now we see how Eclipse can help Microsoft to develop the next generation mobile UI platform. Don't believe me? Compare first pictures from Microsoft Visual Studio 11 (http://blogs.msdn.com/b/jasonz/archive/2011/06/06/welcome-erich-gamma-to-the-visual-studio-team.aspx) with the early pictures for Eclipse 4.2 (http://download.eclipse.org/eclipse/downloads/drops4/S-4.2M2-201109161615/eclipse-news-M2.html). </p> <p> Of course Microsoft officials will never confirm this, but think - why should Microsoft open a new Visual Studio development lab in Zürich and hire Erich Gamma? Now it's pretty obvious. </p> <p>

March 07, 2012

Oracle Java Technical Writer

Do you enjoy writing code samples? Is Java your language of choice?

Does tech writing appeal to you? Do you want to contribute to the documentation for JDK 8 and beyond?

To apply:

  • Go to Open Positions at Oracle.
  • In the Search Job Descriptions By Keyword field enter IRC1579733.
  • Click the Apply Now link near the Job Description and Location information.

Live summary of Apple's San Francisco event

Rather than doing a time-based scrolling feed of today’s event, this time we’re bringing you a curated summary of the important announcements. For a more conventional scrolling liveblog, see CNET’s Apple iPad live blog. After the event, be sure to join Tech Republic’s Let’s talk iPad webcast.

Major announcements:

  • New iPad announced, available March 16, pre-orders open today starting at $499
    • Retina display (2048×1536 resolution / 9.7in = 264dpi). Existing apps will be scaled up automatically, but developers can add support for retina display
    • A5X dual core processor with “quad core graphics”, estimated at 2x faster than iPad2, 4x faster than Tegra 3
    • iSight camera: 5 Megapixels, backside illumination, 5-element lens, autofocus, face detection, 1080p video
    • Voice dictation: microphone icon in the keyboard
    • 4G LTE:  21Mbps HSPA+ and DC-HSDPA at 42Mbps, LTE at 73Mbps. Supported networks: AT&T, Verizon, Telus, Rogers, and Bell
    • 9.4mm thick, 1.4lbs. Comes in black or white.
    • Battery rated for 10 hours on 3G, 9 hours on 4G.
    • WiFi: $499 for 16GB, $599 for 32GB, $699 for 64GB
    • 4G: $629 for 16GB, $729 for 32GB, $829 for 64GB (=$130 premium)
  • iPad 2 reduced in price to $399 for 16GB WiFi, $529 for 16GB 3G.
  • New Apple TV announced, supports 1080p. Coming March 16, $99. Pre-orders open today.
  • iOS 5.1 available now, includes Japanese Siri
  • New iPhoto for iPad completes the iLife suite there, supports editing, beaming, and journals

Miscellaneous facts:

  • 315M iOS devices sold, 62M in Q4 2011
  • 55M iPads sold, 15.4M iPads in Q4 2011
  • 200K apps custom built to take advantage of the iPad screen
  • iPad 2 had 3.1Mbps on EV-DO, 7.2 on HSPA.

Notable demos on stage:

  • Namco showed “Sky Gamblers”, a flight sim game
  • Autodesk showed “Sketchbook Ink”, a drawing app that focuses on line art (available in April), supports exports up to 100Mpixels.
  • Epic Games showed “Infinity Blade: Dungeons”, a 3rd person RPG game
  • Apple apps such as iWork, GarageBand, iMovie (still $9.99) and new iPhoto.
    • Connect up to 4 iOS devices together with GarageBand over WiFi or Bluetooth for a live jam session.
    • iMovie for iPad can create movie trailers like the Mac version does.
    • New iPhoto app can beam pictures to other iPads, heavy use of gestures including bezel gestures. Edit, straighten, and fix. Supports up to 19 Mpixels.
    • Share pictures into a journal, annotate with text, maps, even weather info.

In case you’re wondering, it looks like the new iPad is just called “The New iPad” or “The 3rd generation iPad”, not iPad3 or iPad HD or any of the other names that were rumored before the event. You can call it the “4G iPad” if you like, but 4G is extra cost. The new iPad uses the same dock connector as the current iPads, which debunks another rumor.

The A5X is described as a “dual core CPU with a quad core GPU”. I’m not sure exactly what that means. Most GPUs are way more than quad core - for example the Tegra 3 has 12 graphics processors that operate in parallel. Also unknown is the chip’s clock rate and the size of the iPad’s memory. These details will probably come out next week when people start tearing them apart.

For more coverage see:

March 06, 2012

Google doubles down on entertainment, replaces Android Market with Google Play

Didn’t see that one coming. Instead of giving up on its heretofore failed foray into music, books, and video, Google announced today it was combining all of its entertainment offerings into one site: Google Play:

Starting today, Android Market, Google Music and the Google eBookstore will become part of Google Play. On your Android phone or tablet, we’ll be upgrading the Android Market app to the Google Play Store app over the coming days. Your videos, books and music apps (in countries where they are available) will also be upgraded to Google Play Movies, Google Play Books and Google Play Music apps. The music, movies, books and apps you’ve purchased will continue to be available to you through Google Play—simply log in with your Google account like always.

Despite being far-and-away the most popular part of the new service, Android apps are relegated to last place on the screen. The other items are not even available yet in most parts of the world (music is currently U.S. only, movies in the US, UK, Canada, and Japan, and books in the U.S., UK, Canada, and Australia). And don’t even get me started on the prospect of selling serious business applications on something called the “Play Store”.

Links to the Android Market are already being redirected to the new Google Play web site, and Google is rolling out updates to rebrand their apps on all Android devices running 2.2 and above. Developers should read the Google Play FAQ for Android Apps Developer page and the updated Android Branding Guidelines page.

March 03, 2012

March 01, 2012

Have you translated a bit of Eclipse lately?

Although Eclipse Juno will be released in three months, did you know that for many spoken languages, it is already translated at 75% and more? Thanks to the Babel project, translating Eclipse is easy and almost fun. If you have an Eclipse account, head over to the translation tool at http://babel.eclipse.org/, pick a language, pick a project, a version, and a file, and translate away.

If some English terms confuse you, simply select them and Babel will search for translation hints (shown below). To top it all off, your translated strings are ported over to other Eclipse projects if an exact match is found for the English string. So even if you're working on Eclipse 4.2, you're in fact translating Eclipse all the way back to 3.6, and perhaps even contributing to all projects, from birt to webtools.



When you're done translating, head over to the Babel download page and pick up the next Nightly Build and see your favourite Eclipse projects translated!

February 27, 2012

February 17, 2012

Wednesday's outage explained

Last Wednesday just after 9:30am Eastern time my SSH console to dev.eclipse.org became unresponsive. Both our primary AND secondary NFS servers were no longer responding, and as a result most of eclipse.org was off the air. Since the failed servers are physically elsewhere, it's not like we can easily walk over to the console to see what has happened.

Usually, when one server ceases to respond, the problem is with the server. When two servers on the same network segment cease to respond at the same time, it's anything but the server. But Matt and I took no chances and split up: I investigated the network side and the possibility of a kernel DoS/exploit, and he hopped in his car to go see what's happening on the server side. Fortunately, the servers are only 10 minutes away.

As it turns out, the Linux kernel crashed on both servers, each within minutes of each other. Here's a sample of what we saw in the logs:

Feb 15 09:34:58 kernel: [18446743997.844366] WARNING: at [snip]/kernel/sched.c:3878 find_busiest_group+0xc79/0xce0()
Feb 15 09:34:58 kernel: [18446743997.844370] Hardware name: X8DT6
Feb 15 09:34:58 kernel: [18446743997.844417] Pid: 51, comm: events/0 Not tainted


Both servers are physically identical and were brought online about the same time, so this whole thing smells like something I've heard of before. To make me feel even better, the Kernel bug that closely matches what we've experienced is still open today:

https://bugzilla.kernel.org/show_bug.cgi?id=16991

After restarting both servers, we discovered that our rather large OpenLDAP server's database has some data corruption, and some specific operations cause it to segfault. Those numerous LDAP crashes meant it was difficult for anyone to get anything done on Wednesday.

It's all fun :) Any bets on when this will happen again?

February 10, 2012

Can't wait for EclipseCon 2012

Now that my personal job situation is resolved, it's time for me to start thinking about EclipseCon. For so many of us involved on a somewhat day-to-day basis with Eclipse, this is the highlight of the year. This is where we get to put faces to names, where we get to see what each other are doing lately and to have a few debates over a few beer, to feel like we're part of the bigger Eclipse team that we are.

And it's a great chance for the people around the periphery, who use Eclipse technologies in their work or play, or use it as the foundation to build their great products on, or even thinking of doing so, to join in with us. One thing I've seen and, of course, do over the years is always give anyone who comes up to us a chance to join in on the fun. You have to, it's how you build communities.

I always love hearing how people are using the CDT in their products and the problems they encounter and the successes they have had. It's so much easier to participate in person than over a mailing list since it becomes a real discussion in real-time. And I hope that the people who come and walk away with some answers, or learn some new things, or had their chance to influence others in the Eclipse world, make it that much easier to justify the trip.

And of course, there are the sessions and the tutorials and the BOFs and a few symposia and summits and showcases, there's a lot of opportunity to participate. As an example dear to my heart, we are having a CDT Summit on the Tuesday (I'll post here and on twitter @dougschaefer the details once I know them) where CDT contributors, and even those who having a passing fancy they may contribute, will get together and talk about the next CDT release for Kepler. There's some cool stuff going on there which you will also see in the sessions like multi-core debug visualization and more. And, as usual, we'll have a BOF where anyone can come and join in the CDT discussion.

So, if you haven't already, register now. I hear the hotel rooms are going fast at the conference center so get in early so you can stay up late. And I look forward to seeing you there! http://www.eclipsecon.org/2012

A status on JAX-RS 2.0. Early Draft.

With the Early Draft of JAX-RS 2.0 review period closed for a little while now, here's Arun's walk through the technology's new and improved features.

ALT_DESCR

The Client API seems to be a very popular feature and one that seems pretty stable at this point. Filters and Handlers is another set of new features enabling interception of requests and responses while Hypermedia, a founding principle for REST, is better supported. JAX-RS 2.0 also offers the ability to validation parameters with BeanValidation, introduces asynchronous processing (returning Future objects on the client side) and finally better connection negotiation. Read all about it here.

JAX-RS has become an important component of the Java EE platform and the cloud theme going forward is only making it even more relevant. Check out this earlier post for Marek's (co Spec Lead on JAX-RS 2.0) take on where the JSR stands.

February 09, 2012

GlassFish 3.1.2 RC3 is here

GlassFish 3.1.2 Build 21 is now available and flagged as RC3.
Get it while it's hot, it may be the final build if we don't run into major issues. We've never been so close to a final 3.1.2 release! (do I sound like a broken record or am I just excited that this great release is finally here? ;)

ALT_DESCR

February 06, 2012

EclipseCon location change -- poll results

Last week I issued a webmaster "whacky poll", asking you your thoughts on the location change for EclipseCon this year. The results are in!

97 /doesnt-matter-where-it-is-as-long-as-there-is-enough-beer

Earning the #1 spot on the poll, I think it's clear what the priorities are...



93 /doesnt-matter-where-it-is-as-long-as-the-awesome-p2-guys-are-there

That wasn't actually an option on the poll.. However, it seems to have gone viral. Or maybe someone was stuffing the ballot box :)



50 /no-matter-where-eclipsecon-is-webmasters-will-still-buy-us-beer-right?

I think that is one of those "life certainties"...



38 /yay-less-time-on-an-airplane
27 /oh-no-more-time-on-an-airplane

Looks like more people will be spending less time on a plane. In other news, 27 people will be coming from California :)



38 /the-weather-better-be-warm-and-the-beer-cold
29 /if-its-not-in-california-im-not-going

You know, for the last few EclipseCons in California, the weather wasn't all that warm. I hope Washington treats us right.


In the "why-not-do-eclipsecon-in-(insert-tropical-exotic-location-here)" category:
  • Melbourne, Australia
  • Ibisa
  • Fiji
I'm sorry, but Toronto doesn't qualify as either tropical nor exotic...


Others have also improvised their own entries... Such as this go-green one:

1 /yay-less-carbon-dioxide-maybe-we-can-survive-on-this-planet


1 /hi-denis-i-will-ask-my-obeos-colleagues-to-buy-you-some-beers


You can always count on the Obeo guys to give back to the community.



A few people wrote in to say they couldn't attend this year, but this entry stood out:

1 /alblue-cant-make-it-again-will-cover-remotely

That's a shame -- we'll be missing the unique ties again this year.


That wraps up my whacky poll for EclipseCon! I'm looking forward to seeing everyone there.

February 04, 2012

Eclipse at FOSDOM 2012

It’s my first out of two days at FOSDEM 2012. It took us quite a ride to get from the hotel to the ULB. We tried to order a taxi but the people at the reception told us that it would take at least 1.5 hours till a taxi arrives. Luckily, Mike and Andrew know someone who has been at FOSDEM a couple of times before. He guided us safely to ULB using a combination of walking, metro, tram and more walking.

We quickly setup an Eclipse stand over there and Mike, Andrew and myself are showing demos and talking to people. BTW, thanks to the FOSDEM organizer to have it well prepared so that we just needed to setup our banner and our notebooks for the demos.

So far we have a great mixture of questions from developers using Eclipse for their day-to-day work, programming questions of Eclipse plug-in developers and people interested in Orion. There are also people stepping by that have no questions – they introduce themselves as happy Eclipse users and appreciate what the committers of the various projects have built over time. Thanks for those kind words folks!

4-IMG_1246 3-IMG_1243 1-IMG_1241 2-IMG_1242

 

February 02, 2012

January 31, 2012

FOSDEM

I'll be fighting the cold and the snow to get to Brussels this weekend for FOSDEM 2012. See you there!

January 05, 2012

Authentication changes at Eclipse.org

As you may have heard, we've changed our authentication scheme at Eclipse.org. Instead of having Committer accounts in one database and Bugzilla users in another, both of those databases have been brought together.

We did this for many reasons: it felt strange to ask users to create a "Bugzilla" account to be able to participate on Forums; it was confusing; our sites, such as Wiki and Marketplace, needed to keep track of two auth sources; Eclipse Committers essentially had two accounts, which made no sense; for every new software tool we'd install, we needed to write custom plugins to allow authentication against the Bugzilla database.

Now everything is consolidated, and although we don't have a complete Single Sign On solution, this change has paved the way towards that. It was also a required change in order to deploy the Gerrit code review system.

As with any migration, it wasn't without its bumps and glitches, but overall it went well. Thanks to everyone who tested, re-tested and wrote in to report problems and bugs.

December 04, 2011

JFreeChart 1.0.14 - New Features II

Another key feature in the JFreeChart 1.0.14 release is the option to render drop-shadows within plots, aimed at charts that will be rendered on-screen. The effect of this is quite subtle, but noticeable if you compare two charts directly, one with the shadows and one without:

Compare this to the same chart generated without the drop shadow:

I had resisted adding this feature in the past, because it means dropping down to bit-map level operations, and the rest of JFreeChart is based purely on vector primitives...but in the end, there were too many people that wanted this and, like most things in JFreeChart, the developer can configure it however he or she prefers.

Utilising this feature will incur some overhead in memory usage, but is very simple to switch on - simply add the following line near the start of your application (before any charts are created):

ChartFactory.setChartTheme(new StandardChartTheme("JFree/Shadow", true));

There are other more direct ways as well, for example see the setShadowGenerator() method in the XYPlot class.

November 25, 2011

Meeting the people is what this is all about

I attended the Ottawa DemoCamp yesterday, where a bunch of Ottawa Eclipse community members gathered for a bit of food, a bit of beer and a lot of cake to celebrate Eclipse's 10th birthday.

These informal gatherings are not only about food, beer (and cake) and idle chat -- there is some quality learning happening at these events, and a great opportunity to meet some interesting people.

Yesterday I made some new friends who work on Eclipse technologies for the federal government of Canada right here in Ottawa. The Department of National Defense, no less (yes, Canada has one of those).

I also had a short but interesting talk with Ken Hussey about his work on Puppet-related tools at Cloudsmith. I've had Puppet on my list of tools to investigate for quite some time now, and seeing Cloudsmith in that space may help precipitate things.

A gentleman named Antoine also talked to me about Sonar -- a code quality and analysis platform. He made it sound really good, and the screenshots make it look even better. Definitely on the radar.

Ericsson was also in the house, and I had a short conversation with someone whose name I unfortunately cannot remember. But she was very nice, and explained that they use Eclipse and the CDT. I wanted to introduce her to Mr. CDT ("I pity the fool") himself, since he was also present yesterday -- but alas, that never happened.

Lastly, being seen in public with such local celebrities as Kim Moir, John Arthorne and Pascal Rapicault is always a great way to boost one's image.

Cheers!

November 15, 2011

Crowdsourced translations make Eclipse in English better too

A few years ago I actively worked on the Babel project -- a crowdsourced solution to Eclipse globalization. Since then the translation tool has been doing its job -- allowing the community to contribute translated strings, which are then turned into downloadable language packs.

Lately, one of our contributors in Japan has been opening a series of bugs outlining issues with the English strings in the message files. Pure awesome.

You have to love the power of OSS -- the more eyes we have looking at code, the better it becomes.

November 02, 2011

My first EclipseCon Europe!

I'm in Germany this week for my first EclipseCon Europe. I had heard rumors that the Wifi's performance wasn't comparable to that of EclipseCon NA so I came here to help.

Just to be clear: I'm not involved in the network or Wifi setup at either conference, but I do bring a copy of download.eclipse.org with me. I then set up a mirror and some redirects so that your Eclipse bits aren't sent over the Internet.

This morning was a typical EclipseCon Day 1: although the conference Wifi is great, as attendees start up Eclipse, the p2 downloads pile up against the poor Internet connection, making it nearly impossible to do anything else. But after some caches, redirects and tweaking compression on www.eclipsecon.org, the local mirror is putting out over 800KB/sec and the rest of the world feels accessible again.

I'll keep monitoring the situation throughout the conference and tweak content as I can to help make sure your Wifi experience at econ2011 is the best it can be.

October 28, 2011

10 years of Eclipse as seen by /etc/passwd

If you've worked on a *nix system, you're likely familiar with the /etc/passwd file -- the main list of accounts on that system. Although eclipse.org does not use the passwd file for user accounts, examining the compatible getent passwd tells the story about who was involved in setting up the original dev.eclipse.org way back in 2001.

Keep in mind that we delete accounts of committers who have been completely decommitterized; therefore, the people you see mentioned below are still active participants in the Eclipse community even after 10 years.

First up, the standard root, mysql and other system accounts, then here's what I see:

500:kmoir


I wasn't there in 2001, but judging by her UID=500, I'm guessing Kim Moir was the one who inserted the first Linux CD in the drive and installed a computer called "dev.eclipse.org".

Next up:
512:mmartin

Mark was a webmaster@eclipse.org for a long time. Although he and his account are no longer active on dev.eclipse.org, he gave me my webmaster training at the IBM Queensview lab back in October 2004. So his account stays for my own nostalgia :-)

Judging by Mark's UID=512, I'm guessing a few other webmasters were blessed with accounts on dev.eclipse.org before his.

Next up:
1000:droy
1002:jeff

I am an imposter in that list, since Jeff McAffer predates me by a few years. But I have root@eclipse.org, so I faked my UID=1000. Deal with it :-)

After creating Jeff's account, Kim wasted no time getting things set up:
7003:cvs
7004:viewcvs
7005:anonymous

The jump from UID=1000 to UID=7003 is likely an artifact of an IBM security policy for user ids, since there is nothing below 7003.

Then, we have the first Eclipse committers:
7008:pmulet
7012:mcq
7020:dj
7026:johna
7033:ggayed
7034:veronika
7036:steve
7037:silenio
7043:dmegert
7047:daudel
7048:jeromel
7050:oliviert

Although some of them are not very active anymore, some of them still are, but one thing they all have in common is that they helped shape Eclipse as you see it today.

Mailing lists on dev.eclipse.org came a bit later in 2002 with the creation of a 'mailman' account, followed shortly by a 'webmaster' account. At that time, I'm guessing the real webmaster became a few people who perhaps occasionally shared the job.

7336:david_williams

David Williams and some of the still-active WTP committers are listed next, which likely happened in 2003-2004 when the WTP top-level project was created. Today, David Williams is a name recognized more than even Eclipse itself.

A bunch of BIRT committers are listed in succession, which matches up to 2004's creation of the top-level project of the same name.

8249:mmilinkovich

Although Mike was on the Eclipse scene long before I was, he only got an account on dev.eclipse.org when the Phoenix project was created and he became a committer. Bye Bye Frames!

The Eclipse superstar with the most letter Z's in his name... circa 2005 ... followed by our own Conference Queen Anne Jacko.
8444:caniszczyk
8636:ajacko

I could go on... But I wanted to highlight the first years. Besides, I must be the only sysadmin dumb enough to put user id's and UIDs in plain text on a blog.

Fast forward six years... and we're up to UID=9826. Who will have lucky account UID=10000 ?

October 19, 2011

Hudson building Hudson


Ok, so I'm easily impressed. I think it's cool.

October 03, 2011

30.8 Terabytes!

Last month, Eclipse.org servers have moved 30.8 TB of data to the Internet. 30.8 Terabytes! That is a first -- even during the yearly release, we've never moved so many bits in one month. And September was a short month :)


It's been a steady climb since we started tracking bits in 2006, but it appears that since early 2010, things have really taken off like a rocket.

So I decided to compare our monthly bit throughput with the size, on disk, of the Eclipse code repos.

Code size is increasing quite linearly, with a noticeable boost in size midway though 2009.

Next up is the same bit throughput and SCM size on disk, compared to our binary downloads footprint.



As we prepare for Eclipse's 10th anniversary next month, these numbers show that there's no slowing down the momentum that Eclipse has gained during that time. Cool stuff!

September 26, 2011

Jersey Micro Benchmarking Framework

A micro benchmarking framework has been created for Jersey/JAX-RS. This allows us to do continuous performance testing using hudson to make sure Jersey keeps performing well as we are adding functionality.  This test suite also allows us to test between different JAX-RS versions, which helps us catch any regressions in Jersey 2, with respect to Jersey 1. 

I am testing basic functionality such as media type to java type conversions, and vice-versa.  I am testing the most commonly used media types. MediaType conversions covered in testing baseline results include:

  • XML
  • JSON
  • Strings
  • InputStream

Not only is there added support for different payloads, XML, pure text, JSON payload, but I am also testing:

  •  HTTP methods + JAXRS annotations GET, PUT, POST, DELETE. 
  •  annotations like @QueryParam, etc.

I can increase our testing coverage, testing various features, as required.

I am utilizing Japex Micro-benchmark Framework to implement our testing suite. Japex includes a Maven2 plugin, which we use to run microbenchmarks from our maven build.   Hudson includes a Japex plugin to allow Japex Trend reports to be displayed within hudson.  Here is a snapshot of Japex Trend report for JUnit testing of  sample Root Element Collection method:

Japex Trend Report for Root Element Collection test

I'm trying to ensure that we eliminate "noise" from these performance number results.  Initially the numbers were less stable, as there were multiple executors configured on hudson slave, allowing multiple jobs to run concurrently. That has been changed to now run single executor on hudson slave where micro benchmark tests are run. Also, I have analyzed hudson slave to ensure no cron jobs are triggered during performance testing. This is a work in progress, striving for more deterministic results moving forward.

I've configured the Japex hudson plugin to notify us when there is more than a 1% change in performance via the configure page of our hudson job:

Japex Hudson plugin Config screenshot

The usage of Hudson with Japex allows us to continuously monitor the performance of Jersey as it moves forward. 

Special thanks to Santiago and Jakub for their help in putting the pieces together.

September 23, 2011

Going to EclipseCon Europe: is there enough beer in Germany?

In the years past, I was told I could not attend EclipseCon Europe because there wasn't enough beer in Germany to satisfy this thirsty Canadian. I'm not sure how much truth there is to that, but it's what I was told.

Anyway, as the European edition of my favourite gathering has grown, so has the need for some official IT support. I'll be flying in Tuesday, Nov. 1 to help (however I can) with WiFi setup and to set up a download mirror like I do at EclipseCon North America. The download mirror is a real Internet saver -- these conference venues typically don't have tons of Internet bandwidth, so bringing a local copy of all your favourite Eclipse bits helps a lot. I look forward to seeing all my European friends, and to making some new ones!

In the interest of saving thousands of dollars in airline fees, I'll be staying over Saturday for some local sightseeing. Since this will be my first time in Germany, if you have any hints as to what I should do during my stay, please post up in the comments.

Edit 9/23: Apparently comments were disabled on my blog. Sorry 'bout that.

August 03, 2011

Debugging Eclipse Indigo plugins on OSX

I do not why this took me so long to figure out, but I have been having a problem with Indigo that whenever I fire up the Eclipse Runtime workbench to debug a plugin it would crash almost immediately. At first, I thought it had something to do with my plugins, but eventually I took the time to do a clean install without any of my plugins and saw the problem just by creating a simple demo project in the runtime. Since I already had a working Helios installation, I just shrugged and went back to using that for now and set the problem aside.

Well, last week I got a new Macbook Air with Lion preinstalled and so I am setting up a new system from scratch. This time I only have Indigo installed and lo and behold I am still seeing the same problem. Realizing that there must be a simple explanation, I now looked closer and see that there is a simple explanation. For some reason, on Indigo when it Eclipse creates your default configuration it is not including the PermGen settings by default. So I was just crashing due to not enough PermGen space errors. Pretty obvious, it has just been a long time since I had seen these problems.

Adding "-XX:MaxPermSize=256m" to the -vm arguments in my Runtime Configuration has everything working great again.

June 21, 2011

Indigo early access to Friends of Eclipse

An email was sent out to the Friends of Eclipse, announcing early availability to the Indigo bits. Less than 2 minutes later, here is the resulting spike in usage on the Friends of Eclipse Mirror:



If you're a Friend, you can access the download links right now. If not, consider becoming a Friend today as part of the Indigo 500.

Torrent files are also up for early access to our p2p users.

June 09, 2011

We need cool screenshots of Eclipse

Have you looked at http://www.eclipse.org/screenshots/ lately?

Yes, it is old.

I was thinking that we could move that page to the Wiki (perhaps http://wiki.eclipse.org/Screenshots ?) so that everyone can submit cool-looking screenshots of Eclipse in action.

If you agree it's a good idea, I need your help to get started. If you create the wiki page and upload/post your Eclipse In Action screenshots, I'll set up redirects from the old page to the new page.


Anatomy of an outage - part II

Yesterday I posted about the first of two outages we've experienced last week. Today I'll post about the outage we had late in the early afternoon of June 2.


Similarly to our previous outage, we suddenly lost our ability to talk to our primary switch -- a Cisco 2970 24-port Gigabit switch, in service since October 2004.

We feared the worst -- a tripped power circuit caused by a faulty power supply. Again? Not this time -- the switch was simply 'frozen' with an orange alert lamp. After cycling the power, we were back in business.

But why did it just freeze? Was it beginning to show signs of fatigue? Matt and I took no chances -- with enough available ports on our much newer 48-port Cisco 2960 (part of a hardware donation made by Cisco for EclipseCON 2009), we migrated all the connections off to the new switch.

Accurate graphs and documentation allowed us to migrate port settings, VLANs and QoS rules quickly to the 'new' switch.

June 08, 2011

Anatomy of an outage - part 1

It happens to Facebook. It happens to Hotmail. And yes, it happens to Eclipse. Last week Eclipse.org suffered two distinct outages. Today I'll discuss the first one "briefly".

From a bandwidth point-of-view, this is what a normal 24-hour period looks like.


This is what we saw on the morning May 31:I had just walked into the office when I discovered we were completely offline. Since the Foundation's Ottawa office is wired directly into the Eclipse.org switching gear, I was surprised to discover I couldn't even talk to our switches. So I hopped in my car and drove to the Data Center, which is about 10 minutes away.

Turns out a few servers were powered off, as was our main switch and firewall -- the circuit breaker had tripped. When the technician reset the circuit, sparks spewed out of a power supply in our DS4 raid array. Not good.

We pulled the faulty component, reset the breaker and restored power to the switch and firewall. "Problem Solved" I thought. Not so fast.

For reasons unknown, our primary NFS server (which hosts shared files for CVS, Git, SVN, and many of our websites) was frozen. I found that strange, since they do not share the same power circuit. Heck, they aren't even on the same voltage rating. This specific server doesn't normally output video, relying instead on a Hardware Management Console (HMC) to communicate with the operator.

As luck would have it, the HMC was one of the servers connected to the downed power circuit, and filesystem errors were preventing it from coming back online. So I had no insight as to what my faulty NFS server was doing, or why it was frozen.

After a bit of waddling and trying to restart it, I decided to abandon the primary NFS server, and notified fellow webmaster Matt to begin the failover process to the secondary server. That is when services began recovering, about 1h45 minutes later.

To this day, we still haven't figured out what is wrong with our primary NFS server, although Matt has fixed the HMC. And the DS4 storage box is still operating on only one power supply (although another is on order and is expected to arrive soon).

We've decided to begin the process of acquiring new NFS server hardware. The 'old' servers are big, complex machines that have been in service 24/7/365 for almost 7 years. They have served us well, but they are showing signs of age, as memory failures, disk failures and backup battery failures are manifesting themselves more frequently.

Stay tuned for some explanations on the other complete outage, that came upon us just days later...

April 28, 2011

Back to Oracle!

Summary: I’ve loved my last five years at the Eclipse Foundation. It’s time for me to move on. I’m going to Oracle to work on OpenJDK and other things.

The longer version:

It was over five years ago that I joined the Eclipse Foundation. I had just finished an MBA and was working at Oracle in a well regarded technical swat team in Java middleware. The Eclipse Foundation had launched in my hometown of Ottawa, and here I was, eager to learn about open source, the rapidly changing business model of enterprise software, ecosystems and to do something fresh. So I took advantage of this unique opportunity and convinced Mike that I should help run the Eclipse Foundation membership.

My 5+ years at Eclipse were incredibly rewarding both personally and professionally. I’ve made countless new friends and acquaintances from all the organizations that I’ve had the pleasure of working with. I was privileged to be working directly with many great thinkers in the software industry, and learning about how big ideas, like Eclipse, happen.

All the staff at the Eclipse Foundation that I’ve ever worked with have been high performing and maniacal about driving the Eclipse Ecosystem forward. I believe the Eclipse Foundation has done great things by helping hundreds of organizations keep pace with evolving business models and to make available a lot of high value free software. I leave the Eclipse Foundation with complete respect and admiration for every single person there. They do incredible things with limited resources and many constraints. I will continue to be a fierce advocate and supporter of all things Eclipse.

I believe strongly that we are at the beginning of a renaissance period for Java. Once again there is real investment and participation in Java. There is a roadmap that has an immediate impact with Java SE 7, and plans far into the future – with many organizations and stakeholders keen to see it happen. Moreover, I’m convinced that once a world class modularity solution becomes part of core Java, we will see even more and faster innovation. It means great things from the biggest cloud, to the smallest device.

I have a matching skill set to help Java evolve for the decade to come, so I decided to jump at an opportunity to join the Oracle Java SE team. I will be working with OpenJDK and other things. I am truly proud to be working with folks like Dalibor Topic, Henrik Staal, Mark Reinhold and Adam Messinger.

The team I’m on has one simple mandate – keep Java the number one computing platform in the world. Period. I start May 9th, and will post some pointers when I land.

- Don

April 26, 2011

I've been hacked!

I was hacked today (or at least I learned of it today). Early this AM a SPAM was sent from my GMail account to all of the Contacts in my GMail -- which I believe is any address I have ever received an email from. Given all of the mailing lists I am on, this is a decent number of addresses. Since the email was DKIM-verified to come from GMail and it went to all my contacts, I have to assume someone was able to successfully login to my GMail. I have since changed my password a couple times, and turned on the 2-factor authentication feature. I would highly recommend everyone do this with their Google account if they have not. I also changed my password on every site I can think of, just for safe measure.

How did this happen? I have no way to know for certain, but I have a theory. The Sony Playstation Network has been down for several days now due to some kind of attack. My username for PSN was my GMail account and I was stupid enough to use the same password (or at least they matched last week, I may have recycled back to it). I mainly use PS3 and PSN for Netflix streaming. I suspect that when the site was first down last week that intruders were intercepting logins and they got the username and password. My main reason to doubt this theory is that hacking PSN seemingly was sophisticated to do, so why would they use the information they stole in such an amateurish way as to send an obvious SPAM that alerted me to the problem? I have to think they downloaded all my email and information before they did this. I wonder why they did not also change my password as it seems like they could have done so.

It is fairly disconcerting to wonder what private information, such as credit card numbers, that I might have in my GMail archive. For now, I at least think I have safely updated all of my accounts so that the passwords are different on every site.

Update (2011-04-26): Sony has now pretty much confirmed that this all originated with the hack of PSN. See this blog post: http://blog.us.playstation.com/2011/04/26/update-on-playstation-network-and-qriocity/ Of course it was still stupid on my part to use my GMail password anywhere outside of GMail.

Eclipse Forums upgrade gone bad.

A few weeks ago I set out to upgrade our aging Forums software. We're about 1.5 years behind the latest release, and with numerous bugfixes and new features, an upgrade seemed compelling. For instance, here are some of the things we're missing:

  • Per-forum search. Because of the size of our forums (650,000+ messages), the single database server would be crushed by the search queries.
  • Single database server. The current version only supports a single server, limiting scalability and preventing us from enabling search.
  • Broken NNTP bridge. Our forums are linked to the NNTP newsgroups, and attachment import/export is broken, as are many extended character sets.

Despite my best efforts, the upgrade failed miserably and I reverted back to the old version. The software we use, FUDForum, is a decent piece of code, but it has a rather unorthodox way of doing templates and themes, which leads to it being easily broken on our rather restricted multi-server PHP environment. When I set it up almost 2 years ago, I had to twist and contort it to fit. The result was a brittle piece of software that did what it is supposed to, as long as you walked on eggshells when managing it.

On the bright side, a brand-new install of the same software works like a charm on eclipse.org, without any of the previous twisting and contorting needed, and it simply feels more robust. I guess 2 years of development will do that to software. There's just something with the upgrade process + our hacked version that simply doesn't jive.

All told, we cannot simply continue using the current version. It works, but with many broken parts, and with many security holes now patched, it needs fixing. I can think of two options:
  • Option 1: Move to a different forum software. This would break links to all the existing messages, present a new UI to our users and would put us webmasters in unfamiliar territory by discarding the two years of knowledge we've accumulated with FUDForum.

  • Option 2: Install the new version from scratch, and re-import all the NNTP messages. This would also break links to existing messages, but it is known to work on our servers, and FUDForum (although not perfect by any means) is now well understood by the webmasters.
What is your take? Feel free to discuss with us on bug 342708.

March 24, 2011

Announcing EclipseCon Europe 2011, and EclipseCon North America 2012 Program Chair

As I mentioned this morning at EclipseCon, we're proud to announce EclipseCon Europe, 2011. New name, but same great conference. We wanted to demonstrate the equal importance of both our major events, and decided to unify on the "EclipseCon" brand. Bernd Kolb will be reprising his role as Program Chair and we hope he makes great use of the extra space. We sold out early last year, so plan to register early to avoid disappointment!

Also, we'd like to announce Doug Schaefer (CDT Project Lead) as the Program Chair for EclipseCon North America 2012 (exact dates and location TBA). We've had an excellent run of great Program Chairs who put their own touch on EclipseCon and we're looking forward to Doug's perspective and leadership.

- Don

March 18, 2011

EclipseCon poll results

On Wednesday I asked you a few questions about your EclipseCon experience.. Here are the results:

39 this.is.my.first.eclipsecon.ever.its.going.to.be.great---they.say.you.buy.beers

Welcome to all the newcomers! Look for me at the bar and I'll buy you a beer *


36 please.set.up.a.better.404.page.for.eclipsecon

Popular option... Ask and you shall receive. Go look...


30 ive.been.to.many.eclipsecons---why-have-you-never-bought-me-a-beer

Sorry if I've missed you... Hopefully I'll do a better job this year *


27 ive.been.to.all.the.eclipsecons---and.I.know.you.buy.beers

Yes, I know who you are... Quite a costly bunch :)


25 ive.been.to.a.couple.of.eclipsecons---I-prefer-to-run-than-drink-beer

If running wasn't so early in the morning, I'd likely join you. I'll try this year -- I might actually make it a few feet.

Some other responses and comments I've received:

webmaster.not.going.this.year.will.miss.the.beers

That's really unfortunate -- there's always EclipseCon Europe, and EclipseCon 2012


webmaster.ive.never.been.at.eclipsecon---please-send-beer-to-france

I can't really send beer to France but here's what I can do: to the person who posted this, send me an email to webmaster@eclipse.org. If your IP address matches up to that comment in my Apache log, I'll send you some Eclipse SWAG!

webmaster.ive.been.to.all.the.eclipsecons---and.I.know.you.buy.beers----altough-thats-not-entirely-true----well-its-not-true-that-ive-been-to-all-eclipsecons-but-you-guys-always-bought-beers

I'm so confused :)

webmaster.i'd.buy.you.a.beer.if.i.were.going.but.unfortunately.i'm.not.(sad.smily)
webmaster.i.am.not.going.to.make.it--can-you-mail-me-the-beer?

It's too bad you can't come ... I hope to see you next year.


* Disclaimer: offer valid while supplies last, no rainchecks. On approved credit. Offer subject to change without notice. See newspaper for details. Professional driver on closed course, do not attempt. Viewer discretion is advised. Product may differ from illustration.

March 16, 2011

Is everyone ready for EclipseCON?

Only five days until the big event begins (well, four days, if you consider the conference to officially kick-off Sunday evening at the bar).

If you want to distribute large files (or many files) to fellow attendees, upload your files to download.eclipse.org ASAP, since download.eclipse.org will be mirrored at the conference centre in its entirety -- including Nightly builds.

As per the tradition, here's a whacky webmaster poll to scope out the conference newcomers and veterans. Please choose one of the following options -- results will be posted tomorrow:

http://eclipsecon.org/webmaster.this.is.my.first.eclipsecon.ever.its.going.to.be.great---they.say.you.buy.beers

http://eclipsecon.org/webmaster.ive.been.to.all.the.eclipsecons---and.I.know.you.buy.beers

http://eclipsecon.org/webmaster.ive.been.to.many.eclipsecons---why-have-you-never-bought-me-a-beer

http://eclipsecon.org/webmaster.ive.been.to.a.couple.of.eclipsecons---I-prefer-to-run-than-drink-beer

http://eclipsecon.org/webmaster.please.set.up.a.better.404.page.for.eclipsecon

March 02, 2011

GlassFish 3.1: using the master password and managing instances

GlassFish 3.1 supports creating and managing instances on multiple hosts from a central location (the DAS).

 

GlassFish 3.1 supports creating and managing instances on multiple hosts from a central location (the DAS). The server software uses SSH to communicate to the remote systems where the instances reside and Joe's blog contains useful information on setting up SSH in a way that GlassFish can take advantage.    In this blog I talk about managing those instances when the user sets the master password to something other than the default.

It is recommended that users change the default master password for security reasons.  Since GlassFish never transmits the master password or associated file over the network, the user must take action on the remote hosts to allow the system to manage the instances from a central location.  Commands such as start-instance do not have a mechanism that allows the user to enter the master password but they do look for a master password file in the agent directory of the node associated with that instance.  This means that each instance on that node uses the same master password.  We have updated the command change-master-password so that it creates the master-password file for a node. Commands with the --savemasterpassword option will create or update the master-password file.

Let's look at an example.  In this case, I create a new domain setting the master password to 'welcome1'  and start the domain.  I create an SSH node for the remote host I plan to use for the instances.   I then create an instance on a remote node using the command create-instance which I run on the DAS.    Note that I can create the instance from the DAS but I can not start it unless the master password for the instance matches the master password for the DAS.  At that point I have to go to the instance machine and run the change-master-password command with the --savemasterpassword option set to true so that the master-password file is created in the node's agent directory.  Once I do that I can go to the DAS machine and manage the instance.  Since the master pasword is associated with the node I can then create additional instances from the DAS machine and start or stop them without having to go to the remote host.  I have added the commands that need to be run below.

1) Create and start a domain with the master-password set to "welcome1" using the command .  Note that I did not set a password for admin user.

asadmin create-domain --savemasterpassword true domain2
asadmin start-domain domain2

2) Create an SSH node

 asadmin create-node-ssh --nodehost glassfish1.sfbay.sun.com --installdir /export/glassfish3 node2

3) Create an instance from the DAS.  This creates the instance configuration information and the instance file system.

asadmin create-instance --node node2 ins2

4) At this point the instance is created but it can not be started by the start-instance command because there is no master-password file in the agent directory for that node. That file must exist and it must have the same password as the master password on the DAS. To create that file run the following command on the instance machine.  If I try to start the instance I get the following error:

asadmin start-instance ins2
remote failure: Could not start instance ins2 on node node2 (glassfish1.sfbay.sun.com).

Command failed on node node1 (glassfish1.sfbay.sun.com): The Master Password is required to start the domain.  No console, no prompting possible.  You should either create the domain with --savemasterpassword=true or provide a password file with the --passwordfile option.Command start-local-instance failed.

To complete this operation run the following command locally on host glassfish1.sfbay.sun.com from the GlassFish install location /export/glassfish3:

 asadmin  start-local-instance --node node2 --sync normal ins2
Command start-instance failed.

Go to the instance machine (glassfish1.sfbay.sun.com in this case)  and create the master password file for node2 by typing the following command.

asadmin change-master-password --savemasterpassword true --nodedir /export/glassfish3/glassfish/nodes node2

Important note: At the prompt I have to enter the old master password ('welcome1') which is what I had set when I created domain2 on the DAS. It is not the default master password 'changeit'  because the keystore was copied over when the instance was created and it is encrypted with the master password from the DAS. So the passwords are the same but since start-instance doesn't have an option to take the master password it looks for a file called master-password in the agent directory to access the keystores. Once that file is created, start-instance can be run centrally (from the DAS).

5) Start the instance from the DAS

asadmin start-instance ins2

At this point you can create additional instances from the DAS and start them without going to the instance machine. 

A slightly different scenario is below.  In this case I will begin by creating a domain with the master password set to 'welcome1' as in the previous example, create an SSH node to point to the remote host where the instance will run but I will create the instance locally on the instance machine.  At some future time I want to manage the instance from the DAS so I still need the master-password file created in the node's agent directory. 

On DAS machine:

1) Create  and start a domain with the master-password set to "welcome1" using the command
 

asadmin create-domain --savemasterpassword true domain2
asadmin start-domain domain2

2) Create an ssh node  pointing to the remote host where the instances will run.
 

asadmin create-node-ssh --nodehost glassfish1.sfbay.sun.com --installdir /export/glassfish3 node2

Now we move to the instance machine and create the instance locally and as long as there is no master-password file in the node we need to create one. The command create-local-instance can do that for us.

asadmin --host DASHost create-local-instance --node node2 --savemasterpassword true insL2

In this case, the master password for the keystore in the instance is 'changeit' or the default. Nothing was copied over from the DAS so the password is what is on the instance machine. Again, once the file master-password has been created with the passwordthat matches the one on the DAS, then instance insL2 can be administered from the DAS. Additional instances can be created, started and stopped from the DAS machine.

If the master password is changed on the DAS then you must go to each instance machine and run the change-master-password command as in step 4 above to reset the master password file for each node.

 
 

February 04, 2011

Eclipse makes refactoring fun.

"Well, duh" you say.

For seasoned developers and code gurus, you already know that. But for server guys like myself, the thought of a major refactoring of code -- especially code not authored by self -- leads to nightmares.

I spent the last few days getting intimate with Eclipse Helios and the PDT working on bug 303756. To my own surprise, I am progressing remarkably well thanks to Eclipse's navigation tools, content assist, and the little things like CTRL+SPACE.

January 31, 2011

How to ask questions the smart way ... without so many words?

The "How to Ask Questions the Smart Way" guide that was linked from our forums page is a great guide, but it has way too many words.  Let's face it -- if someone is too lazy to use Google or pick the right forum, are they really going to read all that?

So I've started my own, very abridged version.  Please help me make it better, but focus is on brevity.  This document will be linked from the Eclipse Forums.

Eclipse.org user foums for non-Eclipse.org projects?

This forum post got me thinking:
"Webmaster please create a "Python IDE" topic branch "
http://www.eclipse.org/forums/index.php?t=msg&th=200110

The Eclipse forums are intended for user discussion regarding Eclipse and
Eclipse.org projects. Of course, we don't want to be in the business of
creating hundreds of forums for all the non-Eclipse.org projects out there.
But it occurred to me that there are likely some projects out there that don't
have user forums; users can't easily seek support and are left to fend for
themselves.

Would it be a good idea to create a generic forum to allow users to discuss
non-Eclipse.org projects?

I've opened a bug to track the issue -- please feel free to comment there.

ECF moves to Git

It seems traction for Git is slowly picking up here at Eclipse.org.  This morning I got the "go" to switch the CVS repository to read-only mode for the ECF project, as the team moves their development completely onto Git.

Although a few smaller/younger projects have moved already, ECF is one of the first mature projects with a rich history of several years to make the move.

You can browse the ECF Git repo here:  http://git.eclipse.org/c/ecf/org.eclipse.ecf.git/

Congrats to the ECF team for taking the plunge!

Better (some?) Wifi coverage at ESE

I've never been to Eclipse Summit Europe.  I'm told it's because there's not enough beer in Germany to accommodate my lavish consumption.

Regardless, I've started working with the conference organizers towards providing better/more Wifi coverage at the conference in a manner that would resemble what is provided at EclipseCon.

This is where we play the game of estimating how much Internet bandwidth you'll use up, double the number, then double it again, and then have our calculations be demonstrably wrong once the conference is in full swing.  But that's part of the fun!

This is why I love Open Source Software

As I prepare to replace dev.eclipse.org with new servers, I noticed that IPZilla, a tweaked version of Bugzilla, wasn't working on the new servers.  It was bound to happen -- an antique version of Bugzilla running on the latest Perl.

Googling the error, I stumble upon this 3-year-old post from Max-Alexander Kanat, who responds to a user who is trying to run Bugzilla on a development version of Perl.  For that person, downgrading to the stable Perl works, but I can't (and don't want to) do that.

But Max didn't stop there.  That post raised a red flag, and he diligently opened a bug to investigate.  Patch issued, RESOLVED/FIXED.

I applied the one-line patch to our antique system, and voilà.  RESOLVED/FIXED for me as well.  15 minutes from start to finish.

I love Open Source Software.

January 03, 2011

Open Letter to WANDisco

Shortly before we all went away on our Christmas holiday, one of the companies that sponsors developers in the Subversion community, WANDisco, delivered a big fu#k you to the rest of the community in the form of a press release and blog post from their CEO Dave Richards.

I commend my fellow members of the Subversion PMC for being able to take a deep breath and wait a couple weeks to respond with a cool head. Had it been up to me alone, I am sure we would have said something that felt good at the time but that we regret later. You can read the official response here on the Apache Software Foundation blog:

Apache Subversion to WANdisco: +1 on the code contributions, -1 on the attitude

I was, and am, deeply offended by Dave Richards and WANDisco in general. Their business model seems to be to issue press releases rather than actually doing stuff. In my experience, companies that choose to issue press releases BEFORE they start working on something are usually to be ignored and I think that is the case here too. The difference is that WANDisco is attempting to portray themselves as leading the Subversion community and as such that they are speaking for the community. As the blog post from the Subversion PMC illustrates, they neither lead the community nor are the welcome to speak for it.

That said, I get it. No one knows or cares who WANDisco is and by issuing press releases and generating controversy a few more people will now have heard of you. Congratulations. Bully for you. However, in the process your actions are only damaging the product and community you claim to care so deeply about. This reveals your true motives.

If you are so desperate for attention that you feel the need to issue press releases we probably cannot stop you. If you absolutely have to to issue a press release to try to garner some attention, then why could you not simply issue something that says "Hey we think features X, Y and Z are important and we wanted to let you know that we intend to direct our resources to work on those features." I could live with that even though I would rather see you work on the features before you crow about it. As it stands, just as you did a year ago with the Obliterate feature, you are just setting your people up for failure. You have declared that you are going to implement new features that the Subversion committers that work for you already know cannot be solved in the near term. You have brought no new ideas to the table nor any idea how any of the known obstacles that have blocked these features will be overcome. To top it off you have attempted to slap a release date on it. Good luck with that.

I really hope that we implement some of the features in your list and it would be even better if we can get some of them done in 2011. Most of your list was already on the roadmap we published last year. Unfortunately, the way you are going about this is not going to help any of that happen and if we do have some success it will likely be in spite of your efforts not because of them.

September 02, 2010

A new direction for bindings?

I'm happy to report that I've been given company approval to port the relevant components of our Flex data binding library back to Eclipse Data Binding.

I haven't started the actual port yet--there are still some concepts on the Flex side that are not a perfect match to Java and existing idioms in Eclipse Data Binding. You'll see what I mean.

To avoid conflating the port to Java with the general API I'm going to just present what the Flex API looks like.

  Bind.from(source, "foo")
.to(target, "bar");

This binding watches the source.foo property, and writes the new value to target.bar each time a change it detected. Now add some validation and conversion magic:

  Bind.from(source, "foo")
.validate(Validators.stringToNumber)
.convert(Converters.stringToNumber)
.validate(Validators.greaterEqual(0))
.validate(Validators.lessThan(10))
.to(target, "bar");

Here we've added several additional steps in the pipeline.

  • After source.foo changes, we first validate that the string can be converted to a number. If so the pipeline continues to the next step, and terminates otherwise.
  • Next we convert the string to a number
  • Now validate that the number is greater than or equal to zero. If so the pipeline continues to the next step, and terminates otherwise.
  • Now validate that the number is less than 10. If so the pipeline continues and the number, now verified to be in the range [0,10), is written to target.bar.

Now suppose our binding is misbehaving somehow, and we want to troubleshoot. We can add logging steps to the pipeline in between the other steps so we can see exactly what is going on:

  Bind.from(source, "foo")
.log(LogEventLeven.INFO, "source.foo == {0}")
.log(LogEventLeven.INFO, "validate {0} is a number")
.validate(Validators.stringToNumber)
.log(LogEventLeven.INFO, "convert {0} to a number")
.convert(Converters.stringToNumber)
.log(LogEventLeven.INFO, "validate {0} >= 0")
.validate(Validators.greaterEqual(0))
.log(LogEventLeven.INFO, "validate {0}

.validate(Validators.lessThan(10))
.log(LogEventLeven.INFO, "set target.bar = {0}")
.to(target, "bar");

(In Flex, string formatting is done with {n} format instead of the %s syntax which Java inherited from C. The log statement passes the values in the pipeline as additional arguments which you can reference in log statements.)

These log steps are a real lifesaver for tracking down and squashing bugs in your binding code.

If you've already worked with Eclipse Data Binding you may have noticed something else: you are no longer constrained to the standard data-binding pipeline. You are free to add steps in the pipeline wherever you like and in any order you like.

Next up is two-way bindings. The bind class provides a twoWay method which connects two bindings to the other one's starting point:

  Bind.twoWay(
Bind.from(source, "foo"),
Bind.from(target, "bar") );

is equivalent to:

  var lock:Lock = new Lock();
Bind.from(source, "foo")
.lock(lock)
.to(target, "bar");
Bind.from(target, "bar")
.lock(lock)
.to(target, "foo");

Notice that each binding has a "lock" step in the pipeline. Only one binding can hold a lock at a time. This solves the common infinite loop problem:

  • source.foo changes. binding one executes, writing the value to target.bar
  • target.bar changes. binding two executes, writing the value to source.foo
  • source.foo changes. binding one executes, writing the value to target.bar
  • ...
  • stack overflow!

Since only one binding can hold the lock at a time, this is what happens instead:

  • source.foo changes. binding one acquires the lock and executes, writing the value to target.bar
  • target.bar changes. binding two attempts to acquire the lock but it is already acquired. binding two aborts.
  • binding one releases the lock

You should never add the same lock more than once to a single binding, since that would guarantee that the binding will never run.

Two-way bindings can use validations, conversions, logging, locks etc just like regular one-way bindings (since two-way bindings are just two one-way bindings wired up to eachother):

  Bind.twoWay(
Bind.from(person, "birthDate")
.convert(Converters.dateToString(dateFormat))
Bind.from(heightText, "text")
.validate(Validators.stringToDate(dateFormat))
.convert(Converters.stringToDate(dateFormat))
.validate(Validators.lessEqual(now))
);

We usually leave out the validations in the model-to-UI bindings. It's usually only important to apply validations when you're copying data back from the UI to the model, to make sure domain constraints are satisfied, such as ensuring that a birth date occurred in the past.

And now for my favorite part: binding from multiple sources, to multiple destinations. Raise your hand if you have ever had to wire up a UI form like this:

  Is there a foo? (o) Yes  ( ) No -- fooRadioGroup

Enter bar: ____________________ -- barText

Requirements:

  1. fooRadioGroup.selectedItem is bound to model.foo (a boolean)
  2. barText.text is bound to model.bar (a string)
  3. barText must be enabled iff fooRadioGroup selection is Yes.
  4. When the user clicks "No," set model.bar to null but do not clear the text box. If the user clicks "Yes" again, set model.bar back to the contents of barText

Requirements 1 and 3 are easy:

  var fooLock:Lock = new Lock();
Bind.twoWay(
Bind.from(model, "foo"),
Bind.from(fooRadioGroup, "selectedItem"),
fooLock); // explicitly provide the lock, see more below

Bind.from(fooRadioGroup, "selectedItem")
.to(barText, "enabled");

Requirements 2 and 4 are kind of related to eachother. The model-to-UI binding is simple enough: just write the value straight across:

  var barLock:Lock = new Lock();
Bind.from(model, "bar")
.lock(barLock)
.to(barText, "text");

However the inverse binding (UI-to-model) must also take fooRadioGroup.selectedItem into account to decide whether to write back barText.text (if Yes is selected) or null (if No is selected).

The Bind class has another trick up its sleeve:

  Bind.fromAll(

Bind.from(fooRadioGroup, "selectedItem")
.lock(fooLock),

Bind.from(barText, "text")

)
.lock(barLock)
.convert(function(foo:Boolean, bar:String):String {
return foo ? bar : null;
})
.to(model, "bar");

Look closely. The binding pipelines that we pass to fromAll(...) become the arguments, in the order they are provided, to the converter and validator functions further down the pipeline. The first pipeline is from fooRadioGroup.selectedItem and therefore that boolean value is the first argument to the converter. Likewise, the barText.text pipeline is provided second, so that string value becomes the second argument to the converter.

The converter takes multiple values but returns only a single value. This is where those values get coalesced into a single value that we can write to the model--in this case, a String value or null.

The outer pipeline adds a locking step on barLock, which is expected since we need to prevent infinite loops between the last two pipelines. However we are also locking on fooLock, on the first of the inner pipelines. We had a problem with our bindings overwriting values in the UI depending on the order things were initialized.

It turned out that without that lock, if a new model object was set, then the foo binding would fire first. Thus model.foo was copied to fooRadioGroup.selectedItem. But that would trigger our last binding to execute, so if the new foo value was false, then the last binding would override anything in the text box and set null on the model.bar field, before the model.bar => barText.text binding had a chance to execute!

A good rule of thumb is that any time you need to bind from multiple sources, you should make sure to create a lock to share between all the bindings to relate to the same field in the model.

Obviously there are several concepts that will have to be adapted to work elegantly with our existing APIs. Realms are a missing piece (Flex is single-threaded so we didn't even have to consider it). Also we would want to try to retrofit the existing binding classes to use this new API transparently, like we did with the transition from custom observables to custom properties.

So there you have it. This is my current vision of what Eclipse Data Binding should evolve toward.

Comments?

August 12, 2010

Back in the Saddle

I've been away (and neglecting Eclipse DataBinding) for a long time now. I want to offer my sincere apologies to any and all who've been affected by my lack of attention.

Now that I've settled back into my old routine, I have a new problem. There is a mountain of new / updated bugs in Bugzilla and not enough free time to catch up on all of them. Please help me prioritize by pinging the tasks important to you! Vote, comment, post patches, whatever you have time for--just let me know where the pain points are.

About the time I disappeared from Eclipse, I started a new job at Overstock.com and it's really an awesome place to work. We're always looking to hire new programmers, so send me a line if you're looking for something new.

While at Overstock I've been doing some Flex development, and (surprise!) working on a data binding library in Flex. Yes, technically Flex already has declarative data binding baked in. What I'm working on brings data binding to the ActionScript side, and gives you full support over the binding pipeline: conversions, validations (sound familiar?), synchronized access, one- and two-way bindings, bindings from multiple sources and coalescing the values together. It's really cool.

This work in Flex has been a golden opportunity to make a fresh start and use the lessons learned from Eclipse DataBinding. Pending company approval I hope to port all that goodness back to Java sometime soon. Stay tuned.

Disclaimer: Opinions are my own and do not reflect or represent my employer.