PrimeFaces and Spring Web Flow

I usually applaud PrimeFaces for its simplicity, ease of integration with other component kits, and its extensive collection of components. The documentation is pretty good, too, as long as you ignore the myriad typos and just plain wrong things. Recently, it almost officially got Spring Web Flow support in the 1.0.1 snapshot builds. (I had been running it with SWF already, but the 1.0.0 release broke that.) I assume that in the rush to get it up and running, there was an integration oversight, and that means that you can’t run SWF with PrimeFaces and another kit with AJAX components at the same time. That’s okay, because it’s an easy fix.

[Read the rest of this entry...]

Philosophize on *this*! (or, fake science at Scientific American)

This is my response to the huge honking turd that Scientific American put out: Scientists say free will probably doesn’t exist, but urge: “Don’t stop believing!”

Oh, where to begin? First, this isn’t science or scientific. This is religious propaganda poorly disguised as science, and funded by a religious organization. It doesn’t belong anywhere near this magazine that once had value, but Templeton has deep pockets.

As it is presented, the “experiment” is fundamentally flawed. Testing all of humanity against a constrained and insignificant sample space does not produce relevant results. Were people tested over time? People from vastly different societies? People who are “mentally handicapped” such that they don’t value what the usual selfish human values (nihilists)? What about people from other times? People of different ages? Heck, it doesn’t even matter. It was just 30 people! Maybe the experiment should have been testing why these people behaved this way. Repression? Pervasive fraud and lies in our society? Shortage of resources? Rebellion against stupid experimenters?

Sorry, but why the hell would you send me back to stop WW2? Knowing full well who funded this experiment, it would make no sense because I’m not Jewish. Like many others, I probably wouldn’t have been born if it wasn’t for WW2. (Then again, maybe I wouldn’t have been born if Hitler won.) Why would you recommend that I essentially kill all of THOSE people that would have existed AND myself? Why wouldn’t I be sent back to the 1300s with some god damned penicillin? Do you know how many people died from the plague? Probably not, but I can tell you that it was orders of magnitude more than WW2. Just for your insolence, I may very well send Hitler’s mother back to the future, stay there and get his job done right, and then his mom can have another baby Adolf who will rule the world that I created! Since we’re talking nonsense here, maybe I would hold my breath in transit and go all the way back and kill Abraham. That way, there wouldn’t have been anyone to kill in WW2, or survive and complain incessantly (your pick!) If you want a religious twist, send me back to the Inquisition. There, you will find me probably doling out punishment because THOSE PEOPLE SURVIVED! Tourism! Give me any other period in time that would give me the opportunity to extinguish one of the major religions and I’m in! Really though, I would probably use my few minutes to find a brauhaus and get a hot dog and a beer. Philosophize on that.

Back to science… With perfect knowledge of a system, nothing is random. Randomness is only what we use to explain that which we cannot observe. It’s perceived to be random. So, removing the stochastic element from the universe, it’s all just math. I can see that there’s no shortage of assumptions here that our “free will” is somehow insulated others’ actions. It’s the same system. Drr.

Lastly, anyone suggesting that science should not be full disclosure should be burned. People can handle the truth. People may think that they can’t because they have been coddled for so long, as well as the usual nefarious reasons (sex, money, power.) Sure, as with all big changes there is time for adaptation, but that’s one thing that humans are good at. Regardless, it’s contradictory. Stating that telling everyone that “free will” doesn’t exist and expecting the same outcome essentially states that humans are deterministic and can’t make up their own minds!

Seriously, though. Does anyone really think that people don’t already know all of this? Sure, they may go to church, pray, and say that they are nice people, but deep inside they are in denial. What they really want is to bang Miley Cyrus or Mel Gibson. “But I wouldn’t!” Pfft. Okay, if not that, they definitely want to have enough (or lots) of money, be free from bills and government, and basically… exercise free will! It’s a good thing that they are sentient enough to know that a little bit of greed gets you places. It got humans this far since it’s part of our toolkit of survival instincts. Telling humans that they must deny their humanity just reeks of religion. You’re a sucker if you hit that space bar.

EGit May Eat Your Project

I moved a few client repositories over to Git from Subversion over the weekend and I started using EGit. It works pretty well, other than that it’s missing the Team Synchronize functionality, which is sorely missed. The most you get is a single file diff. The only thing you have to watch out for is renaming projects. For some reason, and this goes back to March 2009 I guess, it loses its configuration. None of the decorators will be there anymore and there will be no mention of your respository. If you check the Error Log, you’ll see an error something like this:

Git team provider configuration has gone missing.

java.io.FileNotFoundException: /home/xxx/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/<projectname>/org.eclipse.egit.core/GitProjectData.properties (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at org.eclipse.egit.core.project.GitProjectData.load(GitProjectData.java:402)
at org.eclipse.egit.core.project.GitProjectData.get(GitProjectData.java:165)
at org.eclipse.egit.core.GitProvider.getData(GitProvider.java:69)
at org.eclipse.egit.core.project.RepositoryMapping.getMapping(RepositoryMapping.java:244)
at org.eclipse.egit.ui.Activator$RCS.run(Activator.java:322)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

It’s easily fixed, though. Just recreate that file with contents like this:

#GitProjectData
#Mon Mar 29 08:01:28 CDT 2010
.gitdir=.git

Voila.

Yawn of the Day

Oh no. Someone just realized that after agreeing to a contract allowing it, information willingly given to a company essentially gives that company the right to do whatever they want with that information. Drrr. That someone is Harriet Jacobs, ultra-victim.

I’m approving this after deleting hundreds of comments like this, since I’ve addressed this a few times already

This explains why the comments are basically an extension of the yawnfest, where it’s all, “Oh, your situation is so bad. SUE THEM!” I giggled when I read that she should get a cease and desist order, with all of the white knights chiming in.

I opted out of Buzz when it arrived, but it still auto-followed.

Hm, what is the law that protects someone in this case? I’m more than guessing that there isn’t one, since it’s probably stipulated in the contract that services may or may not work properly and data you give them still belongs to them. You opted in to just about everything when you decided to use Google services. Read the not-so-fine print. Or, hey, since you are an ultra-victim, maybe you should not make anything public in the first place.

You must not know this, but no matter how you think the world should work, if you are afraid of the world, you should not be flying a flag. It only attracts all of the bad things you are afraid of. That’s real, and your bitching away won’t change how humans really, truly work.

So! All future comments about, “Turn Buzz off,” “Make your stuff private,” “Don’t approve contacts,” “Make your profile private,” “You shouldn’t have approved Buzz in the first place” are to be deleted, because I DID ALL THOSE THINGS.

Google is not in the business of protecting anyone’s privacy. Haven’t you read the news since they started business? Do you know anything about the people you gave your “private” information to? Did you gamble with your life (!) and incorrectly expect them to be in that business? Google sucks for a lot of reasons, but not because you still live up to your history of misplacing trust.

facelets.BUILD_BEFORE_RESTORE brokenness

I have finally had some time to sit down and figure out why submitted form data was disappearing when there were form validation errors. I tracked it down to facelets.BUILD_BEFORE_RESTORE, yet another one of Facelets completely undocumented features.

You may be wondering why I had it enabled in the first place, since I didn’t read the documentation that doesn’t exist. Well, I’m dealing with a few sizable forms and a pretty small heap, and according to this Facelets enhancement, I would get a magical 30-60% memory savings. Great, except it breaks everything.

BUILD_BEFORE_RESTORE seems to go back to 2006, when it was added to save on saved state size. 10k down to 600 bytes sure sounds like a big deal, except it breaks everything.

I’m not the first to notice this, and people have been having problems with it ever since:

Similar behavior was noted and fixed in MyFaces, but it was related to UIInput. Maybe the mechanism is similar.

So, I went back and took out the web.xml mods. Mojarra didn’t like this. It didn’t break, but it felt it necessary to recommend that I break it back to where it was:

WARNING: facelets.RECREATE_VALUE_EXPRESSION_ON_BUILD_BEFORE_RESTORE is set to 'true' but facelets.BUILD_BEFORE_RESTORE is set to 'false' or unset. To use facelets.RECREATE_VALUE_EXPRESSION_ON_BUILD_BEFORE_RESTORE you must also set facelets.BUILD_BEFORE_RESTORE to 'true'!

Sweet. facelets.RECREATE_VALUE_EXPRESSION_ON_BUILD_BEFORE_RESTORE is true by default, so you need to go back into your web.xml and disable it if you don’t want to see this nagging message all of the time. If you work in a team, you almost certainly want to squelch this message so someone who isn’t in the know doesn’t go in and break everything because the machine told them to.