business of innovation

September 7, 2008 on 2:00 pm | In General | 3 Comments

There’s great series on CNBC called the Business of Innovation, hosted by the Maria Bartiromo. In the episode, Innovate of Die, Mel Kamarzin (CEO of Sirius Radio), gives some insight into how he’s been such an innovating forces for so long.

One was simply a fear of failure. I like that, a lot. Both Maria and the panel pressed him on this. But he stuck to his guns. Regardless of the amount of success everyone else thinks he’s achieved, he never thinks to himself, “I’ve arrived”. That’s a simple, yet extremely powerful idea. At CBS he had over 125,000 employees, and now he only has about 1,000. He made it clear that we’d be hard-pressed to find someone who knew him at both times, that would say he’d changed.

Another factor, which I’ve personally seen in older people, is needing less and less sleep. He quipped, “There’s very few advantages to being old; but one of the advantages is while everyone else is sleeping, I’m awake, ‘innovating’.” First off, being 65 just makes you older, not old. However, this does ring true. Regardless of age, the most successful people I’ve met or seen speak, sleep very little. Now having this trait alone will not lead to success. No, quite the opposite: It’ll simply drain you. This should come as a by product of your drive. It should be the result of your innate thirst for success.

Overall, it’s a pretty good series. Full episodes are available at the each episodes main page. You can start here.

moving on…

August 21, 2008 on 10:45 am | In General | 3 Comments

Donaldson Company has been around since 1915. Although you’ve probably never heard of it, it’s been quietly dominating the filter industry. With over about 14,000 employees worldwide, and hitting the 2 billion dollar revenue mark last month, it’s clearly a force to be reckoned with. It was a great opportunity to work there. Alas, I’m moving on…

Once I settle in, I’ll talk about the new firm. It’s actually about time. My concentration (technical passion) in college was distributed computing, grid and cloud-based solutions. However, after school Akkam’s Razor lead me in another direction - gainful employment. Anyway, years later, it seems like I might get that chance to work on a reasonably large, scalable, truly distributed solution. I’m definitely looking forward to that, and it doesn’t hurt that my commute will stay under 30 minutes a day (with traffic). :)

httpsessionlistener resolved my session persistence issue

August 19, 2008 on 9:16 am | In Technical stuff | 2 Comments

I’ve moved from Resin-3.0 to Tomcat-5.5 for a while now. So far, it’s actually been easier to deploy and run my web applications. However, I started to see some NotSerializableExceptions during shutdowns, and subsequent startups. After some research, it became clear that I was inadvertently storing Spring-proxied items into http sessions. If they still existed during serialization of the current session, Tomcat would complain, being that Tomcat actually expects truly serializable items in its sessions - how dare they :)

I knew the item being placed in the http session held a reference to a spring-wrapped DAO (the item’s a data view helper). So, after some cups of coffee it finally came to me: have my custom listener defined in the web.xml, which currently only implements ServletContextListener, also implement HttpSessionListener. With that, I was able clear out the culprit on sessionDestroyed(…). I wish all my technical problems were this straight forward.

Update: Anjan, in response to your question, I’m embedding the web.xml declaration and the actual Listener code. Hope this helps.

web.xml listener declaration


   <!--    Our custom system initializing listener     -->
   <listener>
      <listener-class>com.some.company.SomeInitListener</listener-class>
   </listener>

Listener Implementations


public class SomeInitListener extends BosenInitListener {

	private static final Logger LOG = Logger.getLogger(SomeInitListener.class);

	@Override
	protected void customInitForServlet(ServletContextEvent event) {
		super.customInitForServlet(event);

		ServletContext servletContext = event.getServletContext();
		SomeResourceInitializer resourceInitializer = (SomeResourceInitializer) getBean(servletContext, "resourceInitializer");

		// Make default menus
		String menuConfig = servletContext.getInitParameter(AppConstants.MENU_CONFIG);
		if (null != menuConfig) {
                    ...
		} else {
			LOG.warn("Could not find a menu configuration.");
		}

		resourceInitializer.init();
	}
}

public abstract class BosenInitListener implements ServletContextListener, HttpSessionListener {

	private static final Logger LOG = Logger.getLogger(BosenInitListener.class);

	public final void contextInitialized(final ServletContextEvent event) {
		String servletContextName = event.getServletContext().getServletContextName();
		if (LOG.isInfoEnabled()) {
			LOG.info("Initializing [ " + servletContextName + " ]");
		}

		customInitForServlet(event);

		if (LOG.isInfoEnabled()) {
			LOG.info("Initialized [ " + servletContextName + " ]nn");
		}
	}

	public final void contextDestroyed(final ServletContextEvent event) {
		String servletContextName = event.getServletContext().getServletContextName();
		if (LOG.isInfoEnabled()) {
			LOG.info("Destroying [ " + servletContextName + "]");
		}

		customDestroyForServlet(event);

		if (LOG.isInfoEnabled()) {
			LOG.info("Destroyed [ " + servletContextName + "]nn");
		}
	}

	protected void customInitForServlet(final ServletContextEvent event) {
		ServletContext servletContext = event.getServletContext();
		String appContextName = WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE;
		Object webCtxAttribute = servletContext.getAttribute(appContextName);
		if (null != webCtxAttribute) {
			if (webCtxAttribute instanceof Exception) {
				LOG.error(webCtxAttribute);
			}

		} else {
			throw new IllegalStateException("Could not read applicationContext.xml.");
		}
	}

	protected void customDestroyForServlet(final ServletContextEvent event) {
		//no-op
	}

	public final void sessionCreated(final HttpSessionEvent event) {
		String sessionId = event.getSession().getId();
		if (LOG.isDebugEnabled()) {
			LOG.debug("Initializing a new Session [" + sessionId + "]");
		}

		customInitForSession(event);

		if (LOG.isDebugEnabled()) {
			LOG.debug("Initialized a new Session [" + sessionId + "]");
		}
	}

	public final void sessionDestroyed(final HttpSessionEvent event) {
		String sessionId = event.getSession().getId();
		if (LOG.isDebugEnabled()) {
			LOG.debug("Destroying an existing Session [" + sessionId + "]");
		}

		customDestroyForSession(event);

		if (LOG.isDebugEnabled()) {
			LOG.debug("Destroyed an existing Session [" + sessionId + "]nn");
		}
	}

	protected void customInitForSession(final HttpSessionEvent event) {
		//no-op
	}

	protected void customDestroyForSession(final HttpSessionEvent event) {
		HttpSession session = event.getSession();
		session.removeValue(BosenConstants.SESSION_PAGINATED_SEARCH_RESULTS);
		session.removeAttribute(BosenConstants.SESSION_PAGINATED_SEARCH_RESULTS);
	}

	protected static ApplicationContext getApplicationContext(ServletContext servletContext) {
		String appContextName = WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE;
		return (ApplicationContext) servletContext.getAttribute(appContextName);
	}

	protected static Object getBean(ServletContext servletContext, String name) {
		return getApplicationContext(servletContext).getBean(name);
	}

new york cares…

August 16, 2008 on 10:07 am | In General | No Comments

If you know me, you know I love NYC. Anyway, there’s this song I keep hearing when I listen to the Radiohead radio station on Yahoo’s music engine: Interpol’s NYC (New York Cares). The lyrics are simple, but like a Beth Orton, it leaves a strong image in your mind. Maybe because I’ve taken the subway for majority of my early youth, who knows. Thought I’d share their video with you.

greatest generation…

August 13, 2008 on 9:13 pm | In Politics | No Comments

So, wait, what? Julia Child was a spy?! Outrageous, but true. This spy organization was the predecessor to the CIA, formed by president FDR. The spy list includes over 24,000 Americans. Like Mrs. Child, there are a ton who you’d never guess. Well, true patriotism requires that kind of spirit. I’m not calling her Patrick Henry, but she did something.

In contrast, today you have celebrities wearing vote or die t-shirts, but forgetting (?) to actually vote. Disgusting. In comparison to my facebooked and youtubed generation, how can you argue with the Greatest Generation title.

« Previous PageNext Page »

Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds. Valid XHTML and CSS. ^Top^