Secondary Feed

August 08, 2008

Bill de hÓra Non-Newtonian Reading

if you enjoyed Kellan Elliott-McCrea and Evan Henshaw-Plath's presentation "Beyond REST? Building data services with XMPP", here's a dose of links:


del.icio.us/for/thoughtworksPlease visit Delicious for a new private feed subscription

Ars TechnicaATI hopes to ignite pro graphics market with FirePro cards

ATI launched its new FirePro brand today, with two additional 3D cards slotting in to complement the existing FireGL line. The two FirePro cards are aimed at the budget and midrange markets, and could prove enticing, particularly if you value DisplayPort.

Read More...


O'Reilly RadarRadar Theme: New User Interfaces

[This is part of a series of posts that briefly describe the trends were currently tracking here at O'Reilly: 1, 2, 3, 4, 5, 6.]

The iPhone is called the JesusPhone for a reason. Its ease of use is a revelation, and the multitouch display is part of that. Since the iPhone's release, multitouch displays have shown up in tradeshows and on CNN. The hardware is becoming cheaper and the software more ubiquitous, opening people's minds to UI possibilities beyond mice and menus.

Watch list: iPhone, Jeff Han, John Underkoffler.

August 07, 2008

O'Reilly RadarRadar Theme: Make

[This is part of a series of posts that briefly describe the trends were currently tracking here at O'Reilly: 1, 2, 3, 4, 5.]

DIY culture is back, from rocket cars to simply tweaking things you already own to make them better. People want control over their devices again, whether access to the internal computer systems of their car or the ability to make a simple flashing LED toy. Physical electronics skills are important but, thanks to the low price of microcontrollers, hardware is becoming software.

Watch List: Limor Fried, Arduino, Tom Igoe, NYU ITP, Make Magazine, Maker Faire.

O'Reilly RadarRadar Theme: The Physical Web

[This is part of a series of posts that briefly describe the trends were currently tracking here at O'Reilly: 1, 2, 3.]

The next step for computing is to move out from the computers. Every device has the potential to become network-connected, delivering information to or from a web service. The mobile phones in our pockets also let us take apps and network service with us wherever we go. Early hackers are building in this space. Big challenges include: take products to the masses and the environmental impacts. We're at early stages yet, but the room for expansion is huge. Projects to watch include Nokia's reinvention as services company, iPhone, and Google's Android platform.

Wachlist: Julian Bleecker, Timo Arnall, Nike+, iPhone, Google Android,Chumby and Dash.

Ars TechnicaOutsourcing AV: researchers move antivirus scan to the cloud

Researchers develop a method that allows networked computers to ship executable files to a server for parallel scanning by multiple antivirus applications. The best antivirus scanner, it turns out, is all of them.

Read More...


O'Reilly RadarRadar Theme: Personal Genomics

[This is part of a series of posts that briefly describe the trends were currently tracking here at O'Reilly: 1, 2]

Genetic analysis software and hardware used to be very expensive, only for professionals—now it's trickling down to ProAms, and soon (under 5 years) will be widespread for consumer applications. This changes how drugs are developed and applied (don't test against 500 people and say whether it "works", figure out which genetic markers indicate the people it works for and sell to those), how diseases/conditions are diagnosed and treated, and our sense of self. Expect "interesting" (in the Chinese curse sense) interactions with privacy, workplace relations, and even parenthood.

Watchlist: 23andme, Hugh Reinhoff's "My Daughter's DNA".

FreakonomicsIndexed: Shocking Moments

Here's the latest Indexed post. Jessica's past posts can be found here, her own blog here, and her book here.

O'Reilly RadarKaminsky DNS Patch Visualization

Dan Kaminsky has posted the details of the widespread DNS vulnerability. Clarified Networks created this visualization of DNS patch deployment over the past month:

Red = Unpatched
Yellow = Patched, "but NAT is screwing things up"
Green = OK

InfoQTalking with Ivan Porto Carrero about IronNails

A new project has been created for developers using IronRuby to write applications with a Ruby on Rails like experience. The project is called IronNails and is ready for developers to give it a go today. By Robert Bazinet

Paul DuVallSpring’s so Groovy

Spring 2.0 introduced comprehensive support to use dynamic languages. It supports three different scripting languages; JRuby, Groovy and BeanShell. The scripting language used in this article is Groovy; which I think was designed for Java developers. As Scott Davis says in his book, Groovy Recipes” Groovy is Java at the end of the day”. “Spring Recipes - A Problem -Solution Approach” written by Gary Mak has a complete chapter dedicated to Scripting in Spring. The author covers all the three dynamic languages supported by Spring; JRuby, Groovy and BeanShell.

There are times when in your application you have certain modules that require frequent changes, and based on these changes you need to change the business logic within your modules. If these modules were written in Java, you can imagine what needs to be done at this point; recompile, package, redeploy. This is where modules written in these dynamic languages come in handy, there is no need to recompile, or redeploy for these changes to take effect. In most cases, you want the Spring container to be able to detect these changes and also pick up the new state from the changed script source. Spring allows you to do this as well by setting one simple attribute.

Hello World Example: It is customary to start any tutorial by writing a simple HelloWorld program, right? We are going to use Groovy in this tutorial. This tutorial assumes you have some knowledge of Spring and Groovy. I used Eclipse IDE for this tutorial, and to work with Spring and Groovy in Eclipse, you need the following libraries in your build path.

java-build-path

So, lets begin with the HelloWorld example here.

Step 1: Lets define an interface for our HelloWorld Service:

package com.springandgroovy;

public interface HelloWorldService {

	String sayHello();

}

Step 2 : Implement the interface in Groovy.
Next, we implement this interface in Groovy by creating a simple script within the com.springandgroovy package as such:

import com.springandgroovy.HelloWorldService;

class HelloWorldServiceImpl implements HelloWorldService {

	String name

   String sayHello()
   {
   		"Hello " + name + ". Welcome to Scripting in Groovy."
   }
}

Step 3: Make changes to Spring’s configuration file.
Here comes the Spring’s bean configuration file, in which you have to include the lang schema to use the custom dynamic language tags.

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:lang="http://www.springframework.org/schema/lang"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.springframework.org/schema/lang
        http://www.springframework.org/schema/lang/spring-lang-2.5.xsd">

the bean definition for the Groovy backed HelloWorldService looks like this:

<lang:groovy id="helloWorldService"
			 script-source="classpath:com/springandgroovy/HelloWorldServiceImpl.groovy">
			 <lang:property name="name" value="meera"/>
</lang:groovy>

That’s all you need o use Groovy backed beans in Spring. So, how do we know this works, right? Lets write a simple Main class and test it within our IDE:

Step 4: Run the HelloWorldService.

package com.springandgroovy;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

   public static void main(String[] args) throws Exception {

     ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
     HelloWorldService service = (HelloWorldService) context.getBean("helloWorldService");

     System.out.println(service.sayHello());

    }

}

And you should be able to see output in the console as such:

console-window

Step 5: Refreshable Beans.
As I mentioned earlier also, to turn on this feature we have to specify one simple attribute on the element of our bean definition as such:

<lang:groovy id="helloWorldService"
			 script-source="classpath:com/springandgroovy/HelloWorldServiceImpl.groovy"
			 refresh-check-delay="5000">
			 <lang:property name="name" value="meera"/>
</lang:groovy>

Again, how do we know this works when we make changes to our Groovy Script? A small change in our Main class and, and you should be set to test that this works as well:

package com.springandgroovy;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

    public static void main(String[] args) throws Exception {

    ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
    HelloWorldService service = (HelloWorldService) context.getBean("helloWorldService");
    System.in.read();
    System.out.println(service.sayHello());

    }

}

Now, run the Main class in your IDE, it halts because of the System.in.read line, make a few changes within your script, save it, hit enter in your console window in your IDE. The Spring container read our new changes and prints the results within the console window.

The script change can be as simple as adding a few special characters as such within my sayHello() method:

   String sayHello()
   {
   		"Hello " + name + "!!!. Welcome to Scripting in Groovy."
   }

And the console window reflects these changes:

updated-console-window

Step 6: Inline Scripts
Spring also allows you to embed scripts directly within the Spring bean definitions inside your Spring configuration file. I am no fan of doing this, because it has a drawback; the refresh attribute is not applicable for inline scripts. Lets take a look at this in case you need to use this feature:

Copy the script we wrote in Step 2 and paste it within the lang:inline-script element as such:

   <lang:groovy id="helloWorldService">
        <lang:inline-script>
        <![CDATA[
 import com.springandgroovy.HelloWorldService;
  class HelloWorldServiceImpl implements HelloWorldService {

	String name

   String sayHello()
   {
   		"Hello " + name + " Welcome to Scripting in Groovy"
   }
}
        ]]>
        </lang:inline-script>
        <lang:property name="name" value="meera" />
    </lang:groovy>

Run the Main class and you should see the same output in your console window.

console-window

In this tutorial we learned how to use Groovy with Spring using an external script source file, how to refresh changes when a script source file is changed, and finally saw an inline script which was embedded within the Spring configuration file.

Additional Resources:

1. JRuby
2. Groovy
3. BeanShell
4. Spring
5. Spring Recipes

Test Early is sponsored by Stelligent | Stelligent is hiring experts like you!

FreakonomicsYour Digg Questions Answered

Jay Adelson Last week we solicited your questions for Jay Adelson, the CEO of Digg. In his answers below, he shares one of his greatest lessons from running the company: "With democratic systems and large groups of people, there is incredible opportunity and power, and it must be approached carefully." This power is now well known to [...]

Eugene WallingfordDesign Ideas Lying in Wait

Ralph Johnson pointed me to a design idea for very large databases called a shard. This is a neat little essay for several reasons. First, its author, Todd Hoff, explains an architecture for massive, distributed databases that has grown up in support of several well-known, high-performance web sites, including Flickr, Google, and LiveJournal. Second, Hoff also wrote articles that describe the architectures of Flickr, Google, and LiveJournal. Third, all four pages point to external articles that are the source of the information summarized. Collectively, these pages make a wonderful text on building scalable data-based web systems.

I've posted this entry in my Patterns category because this recurring architecture has all the hallmarks of a design pattern. It even has great name and satisfies Rule Of Three, something I've mentioned before -- and what a fine three it is. Each implementation uses the idea of a shard slightly differently, in fitting with the particular forces at play in the three companies' systems.

Buried near the bullet list on the Google page was an item worth repeating:

Don't ignore the Academy. Academia has a lot of good ideas that don't get translated into production environments. Most of what Google has done has prior art, just not prior large scale deployment.

This advice is a bit different from some advice I once shared for entrepreneurs, looking for Unix commands that haven't been implemented on the web yet, but the spirit is similar. Sometimes I hear envious people remark that Google hasn't done anything special; they just used a bunch of ideas others created to build a big system. Now, I don't think that is strictly true, but I do think that many of the ideas they used existed before in the database and networking worlds. And to the extent that is true, good for them! They paid attention in school, read beyond their assignments, and found some cool ideas that they could try in practice. Isn't that the right thing to do?

In any case, I recommend this article and encourage others to write more like it.

Ars TechnicaBlack Hat wraps up; DNS dominates discussion

Black Hat 2008 is over, DEF CON is this weekend, and the space in between makes a good time for recapping what's happened so far. Dan Kaminsky's DNS presentation was big news, the EFF launched a new initiative, and Cisco is back on stage three years after suing someone off of one.

Read More...


BBC Sport | Cricket | The Ashes | World EditionHarmison relief at fine comeback

Steve Harmison celebrates a successful first day back in Test action as England bowl out South Africa for 194 at The Oval.

FreakonomicsThe Art of Exploiting a Tragedy

Forgive me for bringing up the TV show Mad Men again but - well, I do love it. I blogged recently about a book of Frank O'Hara's poetry that appeared on the show and then had an Amazon sales spike. In this week's episode, there's a terrible crash of an American Airlines plane and one of [...]

Stephen O'Gradylinks for 2008-08-07 [delicious.com]

Ars TechnicaReport: Only half of US Netizens use a search engine daily

Only half of Internet users today use search engines on an average day, according to the Pew Internet & American Life Project, but that number is up from just a third in 2002. With the remaining 50 percent just waiting to be sucked into the world of search, even the little guys have room to grow.

Read More...


BBC Sport | Cricket | The Ashes | World EditionEngland v SA: Day one as it happened

England close day one of the final Test at The Oval on 49-1 after dismissing South Africa for 194.

InfoQRuby PDF Generation Made Easier and Cleaner with Prawn.

There are several existing ways to generate PDF with Ruby. Unsatisfied with existing solutions, Gregory Brown decided to design his own faster library, which uses a DSL approach to generate PDF. InfoQ caught up with Gregory, who also founded a community funded development venture: Ruby Mendicant. By Sebastien Auvray

BBC Sport | Cricket | The Ashes | World EditionNew era begins well for England

England close 145 behind on 49-1 having bowled out South Africa for 194 on Kevin Pietersen's first day as captain in the final Test.

TheServerSide.comTheServerSide.com 2008 Java Trends Survey

We need your help with TheServerSide.com 2008 Java Trend Survey. In exchange for ten minutes of your time, you can be entered in a drawing to win an 8GB iPod Touch.

DaveAstels.comThe ultimate summer sandwich

Last night I made, in my opinion, was the ultimate summer sandwich.

Start with thick slices of a rustic wholegrain bread. Add thick slices of fresh, ripe hierloom tomato and (again) thick slices of fresh (really fresh) mozarella. I drizzled both sides with basil olive oil and popped it into the Paninni press. Heat on low to warm through and melt the cheese and finish on high for a crisp, brown finish.

Ars TechnicaMozilla's "Snowl" hunts Twitter, RSS, and (soon) e-mail

Mozilla wants to help us stay on top of our conversations online, no matter where they're occurring. Snowl is a new tool launched in Mozilla Labs that, while an extremely early prototype, shows some potential.

Read More...


Pat HellandA Fun Cruise to Alaska with Friends

I'm starting this blog entry on the bus riding to work on Monday, Aug 4th... it's taken all the bus rides until today, Thursday, to finish.  There's NO computer stuff in this post... This is a vacation travelogue!

Wow!  We had a good time in spite of Lisa being seasick for 1-1/2 days and the weather in Alaska (mostly) sucking...  Still, it was FUN!

First of all, it was lame of me to think that I was going to exercise every day on the ship... the exercise room was small and had no water or music.   I worked out one day and went to the buffet lines the rest of the time.   I am back in Seattle now and working hard to get rid of the two or three pounds I packed onto my butt...  I weigh within two pounds of what I did three years ago (but more is muscle so I am in 36 inch pants for the first time since the 1960s).  Giving away clothes when you get smaller is an important trick!   When the clothes get tight, STOP EATING SO MUCH...  My clothes are a little too tight after the cruise!

I did, however, succeed at my other goal of reading all 750ish pages of the last Harry Potter book.  JK Rowling is VERY creative and the book held lots of surprises!   I have a lot of respect for her work and enjoyed it immensely.

So, we started off Friday by meeting up with the other two couples, Bob and Rita and Kirk and Kathy, at our condo for brunch and then we caught cabs to the cruise ship dock which is TWO MILES from our home.   It was literally a 10 minute cab ride.   We can see all the cruise ships, including Rhapsody of the Seas coming and going from our living room.   There are two or three cruise ships in Seattle every Friday, Saturday, and Sunday each week from May through September.   Frequently, I am up at 5AM (at least on Fridays) to watch them arrive.  In the evening, at around 5pm, it is normal for them to all pull out within minutes of each other.   Most of them back out of the Port of Seattle and do a 180 degree spin right in front of our home.  I call it the cruise ship ballet!   Here are a couple of photos of the ship we took (Rhapsody of the Seas), taken from our home as it departed the evening after we arrived back in Seattle.

2008-Alaska- 389 2008-Alaska- 381

So, Friday (July 25th) was the day to arrive and unpack.  We got on board at around 1PM and started exploring the boat with our friends.   The luggage arrives over a few hours so you need to kill time a bit and then unpack.  So, we discovered the Windjammer Cafe.   This is the place where there are GOBS and GOBS of mediocre food, crowds of people jostling to pack their plates, and then (at some times of day), seriously insufficient tables to sit down and eat.   Now, here and there, you can find something really good in those buffet lines but it is VERY hard to do appropriate portion control because you think you've found the right stuff and the right amount of food but then you walk over to the next stuff and there's something else you want to slap on your plate!  Still, there is always something there and that's kinda' nice when you're locked up on the ship, you can always get something to eat.

Shortly before departure, we had the mandatory lifeboat drill... we all have to practice getting on our life preservers and going to our muster station where we can look at the 150 person lifeboats.   It is a necessary hassle.  Here's my wife, Lisa, looking beautiful in her life preserver!

2008-Alaska- 015

Here is the view of Seattle as we were departing Seattle.  This photo includes the building with our condo.  It's the shorter one which is darker on the top half in the center of the photo.

2008-Alaska- 023

Next year, we're moving to a different building only one block from Pike Place Market.  Here's the view of it under construction with the yellow crane in front.  Both of us LOVE downtown living and it was pretty darned cool to only take a 10 minute cab ride to catch an Alaska cruise!

2008-Alaska- 026

I mentioned the "Cruise Ship Ballet" from Seattle.  Three ships set off at basically the same time that Friday.  Here is a Celebrity ship in from of us and a Holland America ship following behind us!

2008-Alaska- 035   2008-Alaska- 036

We went to the opening show and had a great time!  Dinner was fun and we met one of the singers at the next table having dinner with her mother and aunt who were cruising that week.  This set a pattern where we made a big point of sitting in the front row every evening and cheering on the performers... it was a blast!

As we cruised up the Pacific on the outside of the British Columbia and Southeast Alaska islands, the weather got a bit rougher... our stateroom was quite a bit forward and Lisa got seasick.  Consequently, she stayed in the room on the second dinner (which was the first formal dinner).  So, there were only five of us at dinner that night.  Here's Bob and Rita (all dressed up)

2008-Alaska- 042

and Kirk and Kathy (all dressed up)

2008-Alaska- 041

and me (in a tux) posing with Kathy since Lisa was upstairs in the stateroom being miserable.  She made it clear to me that I should go to dinner since if I stuck around while she was sick, I would annoy the heck out of her and make her MORE miserable... she was right!

2008-Alaska- 043

On the third day, we pulled into Juneau and saw that it was in a beautiful location but it was POURING rain... Other than Lisa, none of us brought rain gear.   It turns out to get to town you need to board a bus but the line was outside in the rain.   We waited for a while and then set out to get onto the bus.  Standing (and freezing), we decided to bag it and go back into the ship... That was NICE and WARM.  I found time to read that last Harry Potter book!

2008-Alaska- 046 2008-Alaska- 051 2008-Alaska- 054

Again, we very much enjoyed dinner and the show in the theater on the boat as we were getting underway from Juneau to Skagway.

The next day, we went to Skagway.  It is a cute little tourist town which will get between 5000 and 10,000 tourists every day of the week during the 5 month season.  We spent a couple of hours walking through the shops and exploring.   It was a nice break getting off the ship.

2008-Alaska- 064 2008-Alaska- 057 2008-Alaska- 069 2008-Alaska- 066 2008-Alaska- 074

Again, we really enjoyed dinner (casual attire) and the show... it became a lovely rhythm as we met each day to spend the evening in the dining room with friends and head off to the show!

The next day, we got up at 6AM...  The original itinerary had us seeing the glacier in Tracy Arm Fjord.   The Captain announced that we would not be able to get very close (like 2 miles away) from that glacier because there were so many icebergs floating down the fjord that he would need to stay way back for safety...  Instead, he would take us down Endicott Arm Fjord and we would see a different glacier (Dawes Glacier) much closer up.   To make that happen, the visit would need to be much earlier so... we all got up!  Lisa and I met up with our friends in our stateroom to hang on our balcony... I didn't see it but I understand there were hoards of guests (many in their pajamas) on the 10th deck (with no wind protection).   We had a great view from our balcony.   Here are shots of the approach up the fjord and of the glacier as this huge ship did a 180 degree turn only a few thousand feet away.  Our stateroom happened to be on the port side and so it had a magnificent view!

 2008-Alaska- 111 2008-Alaska- 093 2008-Alaska- 0902008-Alaska- 116 2008-Alaska- 076 2008-Alaska- 098 2008-Alaska- 122 2008-Alaska- 081