Thursday, December 20, 2012

The "display" HTML/CSS Misdesign

TBD.

Subclipse Message

This is a message from Subclipse (SVN?): 
    Invalid filesystem path syntax
svn: Cannot replace a directory from within
That's the literal message. All of it. Ends in nothing.

Tuesday, December 18, 2012

Subclipse Purple/Blue Cylinder: Normal, Copied...and Switched

New Subclipse stuff I didn't know I didn't want to know: purple cylinder icon. Using the properties dialog, and clicking the 'Subversion' label, this seems to mean "Status: normal, switched, copied"; instead of what the yellow cylinder means: "Status: normal, copied". Now how did this happen? I just tried to clone a folder as usual. The files in that folder has these purple cylinders.

(And why does it show a spinning beachball just to pop up that Properties dialog? Does it fetch all the data before popping up the dialog? WT*?)

Googling for purple cylinder...I found this link, although it is referred to as 'blue'.

http://svn.haxx.se/subusers/archive-2007-06/0052.shtml

The meaning of the blue is simple - the affected resources is "switched",
i.e. the working copy is mixed and the blue file is from different branch
than its parent directory. 
So, clearly something went wrong during the clone (actually, I use 'rename' to clone). I remember an error popup (there is an error popup I'd say 30-50% of the time with Subclipse), but then the renamed/cloned folder showed up anyway, as it does in cases. 

Simple solution would be to delete and revert the children, right? Tried it, the purple/blue cylinders show up again! After a revert, how can the working copy be mixed?!?

Deleted the whole folder, reverted, still mixed. WT*? 

Do I dare commit it? First, let's make a screenshot. 


Now then. 

Ah, could commit, they are not changed. Odd. 

Ok, this is fun: just made a 'Synchronize' on the 'site' folder, and now there's question marks instead! Well, that makes a lot more sense; either the revert or something else fixed this, but Subclipse failed to notice. 

Tried to rename the folder into _lib again. As usual: 


But this time, I get the folder with blue cylinder too!


Let's see if they're really what they say they are...

Nope, this time, brining the Synchronize to bear didn't change the looks. And nothing else I tried.
Errors. Cleanup menu item gone.

So, this means Terminal. This is why I have files called "shell_in_this_dir.command" containing this code in strategic positions in the source tree:

cd $(dirname $0)
$SHELL 
And then "svn cleanup". Refresh, Subclipse icons back to question marks again.

--

Anyway, I think the unerlying problem here is that I am doing operations that svn or Subclipse does not support: making these changes inside a cloned folder. I'll have to commit the clone first.

--

Yes, worked better. So the point of this article... reduces to:

(*) screenshots of blue icons.
(*) always commit clones before starting moving folders around in them.


No wonder the revision numbers keep rising so fast, when you have to commit all the time to feel and/or be safe.

Friday, December 14, 2012

Tilded Target Folder

I think I finally grokked the following unexpected interaction between svn and Maven/Eclipse Workspace Resolution feature. First, a bash illustration:

bash-3.2$ svn stat
?       .classpath
?       .project
?       .settings
~       target

See the "~       target"? That is what I believe was the cause of a mysterious build problem. (The tilde is probably due to me changing from "svn:ignore *" inside target dir, to "svn:ignore target", after discovering that the former doesn't work well. Maybe more in other blog post.)

The symptom of the problem I've been having for a few hours can be demonstrated and summarized like this: 

No problem building in maven. 

Lots of errors in red in Eclipse, as if a Maven dependency is not resolved somehow. 

Turning off Workspace Resolution makes the errors go away. 

Conclusion: something is up with Workspace Resolution. 

Theory: 1) there is something wrong with the target directory; 2) workspace resolution uses a project's target directory for dependencies (perhaps just points to $dependee_project/target/classes on the classpath). 

But that seems crazy. Surely the build should care how SVN flags the target directory? But the coincidence is a bit too strong to ignore. 

--

Turns out that Eclipse clean + build fixed it. Don't know why.

But the target folder had a severe SVN weirdness...


Doing "svn update target" failed bizarrely: "svn: Unable to lock 'src'". Huh?

Finally it got unstuck, inside Eclipse: 

    E   .../target
    Updated to revision 23696.
    ===== File Statistics: =====
    Existing: 1



I've never seen this 'E', existing, before. I must've managed to set a svn:ignore on it, but it existed in the repo. Or something.


E-Maven Update Project Configuration Problem

Eclipse/Maven "Update Project Configuration" problem: "can't update ... because '.project' is not in sync with file system." The "not in sync with file system" usually means that Refresh helps, but not so in this case. Turns out that Eclipse somehow thought I had unsaved changes; saved, and that seems to have solved the problem for Eclipse.

Maven Idea

Here's a radical idea to simplify the usage of Maven, especially when considering Eclipse cooperation.

How about not using test scope, but instead create a 'project-test' for every 'project'? Some advantages:

The pom.xml files will be cleaner.

The single-classpath Eclipse will not be a problem any more.

One will not have to think about the interaction between the declared dependency scope and the importing dependency scope. (Unfortunately, the 'provided' scope is still needed, but that is pretty simple.)

If one would want to import test code into another project, no need to fiddle with '-tests' attachment.

One can build with-out tests, which is quicker, and could likely allow tests to be run quicker, ironically, because of parallel execution. Or you could collect all tests before running them.

The odd thing is that maven wasn't designed this way from the start. It would have dispensed with a lot of extra complexity. Etcetera.

Thursday, December 13, 2012

Maven Source Properties That Don't Work


When I do 'Maven > Update Project Configuration' in Eclipse, this seems not to work: 

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.build.source>1.6</project.build.source>
        <project.build.target>1.6</project.build.target>
    </properties>
    
But this seems to work: 

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
     ...
    
Too bad, since the first xml is neater. 

---

PS. One sign that there is some mix-up with 1.5/1.6, is that the @Override annotation acts up.

Wednesday, December 12, 2012

Java Package Reflection

There's no Package.forName() like there is a Class.forName(). Is this an accident? If it's not, only packages that have a class in them, let's call them 'inhabited' packages, can actually be accessed.

There's the Philosophical Question of whether they then 'exist' or not. Platonic package, anyone? But on the other hand, one can probably find out: there is the Package.getPackages().

-- TBD --

Development Is Implannable

It's possible, but not plannable. Let's make a new word: Implannable. Implannable.

That's at least half of what the 'agile' thinking is about.

Tuesday, December 4, 2012

Maven Is Back, Stronger Than Ever

Guess what this does, in proper maven resource plugin context:

<configuration>
<outputDirectory>target/classes</outputDirectory>
<excludes>
<exclude>**/*.java</exclude>
<exclude>**/*.class</exclude>
<exclude>**/.svn</exclude>
</excludes>
<resources>
<resource>
<directory>src/test/java</directory>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<filtering>false</filtering>
</resource>
</resources>
</configuration>

Copies resources out of src/test/java and src/main/java, excluding files matching the specified patterns? 

Wrong. Or, mostly wrong. 

The exclusions will apply to the src/test/java directory paths, but not the src/main/java. Yep, at least in the version we use. 

Caveat utilitor.


Monday, December 3, 2012

Maven Copy Plugin

This (new?) Maven 'copy' plugin: http://evgeny-goldin.com/wiki/Copy-maven-plugin, seems to be a useful tool to simplify some Maven projects. It seems to be a good way to using a minimal number of plugins for common tasks. This is not a deep review; I'm just blogging this as sort of a mental note.

But it could be used for the following problem: I recently learned a second way that the 'real' Maven and running under the Eclipse Maven plugin differs, in that resource files in /src/man/java are copied; but not so with Maven defaults. (The other difference I know of is that Eclipse has only one classpath, the same for both src/test and src/main. Fertile ground for bad imports.) It's easy to add with a standard plugin, but if you have many such small tasks, then possibly this 'copy' plugin will be better than a bunch of disparate plugins. Maven is verbose enough, I think.

Wednesday, November 28, 2012

Cleaning Keyboard

Hot tap water. Light scrubbing with some tissues and some detergent. Wiped it down using dry tissue. This is not an expensive keyboard.

Plugged the USB back in; felt no fear doing so, since I believe it is only indirectly connected to the laptop, driver circuits and whatever. Works, despite some amount of water remaining inside of the keyboard. No keys malfunctioning yet.

Has a slightly different feel though; perhaps due to the remaining liquid.

Maybe I'll have to keep tapping on it so that the keys don't become stuck after drying out.

EDIT: don't do as I did. After a while, the up and left arrow keys stopped working. So I unscrewed a gazillon (11 plus five) screws to open the case to wipe the internals. Now all arrow keys work, but the numerals five and six don't work, also two more keys (equals and plus, I think) don't work. Weird thing is that if I hit, say, five key and six key in rapid succession, I get: u6 u6 u6. But not in the reverse order, six key and then five key. Hard to tell which malfunctioning part of the keyboard makes this happen.

Thursday, November 22, 2012

Simple S3 Solution for Maven Repository

Quick post, just the outline for this part-manual solution to publish a repo in the AWS S3 cloud.

# Set up a bucket (or find one to reuse).
# Enable Java for the AWS console (to be able to upload filesystem trees to your cloud bucket).

Each deploy:

# Use Maven's deploy command, specify a file:///tmp/my-repo/ folder as target.
# Upload using the file tree upload.
# Run the 'Make Public' command on the folder uploaded.

That's the skinny of it. Will be good enough for weekly or even daily publishing; but perhaps not for hourly updates.

Details TBD-M.

Wednesday, November 21, 2012

Contrafactual Java Package Name

I know of at least two limitations to package names. One, I've stumbled upon a few times until I learned to avoid it 'by heart': Java keywords.

Just found out about another one: can't start with a (decimal :) numeral. Which is a bummer. For instance, stuff having to do with 3-dimensional maths and graphics would be most easily recognized under the name '3d'.

Workarounds.... for '3d', let's see: Ugly "_3d"? Cryptic "ddd"? Associative "xyz"? Silly "three_d"?

With the keywords, you can at least have a name that starts with the word you'd rather have, helping with matching and alphabetical ordering and such things.

---

I wonder why he/they didn't go for a separate package syntax. I mean, the '.' can never be used as the other form of qualification operator anyway. Maybe there was plans for namespaces-as-objects or something.

(Interesting digression...it could actually be implemented (except being able to use regular dot syntax, of course); take (ClassLoader, InitialPackage) --> PackageNamespaceObject or something.)

Slash syntax would've worked. Contrafactual Java:
package com/mylib/somepackage;

import com/mylib/somepackage/misc/*;
import com/mylib/someotherpackage/thispackage/ThisClass;
import com/mylib/someotherpackage/3d-math/SomeModule;

public class Contrafactual3dDemo { //...
}
(And why not lose those package and import semicolons...)

Learning to Deploy (Maven)

I am in the process of learning how to do public deploys with maven; for instance, to publish java library artifacts. Uploading to AWS S3 would be nice, but one step at a time.

I found no 'deploy' menu item in Eclipse's Maven menus. So I made a nice little script:
cd $(dirname $0)
ls -l

echo -----------------------------------
echo deploying...
echo -----------------------------------

mvn javadoc:jar deploy

echo -----------------------------------
echo deploy script done.
echo -----------------------------------
echo 

echo -----------------------------------
echo damage report...
echo -----------------------------------

find /tmp/maven-tmp-repo

echo -----------------------------------
echo now back to your regular shell, see you later. 
echo -----------------------------------

$SHELL
I have found it to be a nice pedagogical tool. It's of course not much different from doing it manually but it saves work. I've put it in a 'mvn-deploy.command' file next to the 'pom.xml', which also makes for quick deploys -- it's just a double-click to start from inside Eclipse (provided you set the 'executable' property/flag under Properties); no having to navigate to the right directory in the terminal.

(Btw, why doesn't Eclipse have a 'Open Folder In Shell/Terminal'. Or maybe it does, somewhere. Do tell!)

The 'ls -l' at the start is just for context. The 'find' at the end lists all files in the makeshift repository. Yeah, almost forgot: you need something like this in your pom.xml:
<distributionManagement>
    <repository>
            <id>local-tmp-repo</id>
            <name>Temp Folder</name>
            <url>file:///tmp/maven-tmp-repo</url>
        </repository>
</distributionManagement>
Pardon the formatting. (EDIT: Shit, now it looks even worse: '& gt;' and all. Damn you, blogger editor. -- No wait, it looks ok in 'print'.)

So, you can now see in your terminal, or by inspecting the /tmp/ file system tree, how maven adds files like '/1.0-SNAPSHOT/maven-metadata.xml', 'pub-lib-1.0-20121121.203440-1.jar', 'pub-lib-1.0-20121121.205813-2-javadoc.jar', etcetera, without digging in to .m2 (these files are probably simply copies out of the .m2 local repo).

That's it, readers. I just might return with a post about the maven shapshot process, in very concrete terms.

Artifactory Online: Reviewlet

Reviewlet of Artifactory Online.

Home Url: https://secure.artifactoryonline.com/

Sign-Up: easy, but a bit too much filling in of forms. And either there's a glitch, or I mistyped something: the first confirmation mail didn't get back, so I had to add a '2' to the chosen domain, as it was reported as taken. Oh well.

Clicking confirmation link brought me in to the setup process, very simple, a bit slow; but from an implementor viewpoint I can see that it may be hard to keep a pool of fired-up instances ready.

I managed to snap these screenshot during the automatic process:



Done.

Next comes the finding-your-way. I dabbled with Nexus and Artifactory a few years back, so I recognize some of the repo naming schemes. But even thinking a bit, I must confess that I don't remember really fully understanding the scheme.

I am looking to have two 'permissions' of repos, one publicly available, and one for internal libraries. Well, actually, only the public one is really needed. So how do you do such a thing? Not immediately obvious if it is part of the factory set-up or not.

----

Ok, so an unexpected item in the review: finding-your-way-back-to-the-app. Can't seem to find a link from the main page. So I guess browser history, or find the confirmation email in the email history.

----

The repository search browser is pretty nice; I like to have this comprehensive data available like this:


Here, to the left (in this partial screenshot) you can see the list of repos. None of these seem to be the one I am looking for: publicly released artifacts. All these repo names end in '-local'. I suppose the name I am looking for would along the lines of 'libs-releases-public' (and perhaps 'libs-snapshots-public'). Isn't that a common enough usage that the default setup might want to include one?

----

The search I can only presume that it works, since all the shown repos seem to be empty. Maybe the repo1-cache contains something to search for...no. Even such a general pattern as "*X*" finds nothing. I can't get a clue as to why. Possibly they are all empty. One has to click the 'Show...' link as seen in the screenshot to get that number, unfortunately. In each selected one -- not very generous.

----

[TBD-M]

Tuesday, November 20, 2012

Heisenberg Keypress

Breakpoint in JavaScript on keydown. When hit, focus shifts to debugger. The keypress never comes.

I can't observe both the keydown and the keypress event. If I observe the first one, I can't observe the second one.

Good to know. Bad to have to know.

Eclipse Is Back


That's a new one, served fresh in a modal popup close to my face: 
An internal error occurred during: "Launching TestTemplate".
java.lang.NullPointerException
Restart, clean, refresh, nothing helped so far. Is it something in the code itself? Weird. Only other symptoms: 'misplaced' breakpoint (due to quick edit somehow) can't be removed, and no new breakpoints can be added anywhere.

Getting new issues from Eclipse is getting old.

---

(Expletive deleted), this is annoying. Deleted various project files. Open/Closed project, committed all uncommitted, tried the trick "Disable-Enable Dependencies" described in earlier posts, et-f5g-cetera. No go.

---

Found a clue: after deleting the contents of target/, the classes/ and test-classes/ folders are recreated, but they don't get populated. Is it my deletion of the .settings project files, or is it the original problem?

...no, the .settings/ files are actually back (org.eclipse.jdt.core.prefs, org.maven.ide.eclipse.prefs).

---

Two more clues: the process roster has a large number of zombie-like processes in it. When they are terminated, they take a long time, then both die, and a dialog "Termination Failed" is shown.

And shifting to 'Run' instead of 'Debug As..' I get this:


Exception in thread "main" java.lang.NoClassDefFoundError: org/pub/TemplateTest
Caused by: java.lang.ClassNotFoundException: org.pub.TemplateTest
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

Yeah, if the build isn't working, that's not totally weird.

It's interesting that this causes the debugger to not be able to connect to the child process! Is it that it fails so fast, that there's no time? Or does it depend on a working classpath? Would be interesting to know...

---

Solution: rename the project. Don't ask me why it works. My guess is that some cache or setting is associated with the project name.

Repugnant shit...

Thursday, November 15, 2012

Killing Port Owners

This post is about a bunch of ways to do find and kill the process that owns a specific port.

First, some context. [TBD]

Now: the kills! In the below examples, the port number is 8181.

Here's the first way. Find or open a terminal; type:
lsof -i:8181 -t | xargs kill -9

-- TO BE EXTENDED

Wednesday, November 14, 2012

Trying WebStorm

In JavaScript Development Sucks, I detailed some things that make it so. We can consider this a tools issue; at least as far as the language makes tool-making feasible. And it's easy to imagine pretty good tools for JavaScript. Refactoring may be largely out of reach with such a language, at least without assumptions or whole-program analysis. But that's not impossible either.

Am in the process of trying out WebStorm, an IDE in the IntelliJ family. So far:
+ autocompletion seems to be good; looks into at least files in same dir (probably also whole project)
+ it's aware of JS-specific features like 'arguments' -- if 'arguments' is used, an otherwise unused argument is no longer considered to be unused.

Well that's about it. I haven't understood how IntelliJ 'works', so it's pretty slow going. Maybe I'll end up with an expired trial period, as last time when I tried IntelliJ for JEE, forgetting about the period since I have work to do.


Eclipse Drag-And-Drop Idea

Just realized that the serious usability problems with drag-and-drop in Eclipse has a surprisingly obvious solution!

If you have a large number of files and folders in your project source trees, drag-and-drop is a serious pain in the rear, because you may have to wait for scrolling, which is slow and a bit finicky to control. And if you over-scroll, you have to move the drag to the other end of the scrolled pane. Etcetera. And even remembering the target is difficult.

For moves within the same 'classpath entry' (e.g. src/main/java) there is at least the alternative of typing a new package name -- with auto-completion assisting you -- and then using the quick fix 'move', but for moves between projects, for instance, the problem remains.

However, I just got this really simple and in-hindsight-ly obvious idea: why not open a second 'Navigator' view? Turns out I don't know how to do that. But there is a an almost-as-good solution: the possibility to drag-and-drop into panes of other kinds! At least into the 'Project Explorer', just tried it.

Well, one simple trick closer to peaceful cooperation with Eclipse. Many annoyances remain to be worked around.

Monday, November 12, 2012

Fix Maven Source Version Having No Effect

In a recent article at http://impossible-is-development.blogspot.com/2012/11/basic-maven-project-build-fix-tip.html, I wrote about a trick to get the .classpath file to reflect the src/main/java etcetera build structure. This trick actually helps in another not-to-uncommon situation: unsyncronized source versions.

If you create a new pom.xml, it may happen that there is no Java versions information given. The version can be given in two ways; via some xml using a 'properties' tag, or via more xml. 

Plugin config: 
<build>
<plugins>
<plugin>
maven-compiler-plugin
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin></plugins>
Sorry about the formatting. (Doesn't the Blogger editor suck something awful for quotes and code? ...hmm...can one blog on Github?)

<project.build.source>1.6</project.build.source> <project.build.target>1.6</project.build.target>
(Again, sorry about the formatting.)

Now; if you add this to an existing pom.xml, Eclipse may fail to take note of this change automatically. Maybe it never takes note. In any case, the same solution applies here as in the earlier blog post: just disable and enable dependency management.

Slashdot Descriptors Feature For Stack Overflow

You probably already know about Stack Overflow, a mostly nice Q&A site. There are still some problems with it, in my experience.

One problem is getting down-voted without explanation. Has happened to me lots of times, so you get used to it, you even expect it (without submitting knowingly bad questions, to be clear). But it's still confusing.

There is a solution, that would help at least some: down-vote buttons should be categorized. We know and love this feature on Slashdot: moderation descriptors. The complete list seems to be: normal, offtopic, flamebait, troll, redundant, insightful, interesting, informative, funny, overrated, or underrated (from http://en.wikipedia.org/wiki/Slashdot).


The negative ones are: offtopicflamebaittrollredundantoverrated. 

The positive ones are: insightfulinterestinginformativefunnyunderrated.

I haven't thought up good descriptors for Stack Overflow, but why not reuse the canned answers used when a question is considered so bad that it gets deleted? Maybe: 'unclear', 'shopping-list', 'clearly-homework', 'submitter-should-have-tried-harder', et cetera.





Thursday, November 8, 2012

Eclipse/SVN Nice Going


Trying to add new property 'svn:ignore' with value 'target
.settings
',
but property already exists with value '.settings
target
'.

Tuesday, November 6, 2012

Missing Quick Fix In Package-Info File

Creating a package-info.java is useless without the package declaration. But strangely, in Eclipse, you get no error if you leave the file empty. And the usual Quick Fix to mend the package declaration is absent. Odd.

But the solution is simple: just add a "class X {}". It's legal syntax, and when that class declaration is present, you'll get that helpful Quick Fix. You can then remove the class if you want -- after you invoke the 'Add Package Declaration' Quick Fix.

Java Project Modularity Woes

We want to publish:
1) an API (DTOs and stuff), 20 classes or so.
2) a devkit. A simple server based on Jetty, less than ten classes.

Now, of course there are ways to do it. But no really good ways, I believe.

We may have to use Maven here.


Basic Maven Project Build Fix Tip

Sometimes, in Eclipse, a maven project will not be properly set up. For instance, when you create a maven project by creating a pom.xml file inside a folder. This can be seen by inspecting the '.classpath' file -- it will contain only these three items (or similar):


<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> 

<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/> 

<classpathentry kind="output" path="target/classes"/>


Then, what you do is this: simply "Disable Dependency Management" and then "Enable Dependency Management" from the "Maven" menu in the contextual menu from the project. If you keep the ".classpath" file open, you'll be able to see the what happens.

In the 'Disable' step, the Maven entry disappears:
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
Then, in the 'Enable' step, the entries which enable the build appears:
kind="src" output="target/classes" path="src/main/java"> 
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
 along with the 'MAVEN2_CLASSPATH_CONTAINER' thing mentioned above. Done!

--

Today I discovered that the above maneuver is in fact useful to handle another problem involving mis-synchronization between ".classpath" and the "pom.xml" file. Article forthcoming.

Monday, November 5, 2012

AWS Alarm Super Easy to Set: Warning

Mea culpa: I must've not clicked the link in the confirmation email. Just tried adding my email, and now it shows up in the SNS console of 'NotifyMe'. Me bad,AWS good!

However... it would be nice if the AWS alarm GUI could warn me of such a condition as where a notification has no confirmed endpoints.

---

In a previous post, I stated that the AWS alarm feature is super-easy to use. That may be the case, but it seems to not have sent me the notification mail I expected.

So now I am trying to find out information about what happened, and that turns out to be not so easy.

Clicking the link next to the alarm status icon gets you alarm info -- good. Then you can get history data pertaining to this alarm -- fine. And even some JSON describing what happened -- might be useful.

What seems not possible to get, is information about the action connected to the event. I am pretty sure that I filled in the e-mail field correctly, but what else might cause me to not get that email? So I want to check the settings in the connected action, which happens to have the name "NotifyMe".

In the "Edit" view, there is this information: "This is an SNS Console managed topic and cannot be viewed". 

That's an unexpected complication. By the way, 'SNS' means 'Simple Notification Service'.

Entering the SNS Console, there is no trace of the email I entered back when I created the alarm. Mysterious. 

Why did I think that it'd be easy, and Just Work? It's a rare event -- like diamonds -- when something just works. I should've tried the alarm out, of course. 

Maybe there is an email sent as confirmation when the notification is set. Then you could check that email, and if you don't get that email, something is wrong. 

Wednesday, October 31, 2012

4 Min

See if I can make it while downloading another Eclipse download...

Apparently, there is an Eclipse download with Maven built in. Name ends in "for Java".

That's good; I didn't know. Installing via the 'Software Update' always irritates me, with first adding a url to a download site, which you can't find via the GUI (I think?), and which is hard to google up anyway.

--

No, download still downloading. What can I add in 1:22, ..., 1:14, ..., never mind.

AWS Alarm Is Super Easy to Set

See this: http://impossible-is-development.blogspot.se/2012/11/aws-alarm-super-easy-to-set-warning.html

---

My blog posts are 2/3 whining, aren't they. But there's the occasional happiness, when some thing or other goes friction free. Here's an example: setting an alarm in AWS is really straightforward. For instance, "when CPU is above 60% for 15 minutes, send me email".

And the same status is shown clearly with a green check mark, so you don't need to rely on your inbox.

OTOH, it hasn't triggered yet...but why shouldn't it work; they send me email about new features every other day it seems...

Me's Features

...and why not make a Misfeature List for thine own self, good blogger? Long one, or weighty bullet points on it?

--

Aka "Number One Features", b-pssh.

Java Misfeatures Collection

The Misfeature Collection blogging pattern again, applied to Java, the language.  Things big and small.

1) There should be a 'Integer' super-type for all the integer types (Byte, Short, Integer, Long). The name's taken, unfortunately. That's another misfeature, but understandable, 'int' was inherited from C/C++, I suppose. They could've named Integer as Int; and had Integer as the super-type name.

1a) Same thing for floating-points, of course. 'float' is traditional. But float could've been 'Single', IIRC there are languages that use 'single' as the name of single-precision FP numbers.

2) Annotations should fit in better with interfaces. Lots of good reasons for this; and only the 'tools' excuse on the other side, right?

// THIS TOO, SHALL AMASS //

Monday, October 29, 2012

Eclipse-Java-Maven-Svn Issue Top-N List

Let's do the same for the Eclipse-Java-Maven-Svn accretion as I did in the Javascript-Sucks blog entry: collect list of the most irritating issues.

1) Svn/Subclipse client implementation crappiness. Stuff like:

"Problems reported while synchronizing SVNStatusSubscriber. 0 of 1 resources were synchronized.", "Error getting status for resource", "org.tigris.subversion.javahl.ClientException: Working copy not locked; this is probably a bug, please report",  "svn: Directory '...' containing working copy admin area is missing". 

2) Multi-module maven projects, complaint A: why do they all have to be their own project; or rather: why do they all have to be displayed in a top-level project list?


3) Multi-module maven projects, complaint B: enabling Workspace Resolution (which is a good thing, mostly): why can't I inspect the imported jar as for the jars in Maven Dependencies that are not W.R. enabled? (Solution: temporarily disable; so not a huge deal.)

4) No good svn 'clone' command. What I do now for discrete files is either: Procedure A: 1) usually make sure it's committed, 2) 'rename' and 3) then 'revert' only the old deleted file. Or Procedure B: 1) drag a file 2) revert old location. File contents usually need to then change also, e.g. type name in A, package name in B. There's also Procedure C: use the svn CLI in the terminal.

5) There seem to be no 'fix all package declarations' command. This would be useful after some of the above mentioned svn clone operations. 'Fix imports' does exist. Fixing package declarations would be trivial to implement, easier than 'Fix imports'.

--

6) Subclipse bugs. Sheesh. For instance: renaming a folder. First step is easy: rename the folder. Committing the 'new' folder usually works. But then, Subclipse, or SVN, decides that there is some sort of conflict and refuses to commit without a dance involving at some point the 'Mark as Resolved' command. (Maybe helps if you always to 'update' on the parent folder of the original folder before the rename? Will probably never remember this, so mileage may vary.)


--

I won't ever have to create new blog posts, just keep piling up.

7) The set SVN property dialog. "Another property has the same name". WT*? So why don't you fetch it so I can edit the value? Or at least let me save a new value without going back and removing the property, should I choose to do so?

--

8) You can't just get by with a pom.xml for maven projects, the '.classpath' has to be in sync too. See http://impossible-is-development.blogspot.com/2012/11/basic-maven-project-build-fix-tip.html.

9) The '.classpath' generated for maven projects will include the test path too. Fertile element for spawning build error fallout, unless you also run CLI builds to be sure you don't reference any of the classes or things in the test tree.

--

10) "Working copy not locked; this is probably a bug, please report
svn: Are all the targets part of the same working copy?"

Oh right:
11) The fantastic misdesign where all the svn checks are done _after_ we've filled in the commit dialog.  And the dialog is closed. And the settings are mostly _not_ remembered.

--

This is no longer a Top-N list; it's just a pile of 'dirt'.

12) Dialog "Launch Error": '[editor/selection] does not contain a main type', etc. WT*: I ran it three minutes ago. And I am looking at this: "public static void main(String...args) {". And I haven't changed it. Some internal cache bug? Eclipse exit-relaunch helped none. Clean? Let's try...no. ...stumped.

--

13) This is a classic one: Alt-Click on a project (usually) will unfold the whole tree. This can take...some...time. Usually ends up in killing Eclipse and restarting. Nowadays, with a SSD, it usually never takes that long. But sometimes, like right now; and I don't know what's makes now a bad time to unfold. -- A timeout here would be nice; or simply a limit on the number of unfoldings.


-- MORE TO COME... --

Sunday, October 28, 2012

Double Period Brings Completion


Context: Eclipse JS Editor. 

The "|" in below examples is the caret. Cmd-Space in this situation: 

list_elem.|

does not bring up any proposals. But in this situation: 

list_elem..|

...useful proposals are shown! Wt*?

JavaScript Development Sucks

I'll try to be constructive. First, I'll collect a list of things that are ...bothersome. Then, each problem can get its own blog post, at least the non-trivial problems, with discussion and hopefully some solutions or work-arounds.

This list is about developing using a browser, not about running Node.js or something like that.

Here we go...

JavaScript Development Issues

Tool Issue:

Issue: Fake read-only files in browsers. I often edit the source code in the browser by mistake; and then I can't save the edits.

Issue #2: Staying stopped at breakpoint uses two cores (in Chrome). Slows down the whole computer. Also makes fan noise, burns energy, creates heat.

Issue #3: Debugger not active on some reloads.


Issue #4: Chrome crashes when my Java server is terminated. (Solution: close affected tabs, so that the connections close. Without connections, Chrome seems to do fine.)

Issue #5: Sometimes getting stuck before anything at all is shown: no page, no debugger, nothing but whiteness.

Issue #6: Dependency management.

Issue #7: Editors/IDE.

Issue #8: Eclipse Java + JS == not true. a) When a JavaScript view is open, you can't do Open Type. Very annoying. b) 'Run' command on JS file gives me: 'Not on JS build path'. Damn annoying.


Issue #10: Too dynamic. No type system. No constants. No block scope.

...to be continued.

Chrome Debugger Multithreading


This is what multithreading means in the context of the Chrome Javascript debugger:

1023 Google Chrome Helper 81.9 5 111.9 MB  Intel 1025 Google Chrome Renderer 70.3 6 78.5 MB   Intel

So it makes use of multiple cores: 


This, when halted at a breakpoint. Well, winter's nearing, and it's probably going to be a cold one, so we may need the extra heating. And maybe Chrome 23 will fix this...right. 

I'd really like to know what it's doing with these cycles. 

Thursday, October 25, 2012

Maven Dependency Type 'jar' Not Added Automatically

After a half-hour or so of not understanding why some Java imports didn't work.

I noticed that the letters 'jar' was missing from the dependency listing.

I had tried using the Eclipse maven assist GUI to add a dependency.

And apparently the it's not enough to just search for the dependency and say OK when selected.

Which is Odd because I've done it a few times and it's worked fine.

All these little things.

All. These. Little. Things.

That.

Add.

Up.

To.

A.

Large Amount Of Wasted Life And Time And Money.

Yesterday Eclipse, Today Eclipse; Extra Character

Just had a weird error, where it looked like Eclipse thought that a Java file was at the source root level, aka default package, and Quick Fix wanted to remove the package declaration. "Oh god, not another one" would be a nice description of the sentiment.

Thought it was another Svn problem, so I opened the Properties dialog, to find out what could be found out. Today is a much better day than yesterday, so it had nothing to do with Svn. The end of the path looked like this:
api/pub/annot%C2%A8/ApiPath.java
So then I looked in the GUI, and sure enough, there is some trema-looking extra character there that I didn't see, that I must've added inadvertently.

But I don't know why it made Eclipse think wrong about the packages.

This might mean that package names aren't allowed to be any unicode? If so, that's an unfortunate irregularity: other Java identifiers can be in unicode. But it's probably just that diacriticals are not allowed as characters in their own, which is very sensible. The Character.isJavaIdentifierPart method tells which characters are allowed, which is what I learned from this incident.

--

Today's UTF-8 character is: http://en.wikipedia.org/wiki/Diaeresis_(diacritic).

And as you can see at  http://www.fileformat.info/info/unicode/char/a8/index.htm, this character cannot be part of a Java identifier; the Character.isJavaIdentifierPart is false.

Wednesday, October 24, 2012

SVN Delete-Revert For Cleanup

In Subclipse, instead of the 'cleanup' command, simply delete and revert instead. If you don't have any uncommitted changes, of course. Works much better.

Firefox: No "innerText"?

Wow, 'innerText' is not supported in Firefox?
And something called 'textContent' is more standard?
New stuff to learn every day. Good thing I decided to try Firefox for a while; it's been months.

Just wrap everything in jQuery, I guess. 

Firefox Debugger GUI

It appear to be the case that...

...the breakpoint markers cover the green instruction pointer completely?!

Oh, and how hard would it be to add the keyboard shortcut to the step button tooltips?

[...let's try installing Firebug and see if that's better...]

Ok, Firebug installed. Conflicting Dashboard F12 binding disabled (Dashboard -- what is it good for?).

Oh, 'Debugger not activated'....how do you turn it on...

Oh, the other debugging session with the built-in debugger caused it to not work.

Ah, finally. And praise the firebug developers or whatever: the Firebug 'instruction pointer' is on top of the ...breakpointers.

...and, more goodness: the step buttons have shortcuts in their tooltips!

Tuesday, October 23, 2012

Curl Is Great

Trying some HTTP code I've written. A redirect works in Chrome, but not in Safari, and not in Firefox.

What gives?

The developer tools in Safari and Firefox are not up to the job. I have some potential posts on the webkit developer tools queued up, so let's leave it at that for now.

So, after a while, my thoughts turn to telnet. But before I get to try it, I get a better idea, as it would turn out: trying the 'curl' command. (The headline should perhaps read cURL, for the capitalization pedants.)

And this message is written to the terminal:
* no chunk, no close, no size. Assume close to signal end
Aha! Yes of course. This is what the words 'good feedback' can mean.

You just need to give curl the '-v' option.

IntelliJ And Eclipse (Mis)Feature

Trying IntelliJ 11 CE (Community Edition, Free or something).

Partial word search is just as wrong as in Eclipse: no reordered matching, no initial wildcard by default.

Amazing. Does such a vast majority of all developers remember what their names start with? And the ordering of the words of their RatherLongMultiWordCamelCaseIdentifiers?


Ipad Mini Pixel Reservations

Here's a "Not programming." post. Might draw some readers, perhaps...

I have an idea, which at least sounds plausible inside my head; and publishing it here would allow me to say 'you read it here first'  tomorrow. Or next year, or whenever the idea gets hardwared.

It's about a simple way to be able to keep the size of the iPad screen in the iPad Mini, but be able to cut off upwards of an inch on the physical size of the device, and still solve the holding problem. What you do is simple: cover the whole area in pixels. Then, using the touch sensors that come with those pixels on a touch screen, it's trivial to detect where the device is being held, and move the displayed image to the non-obstructed area.

The drawback is the cost of those extra pixels. But the cost of screens go down with time, so the price might be the same as the original size screen, one year later.

And, you get some extra pixels. For Apple, those pixels might not be very useful, since part of their success is finding the Right Size, and then standardize on that screen size. So most apps may not be able to make use of the extra pixels.

There is of course the possibility of scaling. But scaling at these ratios may produce ugly artifacts, and even the high pixel density of a Retina screen may not be enough to counter these effects. Worth trying, though. Maybe scaling up to the extra pixels might work. But not keeping the same pixel count and scaling down to move the display area to a non-occluded area. I think it depends heavily on the specific graphics displayed by different applications; it could work for many apps, but not so well for some other.

Without scaling, what might these extra pixels be used for? Well, screen-size-aware applications could of course make good use of them. Or they could be used for notifications that don't intrude on the pixel area of the running application.

And how about this: I'm too lazy right now to calculate it, but the 16:9 ratio might be achievable. Then there is at least a use for the wide extra pixels. But to get there, maybe too much area has to be added in the tallness direction. On the other hand (no pun intended), when showing movies, you usually don't need to hold it, but you can prop it up in a stand or something. Or you can hold in at the lower long edge side. So you can use the extra pixels on both sides.

So that could make for a slighty odd-looking alternative: a less wide iPad, but same tallness. But the world would get used to it pretty quickly. And copy it.

Well, there you have it: pixel reservations. Would be fun to see it realized.

Sunday, October 7, 2012

Friday, October 5, 2012

Eclipse vs VisualVM, JProfiler, YourKit

If you're in doubt as to which running Eclipse process you attached one of these profilers to, you only have to tab through the apps in the app selector, and the one that doesn't respond, is it. Or on OSX, open Activity Monittor. The one at 100% CPU, that's it.

What is the design target for these profilers? "Hello World"?

(Ok, I know I am being unreasonable, as usual.)

13K Methods Is a Bit Much

Profiling Eclipse 'Quick Type Hierarchy' popup using VisualVM:


...and VisualVM and the target both grind to a halt, or at least something indistinguishable from a total stand-still. And this is after giving VisualVM 1400MB max mem. I forgive it for locking up when it had filled up a measly 256MB, the 'factory' setting in the visualvm.conf file. And this time, the modal dialogs are responsive -- compare last blog post.

The mystery is, why does Eclipse have to call 13K methods to index?

I suspect that it actually does not. Instead, I think that it loads all those classes that it indexes. And I suspect instead that VisualVM overrides the class loading code to instrument everything that gets loaded.

There could not be a much worse match of profiler algorithm and profilee activity...


VisualVM Irony? (Picture)


(EDIT: Well, I guess it's not entirely apparent from the picture, but the VisualVM is X-Tremely unresponsive here.)

(EDIT2: ...if only GUI implementation people would realize (both meanings!) the usefulness of threads...)

(Just one more clarification: The buttons of the dialog/s are totally unresponsive.)

(See next post. Editing visualvm.conf to offer more memory to VisualVM fixed the dialog responsiveness. And some of the GUI responsiveness, generally, at least when the instrumentation was reported as finished.)

Sunday, September 23, 2012

Whoa -- IOS6 Safari Caching

I've often suspected that Chrome did cache rather too tenaciously, although I am not 100% on that. But it seems iOS6 has gone beyond the whole hog, and caches HTTP POST requests:

http://stackoverflow.com/questions/12506897/is-safari-on-ios-6-caching-ajax-results

Whoa. Well, this kind of thing is a reason to be _very_ explicit in our HTTP response headers. Let's always set the Cache-Control header. Cache-Control: no-cache is a good default. For POSTs, at least.

Friday, September 21, 2012

Weird Eclipse Open Resource Matching

In Eclipse's Open Resource dialog, "*TEU", or even "*TEvalU" should match 'DjangoTemplateEvalUtil.java', should it not? Well it does not. My little theory is that the 'E' is used up by the 'e' in 'Template'. Which must be seen as a bug.

However, "DTEU" matches on the subword initial capitals. I'd say 'go figure', but hey. 

Can't trust anything these days :). It looks minor, but it's really a pretty serious problem, if you rely on your names to be able to find stuff. And not wasting time trying to figure out why something that you feel should be found. If it matches "DTEU", you're expecting it to match the looser (loser) pattern "*TEU".

Tuesday, September 18, 2012

1/86400 Hz Blogging

Why not write a blog a day? There is no shortage of subjects. There is a shortage of time. Maybe set a limit on time for writing each blog. 20 minutes, perhaps. Go.

Well, a posting deserves a relevant subject line; so this may have to do for today. That's 2 minutes... I could do 10 each day. Micro-blogging, I think, that is.

Monday, September 17, 2012

Eclipse Great Feature: Move Updating References And Commit

Some of the lists in Eclipse allow for bulk operations on them. Find references is one of them.

This allows for the following extremely useful procedure to work: you move and/or rename your Java type definition. This causes uncommitted edits. If you're a mis-en-place, clean, only-does-one-thing-at-a-time operator, you'll just do a commit all to commit these changes. But, if you're like me, you usually discover out-of-place types (classes, interfaces) while working on something else. Anyhow; there may for many possible reasons be uncommitted changes that you're not ready to commit. This makes it difficult to separate the files to commit from the files to keep 'dirty' (let's not consider the case where the same file contains both kinds of changes right now).

That's where for move refactoring operations, the 'Find References' feature will (may?) work fine: the list of found references seems to allow bulk commit. Select all the files you want, and then pop up (left mouse button click or Ctrl-click) the contextual menu. Team > Commit, and you will have your referencing occurrences committed.

This leaves the moved definition file changes, unfortunately. So of course the commit-all is really preferable, if appropriate for your situation.

It would be great if Eclipse would give you an option like: "Would you like to commit all the changes caused by your last action, File moved?".

And if it'd separate relevant changes from irrelevant changes in the same file, that'd be magic.

And if it'd allow selecting actions to commit, from a list of recent actions, that'd be more magic.

Anyway, there is actually a simple two-thirds-of-the-value solution for this: list files in "mtime" (last changed time) order, and allow selecting a range to commit. (Deleted files will be an wrinkle, though.)

I have some more tips on moving files in Eclipse, but they'll have to wait.

So that's that. Consider this a first in a (potential, no promises) series of Eclipse workflow posts. I'd like to know if there are already such things written, so please comment if you know.

Sunday, September 16, 2012

Incredibly Useful

Browsed through the Amazon Kindle Press Conference video (at https://www.youtube.com/watch?v=VYi1jZXz9Kg). Bezos reading (I had to correct the lousy auto-transcripted lines):
"King Stanis, lord of Dragonstone, younger brother of the late king,"
15:02
"Robert, has dark blue eyes and only a fringe of the black hair remaining on his"
15:06
"head"
15:07
"circling behind his ears like the shadow of a crown (crab?)"
And then he comments:
15:10
incredibly useful

Couldn't help an amused laugh, sorry to say. I guess I am a chuckler-at-fantasy. Anyway, the feature seems very nice.

Friday, September 14, 2012

Quick Whine #1: OSX Open File Dialog

Ways in which the OSX Open File Dialog is lame. Partial screenshot showing perpetration:


(A small detail first: the (American) date format is lame. ISO is the appropriate format. Mea culpa for not fixing settings, of course.)

Why no file sizes? Why no thumbnails? Why no preview? Why leave the huge space to the right unused?

And if these defaults are designed such as to, I don't know, leave the regular Joe Non-Power-User with a soul unperturbed, why isn't there a small 'settings' icon to click? Or the usual Cmd-Comma for settings?

Thursday, September 13, 2012

Eclipse Call Graph (You Can Sometimes Get What You Want)

Just stumbled upon a blog post. The usual list of the usual tricks. All the usual shortcuts mentioned, refactoring, Find Type, etcetera. Yawn, seen it, used it.

But at the end of the section I was reading, the Ctrl-Alt-H key combination in Eclipse was mentioned, which shows a static Call Graph (a tree really). Yes!

The thing is that I've been wanting this and been looking for this, but not been able to find it, and given up. In my Eclipse, it's not shown in the context menu, oddly. That's some really bad 'discoverability', grumble, grumble. So I thats why I make a blog post simply to repeat the message. 

Thanks Cygni blogger, whose name I've forgotten already! (Not in English: http://cygni.se/2007/11/27/eclipse-tips-och-tricks/.) 

I Need a Word Here


Is "declarativeness" an acceptable word? Doesn't sound very good, doesn't roll off the tongue. Where do you put the stress?

"Declarativity" is easier to say. So let's use that.

The concept is useful, though. It could be phrased as "level of declarative expressivity". Or "aggregate expressivity of available declarative features". Etcetera.

---

Well, Google seems to bear this out:

Declarativity: About 24,100 results
Declarativeness: About 10,600 results

---

Declaration-oriented? Declaration-prone? Declaration-expressive?

Sunday, September 9, 2012

Nothing To See Here


This post is a stand-in for "Drafts 48 -- Published 35; Timeout", which is a stand-in for "10 BPM", neither turned out good enough. What I intended to do was to just take stock, try to philosophize a bit on blogging, and make a feeble declaration of purpose. Well, this is the stock of drafts, below. If any one/s of these seem interesting to you, comment. The ones named '(Untitled post)' are the surprise boxes, I guess.

Drafts 48 -- Published 35; Timeout
7:13:00 AM

"Any Obstacles?"
9/8/12

Mood Maintenance
Edit | Delete
9/7/12

Rantom Opinions
9/7/12

M-CPS
9/7/12

Jquery Ajax "Accepts" Parameter
9/4/12

Parse JSON Into Existing Instance
8/28/12

Eclipse F5 Disaster
8/28/12

10 BPM
8/28/12

Jesus H. Cox
8/13/12

Stack Overflow Strategy
8/13/12

The Fresh Eyes Documentation Sync Strategy
8/13/12

Force Start
8/13/12

Motivaion
8/13/12

Knowledge Encoding Is Impossibly Hard
7/6/12

Is "Help" Possible
7/6/12

JBoss Meditation Blur Event
7/6/12

Postprandial Tiredness
7/6/12

(Untitled post)
7/1/12

Juno & June
6/29/12

(Untitled post)
6/29/12

(Untitled post)
6/29/12

(Untitled post)
6/29/12

(Untitled post)
6/29/12

Friday, September 7, 2012

Juno II, The Brightening Up

Back in Eclipse Juno, incidentally, had to use a new Eclipse due to a mysterious error with a cryptography module not getting found. Stopped using it a couple months ago because it seemed to have small bugs. Possibly one of them was that Subclipse seemed badly integrated. The small file status symbols didn't show; or sometimes all files appeared with the question mark symbol making me think it didn't work.

But today it is looking fine, after both things happening at first; no symbols, then question marks. Then after a restart and a "Could not write metadata for '/RemoteSystemsTempFiles' modal dialog, and a while, and now they are showing. It might be the synchronization command I invoked was needed to finally get them showing.

So if you're seeing the same thing, just be a bit patient, do a 'Synchronize', and your day may brighten up some.


---

Oh, no, not bright. Installed the 'm2e' Maven Plugin (I think). Going from not finding "javax.persistence", to:


 The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files

And 'java.lang.Object' would probably be the most resolvable class in Java. 

---

Had to explicitly convert the project to a maven project. Odd, because: 
1) the .project had a couple of maven-related settings; maven2Nature and whatnot. 
2) ISTR that .pom files are auto-detected? I probably remember wrong. 

Better. 

...except: 

maven-dependency-plugin (goals "copy-dependencies", "unpack") is not supported by m2e
Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (execution: default, phase: initialize)
Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (execution: create_db_and_user, phase: initialize)
Plugin execution not covered by lifecycle configuration:
 org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (execution:
 create_test_db_and_user, phase: initialize)

Great. Well,  I believe we had at least the copy-dependencies those to support an old ant project setup, copying maven lib dependencies into some folder for ant to deal with, so that might be ok.

...maybe I should have installed m2eclipse instead? I thought they were practically the same thing. But 
here is an article that begs to differ: http://java.dzone.com/articles/migrating-m2eclipse-m2e

Ok, so how do I uninstall m2e and change to m2eclipse? The menus give no clue. 

...ah got it: select "Install Software..." menu item; the install dialog contains a "already installed" link. It has "Uninstall..." buttons. Of course, why didn't I think of that first? 

Selected the two items that seemed to have to do with m2e. (Restart, problems saving state modal dialog...)

---

Ok, Eclipse Marketplace, what have you got for me? m2eclipse-wtp seems to be the closest match for m2eclipse. ...ouch, "unsigned content". 

Let's try the other one, "Install New Software...". m2eclipse-wtp -- what the, it contains only m2e? Maybe I can't get an older m2eclipse with Juno? 

-- 

The blog I found above has a nice article here: 
which seems kind of relevant; for instance this passage: 
However, the problem is much more widespread than m2eclipse. It’s very similar to issues adressed in Andrew Spencer’s post, only more so since if we don’t upgrade, we may have to keep an Eclipse instance for each project, that has to be shared between all team members. Right now, I don’t have any solutions for this problem, apart from changing the code to keep in synch with the tool.
---

Tried the "Discover new m2e connectors" link in quick tip. I don't know what those are, because nothing showed up.