May 19, 2013

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 that’s [...]

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 [...]

May 16, 2013

IntelliJ IDEA and Android Studio FAQ

We’ve received a large number of questions related to yesterday’s announcement of Android Studio, and we’ve decided to compile the answers in a FAQ post.

Where do I get Android Studio?

Android Studio is available for download at the developer.android.com site.

Is Android Studio a fork of IntelliJ IDEA?

No. Android Studio and the Android plugin for IntelliJ IDEA are built from the same code, and all of the changes in Android Studio are, and will continue to be, available in IntelliJ IDEA releases.

When can I get the Android Studio features in IntelliJ IDEA?

The EAP of IntelliJ IDEA 13, which includes all of the Android Studio features except for the redesigned new project wizard and the App Engine cloud endpoints integration, is available now. The remaining features are going to be integrated in the coming weeks.

Will the new features of Android Studio be available for users of IntelliJ IDEA 12?

No. The new features (especially the Gradle support) depend on the major changes that were done in the version 13 platform, and we do not have any plans to backport them.

If I’m already a user of IntelliJ IDEA, do I need to switch to Android Studio for Android development?

No. Android Studio is focused specifically on Android development and provides streamlined environment and project setup, but otherwise all of its features are available in IntelliJ IDEA.

If I rely on features that are only available in IntelliJ IDEA Ultimate (such as additional version control plugins), will I be able to use Android Studio?

No, these additional features will not be available in Android Studio. You should continue using IntelliJ IDEA Ultimate.

Are Android Studio projects compatible with IntelliJ IDEA?

Yes, the two IDEs use the same project format.

Is it planned to support NDK development in Android Studio or IntelliJ IDEA?

We have recently announced that we’re starting work on an IDE for C++, and we plan to eventually support NDK development as part of that effort. As for NDK development support in Android Studio, Google hasn’t announced anything so far.

Where do I report bugs?

If you’re using Android Studio, please report bugs to the AOSP issue tracker. IntelliJ IDEA issues, as before, should be reported through YouTrack.

Feel free to ask other questions and provide the feedback here and on our discussion forum.

May 15, 2013

IntelliJ IDEA for Android

That's an interesting move: Google announced to choose IntelliJ IDEA for the new Android Studio IDE.

The guys are not dumb - if they do such things, they have good reasons. I never had pleasure to use Android plugins for Eclipse, so I can't really judge if it was good or not...

But what does it mean for Eclipse? Is Eclipse not good enough for Google Android developers?

Would be interesting know what are the real reasons to leave Eclipse land for IntelliJ IDEA adventure.

 Here are few candidates from me (just in random order):

  • Lack of "core platform" development since few years (e4 is a fancy toy in a beta stage, sorry)
  • Bugs, bugs, bugs everywhere, feature requests waiting years in bugzilla (word wrapping?)
  • Overcomplicated / error prone installation of 3rd party tools / over-engineered update manager (p2) story
  • Lack of customization options for IDE (according to speakers, extensibility of IntelliJ is one of the reasons to choose it)
  • Lack of standardization, chaos outside of "standard" JDT world (each and every language/VCS/technology stack plugin does things differently)
  • Last but not least, my favorite: with Swing you never see "no more handles" crashes.

Yep Google, I'm disappointed Eclipse user too.

IntelliJ IDEA 13 Early Preview is Out

Today we have exciting news to share with all IntelliJ IDEA fans who eagerly wait for the new features to appear in their favorite IDE. Almost six months before the official release we are happy to announce the early preview of IntelliJ IDEA 13, codenamed Cardea, which scheduled for release in December of 2013.

We believe that making perfect tools for developers is only possible when listening to feedback from the community. That’s why we are very much looking to hear from everyone about IntelliJ IDEA 13.

Most of the new features in this preview are about Android development support, and cover the new functionality added in Android Studio. Of course, everyone will find something tailored especially to their needs:

Project Configuration

  • Support for importing the configuration of Android projects from build.gradle and building them through Gradle.

Code Editor

  • External annotations (nullability, @MagicConstant) for Android APIs.
  • Display of additional information (including drawable image) for drawable, dimension and string resources in the quick documentation view.
  • Support for gutter color annotations in Java files, as well as showing icon previews in the gutter of Java and XML files.
  • Folding of Android string resources in the Java editor to display the actual string value.
  • Support for running Android Lint checks on the fly in Java code.
  • Many new Lint checks.
  • Initial support for editing RenderScript code.

Layout Editor and Preview

  • Rendering performance improvements.
  • Support for multi-configuration layout preview.
  • Support for working with fragment resources.
  • Improved the UI for choosing device configurations.
  • Device frame rendering in the layout preview.
  • Double-clicking a component in the layout preview opens it in the layout editor.
  • Selection is synchronized between layout preview and editor.
  • Improved display of rendering errors with support for quickfixes.
  • Improved support for RelativeLayout.
  • Support for zooming and auto-zoom of views.
  • Additional selection actions in layout actions bar.
  • Support for control variations in the palette (e.g. multiple variations of TextField with different default settings).

Integrated Tools

  • Action to obtain a screenshot from the device.
  • Integrated 9-patch editor.
  • New UI for viewing the list of connected devices in the Android toolwindow.
  • Support for filtering by package name in logcat.

Also, if you want to take a look at the source code and the changes, we’ve opened a new repository browser for IntelliJ IDEA Community source code.

Feel free to share your feedback on our discussion forum and report bugs to the issue tracker.

Develop with Pleasure!

30 Days with IntelliJ IDEA. User Interface

We keep saying how IntelliJ IDEA is the most intelligent IDE. This is close to obvious for all who use it every day, but there are still a lot of people out there who aren’t aware of its exciting features which make development so much more productive. That’s why we decided to create a 30-day guide helping the new users (coming from other IDEs or just the beginners) to get a quick start with IntelliJ IDEA and learn how to use its top features for more efficiency.

The guide will include 30 articles featuring different aspects of the IDE, for each day of the trial period for IntelliJ IDEA Ultimate, our flagship IDE for polyglot development.

We are going to publish the new articles every few days on the official website. Each article will be accompanied with a post here with highlights on the trickiest features described in the article.

User interface for higher productivity

Today we will start with the user interface. By default, IntelliJ IDEA shows you the navigation toolbar, tool window bars and the project view. This is the minimum set of what you can use to navigate around the project files and developer tools.

The navigation bar can be hidden to bring more space for the editor. The tool window bar can be also hidden by clicking the icon in the left bottom corner.

If you want to open a tool window when the tool window bar is hidden you can press Alt (Cmd for Mac) twice.

When you hide everything you don’t need, the IDE looks just like a text editor, a very powerful one at that. You can always maximize the editor by pressing Shift + Ctrl + F12 (Shift + Cmd + F12 for Mac).

Multiple windows

If you want to work with some files in a separate window, just drag the editor tab out of the window and the IDE will detach this tab into a window. You can easily drag your tabs from one window to another.

The complete article about the user interface in IntelliJ IDEA can be found here.

Stay tuned for more articles soon, and develop with Pleasure!

May 14, 2013

Join IntelliJ IDEA Session at Scala Days 2013

As you might know the fourth annual Scala Days conference is held this year in New York on June 10th-12th. This event brings together developers from all over the world to share their experiences and new ideas around creating applications with Scala, Akka and Play.

We are exciting to announce that IntelliJ IDEA team joins Scala Days 2013 and will present own session “Scala Developer Tools in IntelliJ IDEA: SBT, Play and Scalate“.

In this presentation we will showcase some of the IDE’s trickiest features that help developers to be more productive, and will provide a brief overview of IntelliJ IDEA’s plugin infrastructure for Scala development, including support for SBT, Play Framework and Scalate.

Be sure not to miss our session on Wednesday, June 12th from 11:15 - 12:00.

At our booth you will be able to learn more from our team about support for Scala, which is available for free in IntelliJ IDEA Ultimate and IntelliJ IDEA Community Edition. Our team will be happy to have a conversation and answer your questions.

See you there!

May 13, 2013

IntelliJ IDEA to Play in Developer Sandbox at Google I/O 2013

Woohoo! For the third year in a row, the IntelliJ IDEA team will participate in the Developer Sandbox at Google I/O 2013. We are thrilled to receive an invitation from the Google Android team to show off our Android support inside the IDE.

We’ve said it before and we will say it again: “This is the kind of event where if you’ve been there once, you don’t want to miss the next one!”

We will have an awesome team on location including JetBrains CTO, Dmitry Jemerov, ready to listen, chat, answer your questions and in general have a great time at the event.

JetBrains IntelliJ IDEA Team at Google I/O 2013

If you are attending the conference, stop by our booth in the Android section. We’ll be glad to chat and to tell you what’s coming.

Aside from Android, we are happy to share with you that the WebStorm team was also invited to the Developer Sandbox by the Google Chrome team for our great integration with Chrome DevTools. The guys will be showing Live Edit and other cool features of WebStorm 6.

While the WebStorm team will be at a different booth than IntelliJ IDEA, we encourage you to stop by and say hello to them too.

May 10, 2013

IntelliJ IDEA 12.1.3 Update is Available

We’ve just rolled out another update for IntelliJ IDEA 12.

Version 12.1.3 contains a number of bug fixes and usability improvements in many areas and features of the IDE. For a complete list of changes see the Release Notes page.

New version is available for download from the product web site or you can install a patch using “Check for updates” function inside the IDE.

IDE’s are no doubt important… but do not forget that it’s Mother’s Day this Sunday! :)

Develop with Pleasure!

May 02, 2013

IntelliJ IDEA 12.1.3 EAP build 129.400 is available

There is new EAP build of IntelliJ IDEA 12.1.3 available for download. The complete list of changes can be found in Release Notes. We welcome your feedback on IntelliJ IDEA 12.1.3 EAP at our discussion forum and with bug reports in the issue tracker.

Develop with Pleasure!

April 25, 2013

IntelliJ IDEA 12.1.2 Update is Available

We are excited to announce that IntelliJ IDEA 12.1.2 is available for download. This is the second update for IntelliJ IDEA 12.1 with a new bunch of enhancements and bugfixes.

The full list of changes in the update can be found in Release Notes.

If you are already running IntelliJ IDEA 12.1 right now, call Check for Updates… action and the IDE will download the update automatically.

Develop with Pleasure!

April 18, 2013

Plugin development for "dummies"?

We are looking for Eclipse based technologies which would allow us to:

  • Have set of reusable UI widgets along with associated domain logic (wired together via some data binding), mostly used in views in a RCP app (that part is probably easiest one).
  • Allow non-Java developers freely mix & shake them together to create their own "branded" new views/perspectives (e.g. take a predefined "composite view" containing 5 data sources, remove 3 of them and add a new one, or add 2 new views to the existing perspecive etc)
  • Allow non-Java developers easily bind predefined actions to buttons, add simple dialogs to the workfow etc (e.g. extra dialog before doing some dangerous action or new input for an extra log file).
  • Bundle the result as a plugin in a RCP application (without "classic PDE").

For sure we can do this with standard PDE/JDT but the main point is here "PDE development without Eclipse/Java knowledge".

What I'm roughly thinking so far would be some DSL on xbase at the beginning of the pipeline and  some "plugin builder" at the end. But for sure there are billions people who already did something similar - and I would like to know about your experience with frameworks/libraries/tools which are most suitable for the task above.

Any helpful hints are welcome. 

Manage Line Separators in IntelliJ IDEA 12.1 Like a Boss

As we mentioned before the latest release of IntelliJ IDEA comes with better management for line separators.

The information about the line separators type used in the currently opened file is available now in the status bar.

Not a big surprise that it is possible to change the type of line endings for the current file via this control.

You can also perform a bulk change. Just select a target file or a directory in the project view and choose new separator via Main Menu → File → Line Separator.

Please feel free to share your feedback on this feature on our discussion forum or submit bug reports to the issue tracker.

Develop with Pleasure!

April 17, 2013

IntelliJ IDEA 12.1.2 EAP and 50% OFF

Two bits of exciting news for IntelliJ IDEA’s users today. The first one is that the upcoming release of IntelliJ IDEA 12.1.2 is available for early preview. The new build brings many enhancements and bugfixes.

The full list of changes can be found in Release Notes.

And the second exciting news is that you can get 50% OFF if you buy IntelliJ IDEA until the end of Earth Day Celebration. Hurry up!

As always you are welcome with your feedback on IntelliJ IDEA 12.1.2 EAP at our discussion forum and with bug reports in the issue tracker.

Develop with Pleasure!

April 09, 2013

Laptop do biura, firmy

Tytuł posta mówi o wybieraniu laptopa firmowe, czyli do pracy (tutaj: laptop do gier). No ale tu się rodzi pytanie czy w każdym biurze wykonuje się na laptopie jedynie prace biurowe. Oczywiście że nie, dlatego laptopy zaproponowane poniżej nie będą się nadawały do firm, w których nie używa się wymagających programów komputerowych i nie wykonuje na laptopach wiele obciążających komputer prac (tzn.

March 20, 2013

Poll results: How do you prepare your EclipseCon talks

The results are in! In yesterday's poll I asked how you prepared for your talk(s) at EclipseCon. Here were your answers:



30 i-prepare-my-talks-on-the-plane-to-econ

27 oh-crap-ill-be-back-later-theres-something-i-must-go-do

22 i-prepared-my-talk-in-2009-maybe-i-should-update-it

19 i-prepare-my-talks-while-i-drive-to-econ

16 i-prepare-my-talk-when-i-get-there



124 I-assumed-Denis-was-preparing-my-talks-for-me

If you think I am in some way qualified to prepare your talks, the attendees are in for a painful experience.


56 like-Eric-I-prepare-mine-on-the-toilet


That is way too much information.  I'd be leery of printed handouts at those talks.



For some reason, there were more answers on the topic of beer than any other.   I am shocked!

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

Congratulations -- you are in for a great week. Catch me at the bar and I'll buy you a beer.  You'll need to be fast since I am not at the bar very often.


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


In this age of Drupal-enabled websites, this is out of my control.

 

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

I am sorry.  I will try harder this year.




5 /webmaster.ive.been.to.all.the.eclipsecons---and.I.know.you.buy.beers


I know who you are.


5 /webmaster.ive.been.to.a.couple.of.eclipsecons---I-prefer-to-run-than-drink-beer


I will run with you -- to the beer store!


 


Thanks to everyone who participated!  I look forward to seeing everyone again at EclipseCon 2013!

March 19, 2013

EclipseCon Poll: How are you preparing your talk(s) for EclipseCon

It's time for another Webmaster Whacky poll, where failure is the only sign of success.  In less than a week we'll all be at our favourite hangout, EclipseCon 2013.  This time I ask a simple question:

How do you prepare for your talk(s) at EclipseCon?  Cast your votes by clicking the links below:


http://eclipsecon.org/webmaster-i-prepare-my-talks-on-the-plane-to-econ

http://eclipsecon.org/webmaster-i-prepare-my-talks-while-i-drive-to-econ

http://eclipsecon.org/webmaster-i-prepared-my-talk-in-2009-maybe-i-should-update-it

http://eclipsecon.org/webmaster-i-prepare-my-talk-when-i-get-there

http://eclipsecon.org/webmaster-oh-crap-ill-be-back-later-theres-something-i-must-go-do

http://eclipsecon.org/webmaster-what-no-beer?


I'll tally up the results tomorrow afternoon.  Remember -- no ballot stuffing!!

February 27, 2013

Time to vote!

It’s the time of the year again when the Eclipse Foundation calls all committers to cast their votes. Each year members of the board are elected for representing two very important groups of the community at Eclipse!

Important Dates 2013

IMO this is one of the best ways to allow the community to participate and make its voice heard. Topics such as committer tools (Git, Bugzilla & co) and improvements to the IP process (such as parallel IP, incubation) are discussed at the board resulting into plans/directions for the Eclipse Foundation to implement.

My vision and my goals for 2013 are available online on my candidate page. If you have any questions please don’t hesitate and send them to me.

Two days ago webmaster sent out an email to all committers with voting credentials.

vote-email

 

Please don’t miss this chance to make your voice heard and vote now. I would be pleased to receive yours.

eclipse-voted

Thanks!

Cisco CSS: Load balancing from the inside too

Disclaimer: I'm not a Cisco expert.  Years ago, then-webmaster Karl Matthias convinced me that I was almost smart enough to barely understand this gear.  Turns out he was right.

The skinny

We use a Cisco CSS to load-balance client requests to multiple servers.  For years we couldn't load-balance requests from our inside network, only from the outside.


The setup

If you read the Cisco docs, the predominant use-case for a load balancer appears to be a single CSS with  a  single server group serving all the content. However, like at most shops, we have multiple server groups to serve different content.  For example, we have three servers to serve www.eclipse.org, two for Bugzilla, three for Git, three for wiki.eclipse.org, and so on.




Here, the Load Balancer acts as the gateway -- all inside servers use rfc 1918 private IPs and use 172.16.0.1 as their default gateway.  One /24 subnet is used: 172.16.0.X. The CSS has multiple "virtual" IPs: the real, Internet-routable IP addresses that represent the services.

For Internet clients, this setup works beautifully.  When you consider that a CSS is nothing more than a heavy Spoofing device, you can easily follow the flow of traffic from a client, say 108.10.50.81:

  • Client 108.10.50.81 sends SYN packet to www.eclipse.org, which is 198.41.30.199
  • The CSS immediately responds with a SYN-ACK, which is ACK'ed by the client, thus completing the three-way handshake
  • Meanwhile, the CSS spoofs the connection to one of the real servers in the group.  It crafts a new SYN packet --  Source: 108.10.50.81  Dest: 172.16.0.7 (it happened to pick that one)
  • The real server responds with a SYN-ACK: Source: 172.16.0.7 Dest: 108.10.50.81.  Since the Destination is remote, the packet is sent to the Default Gateway, which is the CSS (172.16.0.1)
  • The CSS simply discards the SYN-ACK since it has already established a socket with the real client. It ACKs the real server and completes the three-way handshake on the backend.
  • Everyone is happy, and traffic is free to flow from the client to the real server.


The problem

Problems arise when a server on the "inside" becomes a client to a load-balanced service, also on the inside. For some reason, it just doesn't work.  Years ago, the Cisco experts (not Karl) just told me it was how Cisco devices worked -- the load balancer is not meant to be accessed from the inside network.  The Cisco forums provided no particular guidance, other than to essentially "NAT" the inside servers as clients.  While that solution works, I didn't find it particularly pretty.

We originally resolved the issue with hosts file entries at first, then internal DNS.  Since all our servers share a backend network connection, server-to-server connections would flow over it.  It worked, but it was error prone and confusing.  If one load-balanced node died or was taken offline, we'd need to remember to update DNS.


Why it doesn't work

The years passed and I didn't spend much time thinking about it, but as our services grew in number, size and traffic volume, the problems became more frequent and annoying.

Understanding the root cause of the problem was key to developing a solution, which happened haphazardly while explaining it to a bunch of Linux students.  A light bulb lit up and I saw the light.

The following day I spent a bit of time with tcpdump and webalizer, I noticed that the internal "client" trying to reach an internal server from the CSS was eventually receiving two SYN-ACK packets.  The client, understandably confused, would RST the connection leading to failure.  Bingo.

Following the flow of traffic from the inside "client", the problem becomes apparent.  Say Bugzilla server 172.16.0.15 wants to talk to server www.eclipse.org, using the virtual IP:


  • Internal Bugzilla server (the client) 172.16.0.15 sends SYN packet to www.eclipse.org, which, through the magic of DNS, resolves to 198.41.30.199. Remember, that IP is the CSS.
  • The CSS immediately responds with a SYN-ACK, which is ACK'ed by the bugzilla server (the client), thus completing the three-way handshake.  So far, so good.
  • Meanwhile, the CSS spoofs the connection to one of the real servers in the group.  It crafts a new SYN packet --  Source: 172.16.0.15 (the bugzilla "client")  Dest: 172.16.0.6 (one of the www nodes)
  • The real server responds with a SYN-ACK: Source: 172.16.0.6 Dest: 172.16.0.15.  Are you seeing this?  Unlike earlier, this time the Destination IP is not remote, the packet is not sent to the Default Gateway.  The SYN-ACK is sent directly to the Destination.
  • Two things happen:  1) The "client" receives a second SYN-ACK -- one from CSS, which is the spoofed connection, and now one from the real server.   2) The CSS is not "seeing" the response.  The CSS must "see" all the traffic.
  • Bugzilla server (the client), confused by the two SYN-ACKs, issues a connection RST and the connection fails.


The solution

For internal load-balancing to work, the CSS must see all the traffic coming in-and-out.  The easiest solution here is to isolate the servers in content groups to their own subnet.  Consider this:

The changes may be hard to spot:

  1. No changes to the "www" servers.  They remain on the 172.16.0 subnet, with a 24-bit mask.
  2. Bugzilla server IP addresses change from 172.16.0.X to 172.16.1.X.  Also with a 24-bit subnet mask, they are now on a different IP subnet than the www servers.  Physically, no wiring or vlan changes are needed.  Default Gateway changes to 172.16.1.1
  3. On the CSS, a new IP address is assigned to the inside circuit: 172.16.1.1.  It will be the Default Gateway address for the Bugzilla group.
  4. service rules for Bugzilla servers are updates to reflect their new IP addresses.
Clients on the outside don't see a thing -- they are still happily talking to the CSS via virtual IP 198.41.30.X. However, on the inside, Bugzilla and "www" can now talk to each other using their load-balanced virtual IP 198.41.30.X since the CSS must be used to route all traffic between them.  If one node fails, the CSS continues to use the remaining nodes, and service remains functional for inside clients too.

February 15, 2013

Big Server Move Reason #4: Big Savings

This is the final part of a blog series on why Eclipse.org moved to a new datacenter.

See Also: Reason #1: Bigger Pipe
See Also: Reason #2: Big Power
See Also: Reason #3: Big Cooling

Reason #4: Big Savings

The new colo facility was eager to have our business.  Very eager.  They kept sweetening the pot until it was practically impossible to say 'no'.  The end result of this move: more bandwidth, more AC power, better cooling, more cabinet space, and a lower monthly bill for the Foundation.

What's there not to like?

February 14, 2013

Big Server Move Reason #3: Big Cooling

This is part of a blog series on why Eclipse.org moved to a new datacenter.

See Also: Reason #1: Bigger Pipe
See Also: Reason #2: Big Power

Reason #3: Big Cooling

The by-product of consumed electricity is heat -- lots of it.  We felt we had outgrown our previous location since our cabinet temperatures were very high, even if the cabinets themselves still had vacancies.  In the last six months, we replaced no less than eight failed hard drives, all in relatively young servers.  Not an efficient use of our time.

The new facility has cabinets that are not only deeper, but also equipped with large chimneys which are ducted into the facility's air return (the ceiling).  Hot exhaust air is literally sucked out of our cabinets, drawing cool air from the perforated floor tiles in front.  Wayne's blog post has some neat pictures.

The result is a set of hot chimneys, cool servers and remarkably uniform temperatures inside the cabinets. 

Next up: Reason #4: Big Savings

February 13, 2013

Big Server Move Reason #2: Big Power

See Also: Reason #1: Bigger Pipe

This is part of a blog series on why Eclipse.org moved to a new datacenter.

Reason #2: Big Power

Today, small servers can deliver greater computational power than the bigger servers of only a few years ago.  But they are power-hungry: 700W to 1000W power supplies in small 1U servers means server cabinets now require plenty of power distribution units (PDUs).

Since efficiency drops with as AC current increases, it became clear that  North America's standard 120v AC power was inefficient usage of yesteryear's technology (the rest of the world has figured this out long ago).  As DC power is simply not there yet for colocation, 208v 3-phase AC was the way to go.  Not only do servers consume a bit less power at that higher voltage, our new PDU bars have built-in current monitors that display instant power usage on each phase, and can be graphed remotely thanks to SNMP.

Additionally, the new facility is providing us with A+B redundant power circuits that we must keep under 40% capacity.  This allows for the total loss of one circuit while still remaining within acceptable loads (below 80%) on the remaining circuit.

Next up: Reason #3: Big Cooling

Big Server Move Reason #1: Bigger Pipe

As you may know, last weekend we moved all our servers into a new Data Centre.  Since any move is disruptive, I thought I'd start a short series to outline the reasons why we did what we did.

Although I'm numbering the reasons, in reality they are in no particular order.


Reason #1: Bigger Pipe

The new facility was offering us more bandwidth -- 60 Mbps more.  From 140Mbps to today's 200Mbps, the jump is substantial.


We monitor our download throughput from a server at the OSU OSL, in Portland, Oregon.  In the picture below, it's clear that this week, even at the busiest of times our download speed has improved.  You can also see the flatline above Week 06, where our download speed went to absolute zero while we moved.



On the yearly graph, you can see how download performance has improved since last year.  In August, we lost the OSU OSL server, so monitoring flatlined while it was brought back into service.


Next up: Reason #2: Big Power

February 04, 2013

Eclipse.org is moving next Saturday, Feb. 9 2013!

As you may have heard, we're picking up the entire Eclipse.org server infrastructure and moving it to a new data centre, 20 minutes down the road from the existing location.

The new facility offers better cooling, more bandwidth, more rack space and more AC power for a lower monthly bill to the Foundation.  How can we possibly say no?

This means on the morning (in the Eastern Timezone) of Saturday, February 9th you'll be greeted with a "we're moving" page to remind you that our servers are sitting in a truck somewhere.  We're currently planning everything involved so that downtime will be kept to a minimum.

We appreciate your understanding and your patience while we move to a newer, modern facility that will allow Eclipse to continue its growth... for years to come!

January 24, 2013

Jaki hosting wybrać? Moja opinia o Unixstorm.org

Na serwery Unixstorm musiałem przenieść się jakiś rok temu. Miałem wtedy sporo problemów z małymi hostingami (aczkolwiek znanymi), bo przetrzymywałem na tych kontach dość spore ilości serwisów :) Założeniem było wybranie i przeniesienie dobrych stron na dobry, stabilny i niedrogi hosting. Po wielu przeczytanych wątkach na forach i innych opiniach, wybrałem w końcu Unixstorm.org. Przeniosłem

December 29, 2012

One IDE to Rule Them All

So, yeah, I promised I would blog more and then four months later, here we are. But now is probably a more important time for me to be doing this. I have a lot of things I need to share with the Eclipse community.

As I get deeper and deeper into mobile development with my work as architect of the QNX/RIM Momentics IDE, the more I appreciate the decision we made 10 years ago to build with Eclipse. The frameworks, the ecosystem, and the community are very rich and we all benefit from it. But its not without it's warts and I really need to do what I can to clean that up.

As an example, I'm building a grocery list app for my wife and I so I don't forget things as too often happens. I'm using node.js for the server-side and both a web front end for our laptops, and a mobile front end for our phones, both native Cascades for BB10 and mobile web for others.  The challenge is to use a single Eclipse workspace to build all of those components. So far it's OK and there are enough pieces to get started at least. But it's an awkward setup and there are a lot of pieces missing or don't work well, or at least, are very hard to use.

And then I have some long time gripes. Launching in Eclipse is a thing for magicians and witchery. How poor newbies are picking this stuff up boggles my mind. And that's just the one of the usability problems we see. Tool bars seam like random collections of buttons with unclear and often duplicate meanings. Users coming over from Visual Studio and Xcode are faced with a very foreign environment. There, usability experts have driven much of the complexity of project setup and launching down to a few simple concepts. We need the same level focus on usability applied to Eclipse.

One IDE to Rule Them All

I have a vision. I call it "One IDE to Rule Them All". My focus is on mobile apps, but it's clear that the best mobile apps include components in the cloud. We will continue to leverage and contribute to the great frameworks and ecosystem that we've built with Eclipse for as much as we can. But we will have a renewed focus on making sure all those things combine into a Great IDE with a Great user experience.

We have some early ideas on how to make our vision happen. New technologies like e4's modeled UI look promising. But there are a lot of experts in the Eclipse community and we could use your advice. Hopefully working together we can achieve this vision, not just for my needs but for everyone. The greatest asset at Eclipse is it's community and working together is what communities do. And build the One IDE to Rule Them All, we can (sorry Yoda :).

November 01, 2012

The Rise of Chrome

I was a bit surprised last week when a colleague told me that Chrome (the web browser) now has greater than 40% market share. Last time I saw figures, admittedly some time ago, it was running at about 20%. Anyway, I looked it up and found this source:

http://www.w3schools.com/browsers/browsers_stats.asp

The rise of Chrome is certainly impressive, and also interesting in that data is the long fall of Internet Explorer. The dataset, of course, may not provide a good representation of global usage (it is based on visitor logs for W3C only)...if you know of better, or just alternative, data I'd be interested to know the source, for comparison.

I'm always on the lookout for interesting data sets to use for the JFreeChart demo collection, so I created this chart based on a subset of the browser data:

demo15.png

I like this chart, and will most likely try to keep it up-to-date in the coming months. If I can find some data that splits out desktop vs mobile browsing, that would be interesting as well. In the meantime, I'll go and give Chrome another try.

October 30, 2012

EclipseCon Europe was amazing

Last week I was at EclipseCon Europe, and now that the dust has finally settled, I thought I'd share some highlights of the event.


Technical Track
I'm a server guy, not a developer, so I can't comment much on the track.  However, as I tend to talk to just about anyone while I'm there, the feedback I got was very positive.  I heard the talks were great, and most people seem to appreciate being introduced to different technologies that they can investigate for usage on their Eclipse products or work environment.

For a server guy like myself, there wasn't as much compelling content as there was in North America in March with the ALM track.  But isn't that why there are two conferences to attend?


Networking
Most of the attendees I have spoken to got real value in connecting with the actual developers and integrators of Eclipse-based technologies.  Something about "getting knowledge from the source", if that was never a pun  :)


As webmaster@eclipse.org
It's always great to sit down with committers and community members to discuss issues around the Eclipse.org infra, be it Sonar with Mickael Istria, Gyrex with Gunnar Wagankn Wagenkenc -- Gunnar, Community with Lars Vogel (I'm not old!), Hudson with Ed Willink, or just lending a helping hand to those people who don't normally get webmaster support in their timezone  :)


Wifi
Wifi seems to be a recurring issue.  As someone pointed out, the Forum's wifi is likely more than adequate for 362 days out of the year.  For the remaining three, our atypical population seems to destroy even the best of intentions.  I did work closely with the on-site staff, and I'll be recommending some improvements for next year.  We'll see how it pans out.

One thing is for sure -- 1992 called and wants those 10Mbps hubs from the Power-Up Lounge back  :-)


Newcomers
The amount of first-time EclipseCon attendees is always staggering.  However, I was even more impressed to meet many EclipseCon newcomers at the Nestor bar after the day's schedule, despite their being immersed in a sea of unknown faces.  It was great to meet everyone.


Fun
Okay, let's face it: EclipseCon is always a fun time.  This year, we had the Nestor bar with its usual cast of characters; the band, who rocked us until they were out of songs to play; the Plug-Ins trio ... you simply had to be there; the circus, who dazzled us with their flame- and object-throwing acts; the contests, none of which a civilian like myself could understand...
.. and then there was the Scout crew with their cool Legos!  LEGOS!


Yet another amazing conference in the history books.  Props to Ralph, Anne and their respective crews for putting on such a great event!

October 02, 2012

Optimizing www.eclipse.org over the years

Since I took over the controls of the eclipse.org servers in October 2004 (hey, that was eight years ago yesterday!) our main website, www.eclipse.org, was optimized along the way to support the tremendous and steady growth in traffic.  I thought I'd share some of those optimizations:

1. Before the Eclipse Foundation, www.eclipse.org was one single server.  There was no scaling it, and there was no fault tolerance.


2. With new hardware, my first iteration of the "improved" www.eclipse.org consisted of four servers: one NFS/MySQL backend and three front-end nodes running Apache.  These front-end nodes also served everything else at eclipse.org, including CVS, Bugzilla, email and all our other websites.  A Cisco load balancer was used to direct traffic, and site files were served directly from NFS.


3. Years later, with some new hardware came a second iteration: segregation of the services.  Having Bugzilla, dev, wiki, cvs and www on the same set of servers was not efficient, and thanks to virtualization, www.eclipse.org was  hosted on three virtual servers.  Data was still served from NFS


4. Since NFS was introducing some I/O latency, we began publishing the website files to the local disks of the servers.


5. We enabled mod_gzip and mod_deflate, and added aggressive cache headers to reduce payload and reduce round trips.


6. With new hardware again, NFS and MySQL were separated on the backend-side.  This gave MySQL much needed breathing room.


7. We shortened the local directory path from a long /path/to/the/www.eclipse.org/website/html to a much shorter /site/.  This reduces stat() calls on the filesystem and reduces I/O overhead.


8. At the same time as 7., we also set Apache's AllowOverride to None so that a .htaccess file is not examined in each and every directory leading up to the desired file, cutting I/O calls drastically.

What's next?  SPDY?  Varnish? More hardware?  Magic?   With any luck, yes to all!

September 28, 2012

On my way to JavaOne 2012

For the first time ever I’ll be attending JavaOne next week. I’ll speak together with Shaun Smith from Oracle about Polyglot Persistence with EclipseLink JPA.

Polyglot Persistence: EclipseLink JPA for NoSQL, Relational, and Beyond
(Tuesday, Oct 2, 3:00 PM – 4:00 PM – Parc 55 – Cyril Magnin I) 

Yes, there will be a demo running EclipseLink on Gyrex OSGi connecting to MongoDB. :)

I’m currently in Frankfurt  waiting at the gate. I’ll arrive Friday night in San Francisco and will stay till next Friday (Oct. 5th). If you are around, interested in a chat (about runtimes, OSGi, other stuff that matters) and/or want to grab a beer please ping me!

September 27, 2012

Looking for Job Opportunities

Looking for Job Opportunities

I am looking for job opportunities in Bangalore.

My resume is available in here.

Please contact me, for any further information.


September 11, 2012

JFreeChart - Future State Edition

A development version of JFreeChart is now hosted on GitHub:

https://github.com/jfree/jfreechart-fse

The README.md explains where I'm going with this, and it is just a click away so I won't repeat it here.

Why GitHub? Everyone has been telling me how good it is, so finally I have decided to try it out. So far, I'm using Git a bit like SVN, which probably means I'm doing it wrong...but I'll learn some of the subtleties over time. Or not.

People have also finally given up trying to convince me to use Maven for the JFreeChart builds so, at least for this dev version, I've started using Maven. In fact, this is helping me out quite a bit, because I switch between a few different machines, and the excellent out-of-the-box Maven support in NetBeans means I can just open my JFreeChart project via the pom file and start working. Git integration in NetBeans is really smooth too, again out-of-the-box which is something I really appreciate. NetBeans has finally converted me - after many years of using Eclipse, I've stopped installing it.

Final note...JFreeChart 1.0.15 really is on the way!

September 02, 2012

Where do we go from here?

Hi! Long time no see, or at least write here in my blog. It's been a crazy last few years since I used to write a lot. I still dump my brain from time to time on Twitter @dougschaefer (sometimes too much - beware the drunken tweets, but yes I love electronic music at the moment). But I'm not sure why I stopped writing in the large. I love to write. It's therapeutic and helps me work through my thoughts to make sure I'm agreeing with myself. So it's time to start again, especially now that I'm settled in my new position as architect for QNX's Momentics/Blackberry NDK (BB10 is going to rock, BTW).

Over the last couple of years I've been thinking more and more about usability. The whole idea of being in the IDE business is to help software developers with productivity and to help them understand their code better so they can make it better. Yet I still often hear complaints that our tools, Eclipse based tools in particular are too hard to learn and are very quirky, especially for native development, even with all the work we've put into the CDT to take a Jave-centric IDE and make it work for them.

Now some of this is just, again, quirkiness of how Eclipse manages projects and resources and builds and debug and launch. And there are things we can do there to make incremental improvements. And we will continue to do those things.

But there is something bigger, and bigger in many ways. A bigger problem requiring a bigger solution but potentially a much bigger game changer. Eclipse as an IDE is looking really old. Even with Eclipse 4, it still looks like an MFC app from the 90's. That in itself isn't a bad thing, but we need to understand the reasons why modern apps don't look like that any more. It's all about usability, about making the important things obvious. It's about making the app visually appealing, ensuring the user is comfortable and not overwhelmed by choice the first time they fire it up. These are the things I'd like to see Eclipse the IDE exhibit out of the box. But as we all know it's huge mountain to climb to get there requires expertise we as engineers don't naturally by rule have in our DNA. That is: understanding the humanities, how people think, especially people not always like ourselves, empathizing with them.

So how do we start? My first reaction is to throw away every plug-in with a .ui component in it's name. Or take everything that depends on SWT and toss it. That's pretty dramatic and I thought way too hard if not impossible. Until, that is, I saw Tom Schindl's work with JavaFX and how he built a mini IDE reusing the core components from JDT. It's something I had thought of but he actually made it work and proved that it could be possible. The powerful core platform components of Eclipse and the language plug-ins, CDT included, can be used that way. It is one thing I've always mentioned when someone asked why we break out core and ui into separate plug-ins. The door is opened.

So where do we go from here? My plan is to play more with JavaFX and try out some different UI layouts and paradigms. I need to understand what is possible, how would users benefit from organizing things differently. And I can do so with the confidence that once we plug in core Eclipse, we could take this IDE we love to the next level and extend it's life to the foreseeable future. Of course one or two people can't do this alone. Any changes of this magnitude require a significant community, but something this exciting has the natural ability to create one. We'll see where we end up.

June 28, 2012

Eclipse p2 Frustrations


Eclipse p2 continually frustrates me. For years I have been working around it and we have been peacefully coexisting. I recently tried to dip my toes back in the water to see if I could better understand it and use it better.  I have what seems to me a simple situation that would be common in the Eclipse world but I cannot find a satisfactory solution.

I have an Eclipse feature comprised of many plugins. These are intended to be installed in an Eclipse-based IDE and the assumption is that it should be possible to install it via the update manager UI of Eclipse or the Marketplace client. My feature extends a lot of other Eclipse plugins that need to be installed.  For example, it needs Subclipse, Mylyn, GEF and several other plugins.  Some of these are hosted on eclipse.org and some are on other sites.  I want someone to be able to install my feature and have any other features that are needed discovered and installed automatically and seamlessly.

The peaceful coexistence I have talked about is that I have been able to make this work by hosting all of the dependencies on the same update site as my feature.  This is labor intensive and kind of annoying but it worked so that is what I did.  I would much prefer to just publish a site that contains only my features and whatever pointers are needed for Eclipse to go get the rest of the plugins.  I cannot figure out any way to do it and I have not seen any other sites that do this successfully so I just assume Eclipse cannot do this.

Am I wrong in thinking this should not only be possible, but easy?

I have tried adding associate sites to the site.xml.  That did not do anything.   I tried adding a p2.inf file to my feature JAR's.  I could see that the UpdateSitePublisher added the instructions to the content.xml file, but it appears to add them in a place that would only be applied after my feature is installed.  So it does not help for my scenario of needing to add these sites to find required dependencies.  I am at a loss and about to go back to my ugly workaround.

June 26, 2012

Eclipse Juno is here now for Friends!

Eclipse Juno, the 2012 Eclipse release based on the Eclipse 4.2 platform, will be available tomorrow, June 27.  But it is available NOW to Friends of Eclipse.  Become a Friend and Download it Now.

June 04, 2012

Problems of scale

Recently I noticed that the web logs of the Eclipse Download servers were being overrun by an inordinate amount of requests for various p2.index files.  All the responses appeared to be "404 Not Found".  This seemed odd to me, so I began to investigate.

My findings: 6,000,000 each day. We respond to 6 million requests for p2.index files each day.  Ouch.

Why not?

I won't go into the "why?" but I do want to elaborate on the "why not."  "Checking for a small file is a trivial request, no one will ever notice, impact will be minimal" is usually the thinking.  And that thinking is correct -- go ahead and click this link, and it will all be over before you know it.


Small, insignificant request

Problems arise when small, insignificant requests add up by the millions.  An Ethernet packet cannot be smaller than 64 bytes, so although responding to a "404 Not Found" is only a few bytes, this adds up to 384 MB of actual data sent on the wire each day.


Where have all the bandwidths gone?

Unfortunately, there is more.  Until recently, Eclipse wasn't able to reuse an http connection for multiple requests, so it would go through a 10-packet TCP exchange for each and every file it wanted.  That's 4 Ethernet packets departing the server for that p2.index "404" response.  All of a sudden we're sending 1.5 GB of 404 material.


It's happened before!

Client-server developers typically don't know much of what's going on server-side, there's nothing new there.  I remember many years ago when the Mylyn (née Mylar) project was killing Eclipse's Bugzilla by fetching too many bugs and too many repository listings too often when their project became wildly successful.

But here's one small tip: if you catch yourself saying, "it's small and insignificant", "no one will notice" or "no impact", go ahead and multiply the action by 6 million to see of the answer is the same.

Or engage with your IT team.  They want to help  :-)

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 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 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 02, 2012

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.

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 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.

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.

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

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.

July 18, 2010

Archived

I've archived the 431 posts from this blog. If you're interested in a specific post, don't hesitate to contact me and I'll pull a copy out of storage for you.

June 25, 2010

Eclipse 3.6/Helios key-bindings changes?

We have had several Subclipse users point out that their key-bindings for Subclipse commands are not working in Helios. Does anyone have any ideas/pointers they can give as to what has changed that would make this feature stop working?

Key-bindings are working for the core Eclipse plugins, so it is not like the entire feature is broken, it just seems that something has changed. Usually Eclipse release are very good at backwards compatibility. We still are able to provide a single version of Subclipse that works on Eclipse 3.2 and higher. I would hate to have to provide a specific version for Eclipse 3.6 if we can avoid it. We still get lots of downloads for our Eclipse 3.0 version!

[Update] - It looks like a user figured out a cure for the problem. Now we have to figure out what to change in Subclipse to do this automatically.

May 13, 2010

Beauty of the Maven POM editor

It is great to see that people still like Maven POM editor I designed few years ago for Maven integration for Eclipse. The editor allows simple XML editing with number of code completions and template support, as well as structured form-based view of the entire Maven POM model. It also includes several tools, such as Dependency Hierarchy and Dependency Graph views for the current project.

Not many people know that POM editor can be used with pom.xml files outside of Eclipse workspace, including files opened from CVS or SVN Repositories, History view or Maven Repositories view. So, you can see a form-based representation of the project dependencies, as well as explore dependency hierarchy for projects without importing them into Eclipse workspace.

Unfortunately there is several regressions since Sonatype took over the project. For example you can't see form-based representation of an effective POM and editor pages had been shuffled in an odd order, but most of the features still there.

I believe that POM editor is playing a key role in Maven integration for Eclipse and it opens huge number of possibilities to help developer to do various common tasks, from analyzing project dependencies from artifact down to the class level, down to collaboration within project team. That is why I created extension points to allow 3rd party integrations. For example, you can add a custom POM editor page/tag using org.maven.ide.eclipse.editor.pageFactories extension point. Custom menus can be also added in various places using standard Eclipse's object contribution mechanism. So, it is now up to you to extend it.