rss feed blog search engine
 
Search rss blog search engine
 
JRoller  
Released:  3-8-2005
RSS Link:  http://jroller.com/rss
Last View 10/13/2008 3:34:19 AM
Last Refresh 10/13/2008 3:34:18 AM
Page Views 4612
Comments:  Read user comments (0)
Save It Add to Technorati Add to Del.icio.us Add to Furl Add to Yahoo My Web 2.0 Add to My MSN Add to Google Add to My Yahoo! JRoller



Description:



Javalobby Community Weblog Service


Contents:

It's time to uninstall JavaFX

What? No it's not me who says it but Sun.
What? Well, not because it's a bad product/technology but just because you agreed to.
What? Well, JavaFX preview SDK has been released on July 31.
When you downloaded it you also agreed to the license that says:

Effective Date: The date Licensee receives the Technology.

Evaluation Period: The sixty (60) days following the Effective Date.

Feedback Frequency: Licensee will provide feedback to the individual or
alias specified by Sun at least once during the Evaluation Period.

6.3 Upon termination or expiration of this Agreement, Licensee will
immediately cease using the corresponding Technology. Licensee will
immediately destroy any and all Licensed Software and any copies of
Licensed Software and provide Sun a written statement by Licensee's
authorized representative certifying that Licensee has complied with
these obligations.

So if you've downloaded the preview SDK on July 31st or beginning of August you should have provided feedback to Sun by now and now it's time to uninstall it.




Tux Kamasutra




Developing an OpenSocial Portlet

I dedicated some time this weekend to creating a fully functional demo with OpenSocial, Shindig and JBoss Portal. It seems like OpenSocial has a lot of new supported platforms coming out in 0.8 and the future is looking promising. Here is a bullet list to summarize what I found:

  • Documentation is scarce when you want to roll you own OS container via Shindig
  • Luckily Chris Schalk did a good job providing some documentation on getting persistence setup on a mysql db
  • Unfortunately, due to the bleeding edge of this technology, some of (the few) demos that exist don't work with today's Shindig trunk
  • I was able to quickly learn Google widgeting and am on my way to being a "widget master"
  • Next on the list is to mess around with Google Data APIs in OpenSocial Apps
  • The transition/integration of Shindig into a standard webapp/portlet was a huge pita. Too many hard coded servlet context in .js files.
  • It seems like (for now) you really need to be into the Orkut scene to leverage current social users. Myspace is something I try to stay away from, and I was really hoping to see some LinkedIn stuff but was let down.

This is definitely the way portals are headed and I guess I will try to muster up the energy to write an article once the kinks are worked out of my demo. I would also like to do something cool with the collected social data inside of a portal environment (like notifications of other user activities, posts, changes, etc...). I used the JBoss Portlet Bridge Richfaces project/archetype to create the demo. The bridge makes it incredibly easy to do stuff like this because of having things working on both the servlet and portlet side.




GraphicsBuilder 0.6.1 released
I'm pleased to announce that GraphicsBuilder 0.6.1 has been released [Download. This release includes minor updates to the code but one important, compatibility-breaking issue: Groovy 1.6+ is the minimum supported version of Groovy starting from 0.6.1, this is due to recent enhancements made to FactoryBuilderSupport and the short binding syntax.

GraphicsBuilder will also be changing locations (as JideBuilder 2.0 recently did), it will no longer be a module under the groovy-contrib repository, but an officially supported project under the Griffon umbrella. I'm using this opportunity to refactor the internals and streamline how the builder works (breaking as little of your code as possible). Here is what I have in mind:
  • The base package will be griffon.builder.gfx
  • Split the responsibilities of an operation (node from now onwards) as it holds the data and draws to the screen too, it should only be a data container/provider (0.6.x is halfway there since the inclusion of runtime()).
  • Move all renderers (GfxRenderer, SvgRenderer, SwfRenderer, *) to the same package.
  • Use jSilhouette's shapes (0.6.1 does it already).
And here is a short list of features that will be available in the next release:
  • Enable an easier way to define attributes for a node, this is going to be a piece of cake thanks to ASTTransformations, think @Bindable + something more.
  • Enable custom nodes.
Let's face it, GraphicsBuilder provides a decent and friendly abstraction level over Java2D constructs but it is not friendly enough for custom nodes. Creating a custom shape by yourself as it currently stands requires more knowledge of internal workings that you should know, it is also hard to mix&match basic nodes into a more complex one; that is what I intend to change with custom nodes, stay tuned!

Keep on Groovying!


Lemur (Zen)

If you thought only humans did Zen - then think again.

Check this out!


Michael Arrington You idiot
I am about to cause a firestorm, wear your flame suit. I do not know what Michael has been toting or ingesting but his latest essay titled Profit Maximization V. Survival Maximization is full of bullshit to be very blunt. Now, I am borrowing my thesis from Paul Allen and Bill Gates of Microsoft and applying to start ups.

Paul Allen and Bill Gates complete thesis is that being frugal in all areas during both peak economic times and low economic times provides opportunity cash during both situations to use to pursue innovations and market/business development Now before we tackle the start ups without a business model case lets think back. How many low economic times has Microsoft survived and open up new markets? Quite a few, right?

Okay, we have a nice start up with no business model lets say facebook. During peak economic times when VC and investment money in facebook is at an all time high you are being frugal in areas of development such as 1-n hiring and choosing low cost ways of technology implementations. Facebook did choose PHP and etc over Enterprise Java so they get a passing grade there. But in other areas they goofed up in not being frugal. that means now they will have less opportunity cash to finish market and business model development. Do not get me wrong they might still hvae enough but why risk that why not have as much as possible?

The problem is most start ups without business models do not have the running room of full adequate seed capital or funding even during peak economic times. Which means if they follow the facebook model without adjustments in areas of ebbing frugal they will not survive a market crash. the exact tiem to make survival frugal adjustments to enable a start up without a business model to survive during peak economic times not during the market crash.

Another case study in frugality during peak economic times to survive during low economic times is Mahalo! Jason Calacanis has composed many essays on that subject at Calacanis.com and Silicon Alley Insider. Mahalo will survive because it made frugal choices during peak economic times.

Most start ups tha will survive without a business model during this low economic times made macro event frugal choices during the peak economic times and to talk about the micro event frugal choices during low economic times without this context is just as bad information as a recent WSJ article on facebook. In my own defense during the MS buying Mahalo.com? rumor on FriendFeed during July how many fake journalists/analysts/cheerleaders were caught not analyzing information? Avery big one in fact and he still is not following my FriendFeed streamas a result, right? Please Michael Arrington I want to see yu engage the brain on these issues, please..as its damn f'ing important for every start up founder.


Service Factory and OSGI Logging Proposal
I've been doing some thinking lately about how can we log different bundles  or the same bundle with different versions with different log level.   Logging is an important part of any application thus Osgi gives developers logService to use when possible, but standard logging api (slf4j, log4j) are simple to use.

Why I'm asking this question :
 1 -Working with osgi is a bit different regarding simple java programming: The same class can exist on many bundle with different version (different loader).
 2- Making an upgrade on some bundles by changing the bundle versions :  we should leave the two running  versions  if some other bundles are not updated to use the new milestone version.

I try here to present ServiceFactory utilities and I will present some brainstorming about possible logging enhancement :

ServiceFactory :

We create here three bundles :

1- logger  : contains the api and impl
2- client 1 : using logger service with version 1, as stable implementation the log level is ERROR
3- client 2 : using logger service with version 2.0.0.m1 as unstable implementation the log level is Debug to catch all messages.

The Logger interface is :

and the implementation is
01 package com.jtunisie.osgi.logger;
02 
03 /**
04  *
05  @author Slim OUERTANI
06  */
07 public interface Logger {
08 
09     public void log(Class clazz, Level level, String msg, Object... params);
10 
11     public enum Level {
12 
13         DEBUG, ERROR
14     }
15 }
the LogFactory class is draft factory : any milestone version will have a debug logger else error logger:
01 package com.jtunisie.osgi.logger.impl;
02 
03 
04 import java.util.Dictionary;
05 import org.osgi.framework.Bundle;
06 import org.osgi.framework.ServiceFactory;
07 import org.osgi.framework.ServiceRegistration;
08 import org.osgi.framework.Version;
09 import static org.osgi.framework.Constants.*;
10 
11 /**
12  *
13  @author Slim OUERTANI
14  */
15 public  class Logger implements com.jtunisie.osgi.logger.Logger, ServiceFactory {
16  
17 
18     @Override
19     public void log(Class clazz, Level level, String msg, Object... params) {
20     }
21 
22     @Override
23     public Object getService(Bundle bundle, ServiceRegistration arg1) {
24         Dictionary dictionary = bundle.getHeaders();
25         Version version = Version.parseVersion((Stringdictionary.get(BUNDLE_VERSION));
26         String name = (Stringdictionary.get(BUNDLE_NAME);
27         return LoggerFactory.getLogger(name, version);
28     }
29 
30     @Override
31     public void ungetService(Bundle arg0, ServiceRegistration arg1, Object arg2) {
32     }
33 }
01 package com.jtunisie.osgi.logger.impl;
02 
03 import org.osgi.framework.Version;
04 
05 /**
06  *
07  @author slim ouertani
08  */
09 class LoggerFactory {
10 
11     static com.jtunisie.osgi.logger.Logger getLogger(String name, Version version) {
12 
13         if (version.toString().contains("m")) {
14             return new DebugLogger(name);
15         else {
16             return new ErrorLogger(name);
17         }
18     }
19 }
20 
21 package com.jtunisie.osgi.logger.impl;
22 
23 
24 
25 /**
26  *
27  @author slim ouertani
28  */
29 class DebugLogger implements com.jtunisie.osgi.logger.Logger {
30 
31     private final String bundleName;
32 
33     

Home  
 


Link to us




RSS Feed of new blogs                                                   Home        Feed Map        Submit Feed      Link to Us       Contact