The Kaptain on … stuff

And even more important perhaps, the “developer APIs” they’re hinting at. There seems to be a lot of talk about this being the next ‘Google-killer’, but that really doesn’t seem to be the point of this service. My personal interpretation of the new Wolfram|Alpha service – this is the Mathematica guys showing off, and I really can’t blame them. “10+ trillion of pieces of data, 50,000+ types of algorithms and models, and linguistic capabilities for 1000+ domains.” Ok, you can stop – you had me at “10+ trillion pieces of data”. Count me geekily intrigued.

For a little background, this is the same company that first released Mathematica almost 21 years ago. They’ve had a very long time to refine and expand their repertoire as well. Mathematica, with its somewhat weird and wonderful syntax, is in general a powerful language and platform for computation and visualization. Or so the PR materials claim. They also boast that it is “The world’s most productive programming language.” We’ll just wait and see, now won’t we – and potentially have a Groovy showdown to answer that question.
🙂
So what are the Mathematica guys doing now?

They’re Giving It Away!

Yup. Free, as in beer. The comprehensive knowledge-base and set of algorithms developed in Mathematica are backing the Wolfram|Alpha site(WA from here on in cause it’s too much to type, tyvm), providing some great visualizations and, at least so far, some pretty good interpretations for natural language queries.  While hit and miss for some things that WA doesn’t know about(yet), what it does know it shows off pretty well. Locations resolve to census and geographical data, and what good mashup would be complete without Google Maps integration.  It can give you a comprehensive weather report, for now or for a decade in the past.  The part that caught my attention was the easy access to genomic data. I was delighted today to find that they have a fairly comprehensive library of “Life Sciences” data, algorithms and examples available. If you enter a genome sequence such as AAGCTAGCTAGC you get chromosomal matches. Information on proteins, SNPs and other biological tidbits is also readily available.

There are a couple of catches here, of course.  No robots allowed, although how they will enforce this I do not know. If you use the content somewhere else, give appropriate credit – citing sources is hardly painful for good info. No reverse-engineering, etc to try and steal their product or algorithms. And no commerical use allowed, which stands to reason coming from a company whose flagship product appears to start with a $295 home edition pricetag. That last one leads me around to the topic of this post.

How much to subscribe?

They’re not being at all coy about their intent to monetize WA. I couldn’t find a pricetag anywhere, but you can bet that their subscription link has been clicked a few times today. With promises for API’s, the potential for companies to purchase/rent their own private WA servers, and delivering the content through a browser powered by a single text input – these are some pretty compelling selling points, at least IMO. It’ll be interesting to see where the bottom line is for this potentially powerful service. In the meantime, they’ve done a fantastic job of getting the world at large to load test their software for free. And if they ever put out a free developer version, you’ll be seeing a future post. In the meantime, I’ll be looking for some indication of how much it’s going to cost. If the price matches the hype, it won’t be cheap, unfortunatley.

[nggallery id=4]

Reblog this post [with Zemanta]

Over the last year I’ve done a lot of work with JBoss Seam, and while it’s not Grails it’s also not that bad for a web framework. Facelets is the view technology of choice, and it’s certainly better than many alternatives, but at the heart it is still xml and all those brackets make me dizzy after awhile. Along comes Gracelets to provide a nice builder DSL and Groovy integration as a replacement for my xml woes. Yay! It also brings some great simplification to the creation of component libraries – including hot deployment. But enough of the sales pitch, let’s see if it works.

In order to test drive Gracelets, I took an existing Seam web-app and configured the web.xml with the GraceletsViewHandler in place of the standard SeamListener. I generally use Maven for dependency management, and I couldn’t find a repository hosting Gracelets so I installed the downloaded jars into my local repository and adding them to the web-app. The JBoss Seam Extension is also required.
[bash]
mvn install:install-file -Dfile=gracelets-api-2.0.0.jar -DgroupId=gracelets -DartifactId=gracelets-api -Dversion=2.0.0 -Dpackaging=jar -DgeneratePom=true
mvn install:install-file -Dfile=gracelets-impl-2.0.0.RC2.jar -DgroupId=gracelets -DartifactId=gracelets-impl -Dversion=2.0.0.RC2 -Dpackaging=jar -DgeneratePom=true
mvn install:install-file -Dfile=jboss_seam_2.0.0_all-1.0.11.jar -DgroupId=gracelets -DartifactId=jboss-seam-extension -Dversion=1.0.11 -Dpackaging=jar -DgeneratePom=true
[/bash]

[xml language=”true”]
<dependency>
<groupid>gracelets</groupid>
<artifactid>jboss-seam-extension</artifactid>
<version>1.0.11</version>
</dependency>
<dependency>
<groupid>gracelets</groupid>
<artifactid>gracelets-api</artifactid>
<version>2.0.0</version>
</dependency>
<dependency>
<groupid>gracelets</groupid>
<artifactid>gracelets-impl</artifactid>
<version>2.0.0.RC2</version>
</dependency>
[/xml]

The application was deployed as usual and fired up without a problem. For a test page I just created an index.groovy file in the root directory. According to the docs, a .groovy extension trumps .xhtml so that effectively replaced the front page of the app. Here’s the standard first page of a new web-app(straight from the Gracelets examples), with the xhtml builder.
[groovy language=”true”]
xh.html {
head { title("Hello World Example") }

body {
print { "Hello World @ " + new Date() }
}
}
[/groovy]

Not bad, let’s compare to the standard Facelets version, using a file based on the standard seam-gen created index.xhtml file. I’ve bound the instantiation of the Date object to a backing bean, since you can’t make an inline call to do it a standard Facelets view. I seem to recall seeing that Seam kept a component available to provide the present Date/Time, but I couldn’t find it offhand today.

[xml language=”true”]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<f:view contentType="text/html"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a="http://richfaces.org/a4j"
xmlns:s="http://jboss.com/products/seam/taglib">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Hello World Example</title>
<ui:insert name="head"/>
</head>
<body>
Hello World @ #{backingBean.date}
</body>
</html>
</f:view>
[/xml]

Notice I’ve also left the Seam and RichFaces tab library namespaces in the xml declaration. Although the Gracelets docs didn’t seem to easily confirm this, inclusion of the JBoss Seam extension also makes those libraries and their associated builders available by default for Gracelets views. Here’s a final example to leave you with that incorporates a couple of elements from those libraries and a quick and dirty use of .each for rendering, and even a couple of screenshots to show off the progression.
[groovy language=”true”]
def loremIpsum = ”’
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin tempor, mauris sed volutpat consequat, risus tellus ultrices
tortor, at sollicitudin felis erat vitae augue. Pellentesque habitant morbi tristique senectus et netus et malesuada fames
ac turpis egestas. Vestibulum tincidunt egestas viverra. Integer ullamcorper, ipsum id malesuada sollicitudin, nisl velit
ultricies purus, eu aliquet diam mi sit amet eros. Quisque arcu orci, consequat dictum vehicula a, pellentesque eu nisl.
”’
xh.html {
head { title("Hello World Example") }
body {
s.div(id:’aSeamDiv’, rendered:’true’) {
r.panel(header:’A RichFaces Panel’) {
println { "Hello World @ " + new Date() }
a(‘MyBlogLink’, href: ‘http://www.kellyrob99.com/blog’)
}
}
r.separator()
r.spacer()
r.simpleTogglePanel(header:’A RichFaces TogglePanel’){
println loremIpsum
}

def tableModel = loremIpsum.tokenize()[0..10]
def tableModel2 = loremIpsum.tokenize()[11..20]
table {
tr {
td {
tableModel.each { println it }
}
td {
tableModel2.each { println it }
}
}
}
}
}
[/groovy]

Not bad at all. I won’t bore you with the equivalent xml version – suffice it to say it takes up a lot more space. I haven’t even touched on the easy component/library features Gracelets provides yet, but I am already quite impressed simply by the replacement of xml with an equivalent but sparser syntax. And I don’t miss the need for closing tags much either. The documentation for the project is quite complete, rich with examples, at least for the standard jsf components(hint hint – more examples using Seam and RichFaces would be appreciated!) Give it a try and decide for yourself, but if it keeps going this way, it might become a reasonable alternative for Grails.

🙂

[nggallery id=3]

Reblog this post [with Zemanta]

10 May, 2009

Twitter Weekly Updates for 2009-05-10

Posted by: TheKaptain In: TweetTweet

  • Having fun tonite killing some bugz in code. Almost forgot how empowering it can feel to kill a bunch of ’em in a row 🙂 #
  • I may have reached the pinnacle of geekiness. Have finally exhausted the supply of USB ports. #
  • Just got home and got mobbed by the dogs. Oh well, at least they love me. If only we could do something bout dog breath – YUCK!!! #
  • When the big boys talk, sometimes it’s worth listening. This little convo between Gavin and Bob taught me TONS http://bit.ly/JLIbM #
  • @ajordens How about this for a pretty good description of the ‘Cloud’ as it stands? http://bit.ly/rMLYy in reply to ajordens #
  • Catching up on my Cloud knowledge. Might as well, looks like that’s where I’ll be programming. Up, up and away!!! #
  • @ajordens LOL. You are the bomb man. PITA that I missed the other nightly build by 1 revision 🙁 in reply to ajordens #
  • My builds are all green, life is good – time to start the weekend! #
  • Just joined a twibe. Visit http://twibes.com/Gracelets to join #
  • @ajordens You too man. Sunshine all weekend – no clouds in sight. And no end of bad puns 🙂 in reply to ajordens #
  • @cfieber From what I hear, if you drop the minor $ on the iPhone earbuds(with microphone) and Skype your iTouch == iPhone in reply to cfieber #
  • @abstratt what’s the matter man, feeling old all of a sudden? Welcome to the club 🙂 in reply to abstratt #

Powered by Twitter Tools.

Tags: ,

One of the truly stellar features in Mac OS X Leopard is the ‘sync’ of information between computers. I use multiple computers in different locations and having the ability to access a common Address Book, iCal, etc is invaluable.

In particular, when I bought a new Macbook Pro not so long ago, the sync allowed me to turn on the laptop, plug in an ethernet cable and enter my MobileMe identity – and that was it. When the sync was done, I immediately had access to my wireless network at home (KeyChain passwords sync’d seamlessly) – no trying to find, copy down and manually transfer my encryption key! That in particular is handy since I have over a dozen wireless network configurations stored.

Another nice to have, since my employer uses an Outlook system for email, was the Entourage sync. Or at least it would be if the damn thing didn’t keep duplicating all of my calendar entries and contacts! When I noticed it the first time I said to myself : “not perfect, but I can live with it for the convenience it provides”. By the time I started getting calendar events showing up on my iPhone for the fourth time, I said enough was enough and went Googling.

Starting with this article on the Entourage support page, I ended up reading this over on MacWorld, which brought me to the iCal Dupe Deleter. That took care of the iCal problem in under 20 minutes with less than 10 button clicks. Not bad – tnx to the creator of that software John Maisey, it worked fast, correctly and exactly as advertised.
icaldupedeleter

I haven’t yet done the same for the iPhone, but it looks like iTunes supports a sync option to just replace the info on the phone and start anew, so I anticipate no problems.

Seeing as how it appears that neither Microsoft or Apple have anything planned to address this obvious problem in the software interaction(strange that those two don’t see eye to eye), it’s fantastic that the community out there in intarweb land is so great at sharing ways to address it. So let Mac and Windows fight over my stuff, I still win. Nyah nyah!

Reblog this post [with Zemanta]

03 May, 2009

Twitter Weekly Updates for 2009-05-03

Posted by: TheKaptain In: TweetTweet

  • @ajordens I’m rooting for you man! in reply to ajordens #
  • @ajordens sorry to be bearer of bad news but nightly build hung completely. Enjoy the game, i’ll be on chat while i look into what’s up. in reply to ajordens #
  • @dillyh tnx for starting your day so early. Mucho appreciato. in reply to dillyh #
  • Aaah. The weekend. About time it got here. Nothing but relax-time for this guy, feels like Monday was about 2 iterations ago. Aaah. #

Powered by Twitter Tools.

Tags: ,

26 Apr, 2009

Twitter Weekly Updates for 2009-04-26

Posted by: TheKaptain In: TweetTweet

Powered by Twitter Tools.

Tags: ,