Andrej Koelewijn

  • Home
  • About
  • Publications
  • Departments
    • agile
    • architecture
    • cloud
    • java
    • mobile
    • open standards
    • oracle
    • oss
    • other
    • soa
    • software development
    • tablet
    • Uncategorized
    • web
  • Subscribe via RSS

Updating a vagrant box

February 2nd, 2012  |  Published in software development

Here’s how i create an update of a vagrant box. It’s basically like creating a new box. I start a virtual machine based on an existing vagrant box, update it and shut it down. Next create a package and add the package:

vagrant package --base <name-in-virtualbox> --output <package-filename>
vagrant box add <box-name> <package-filename>

Using littleproxy in Mule unit tests

February 1st, 2012  |  Published in java, soa, software development

My mule configurations files often contain proxy settings for connectors that are used to communicate to the outside world. However during development and testing I can’t use the normal proxy, since i’m mocking the outside world.

Littleproxy is a java proxy that you can use to replace the real proxy with a testing proxy. This avoids you having to install a proxy on your development machine and on the continuous integration server.

The following is part of a mule config. It defines an http connector that is configured to talk through a proxy.

<http:connector name="http.connector"/>
<http:connector name="http.connector.proxy"
                proxyHostname="localhost" proxyPort="50103"/>
<flow name="http.gateway.and.proxy">
    <http:inbound-endpoint host="localhost" port="50102"
                           path="gateway.in"
                           exchange-pattern="request-response"
                           connector-ref="http.connector">
    </http:inbound-endpoint>
    <logger message="http.gateway - #1"/>
    <http:outbound-endpoint host="localhost" port="50100"
                            path="dummy.service"
                            connector-ref="http.connector.proxy">
    </http:outbound-endpoint>
</flow>

Include little proxy in your maven pom.xml:

<dependency>
    <groupId>org.littleshoot</groupId>
    <artifactId>littleproxy</artifactId>
    <version>0.4</version>
</dependency>

Here’s the unit test. First i start the proxy (you could also use @Before or @BeforeClass), and then i run a regular mule unit test:

public void testShouldReturnHelloWorldThroughGatewayAndProxy()
    throws Exception {
    String msg = "Hi!";
    HttpProxyServer proxyServer = new DefaultHttpProxyServer(50103);
    proxyServer.start();
    /*
    * send message
    */
    MuleClient client = new MuleClient(muleContext);
    MuleMessage result = client.send(
            "http://localhost:50102/gateway.in?connector=http.connector"
            , msg, null);
    String payload = result.getPayloadAsString();
    proxyServer.stop();
    Assert.assertTrue("Did not receive HelloWorld!: " + payload, "HelloWorld!".equals(payload));
}

Useful site to determine what html5, css3 & svg you can use

January 26th, 2012  |  Published in open standards, web

I’ve been using When can I use… quite a bit recently. It enables you to quickly determine if a html5, css3 or svg feature is enabled in all the different browsers. Very useful.

A Product Owner is a Project Manager

January 18th, 2012  |  Published in agile  |  1 Comment

A project manager is responsible for the succesful execution of a project. Success is usually defined as delivering the project on time, within budget, to the predefined requirements.

A product owner is also responsible for the succesful execution of a project. He manages a team, determines the requirements, the order in which the team delivers these requirements, and he determines when and how often these requirements are released.

The difference between a product owner and a project manager are the instruments used to manage a project.

Scrum is based on the fact that projects have large number of unknown aspects. Requirements may be unknown, productivity is unknown upfront, technical challenges will be unknown. Because of all these unpredicatable aspects, it’s impossible to draw up a plan upfront which predicts time, budget and delivered features.

A product owner manages the project by focussing on the requirements. What do the customers need? He makes sure that the most important aspects as done first. If you don’t know exactly what you need to ship to your users, and you don’t know exactly how long it will take to create it, you need prioritize.

“Do we still need a project manager if we’re doing scrum?”

Yes, scrum needs a project manager. It’s the product owner.

Using css webfonts in inkscape

January 17th, 2012  |  Published in open standards, oss, web

I’m working on a small javascript library to use svg drawings for presentations. This would allow you to display a single svg drawing similar to normal presentations on slideshare or speakerdeck. You can see the current state here: SVG Presenter test.

I wanted to see if you can use webfonts in an svg drawing in Inkscape. Found out it is doable. You can download fonts using the css rule @font-face. SVG supports css @font-face.

Here’s an example with four different fonts, all webfonts downloaded from google web fonts.

Inkscape doesn’t have official support for webfonts, but you can add the required css to the xml source. Here is an example, usually the defs element already exists and you need to add the style element:

  <defs id="defs2987">
    <style
       type="text/css"
       id="style7">@font-face {
  font-family: 'Shadows Into Light';
  font-style: normal;
  font-weight: normal;
  src: local('Shadows Into Light'), local('ShadowsIntoLight'), url('http://themes.googleusercontent.com/static/fonts/shadowsintolight/v3/clhLqOv7MXn459PTh0gXYHW1xglZCgocDnD_teV2lMU.woff') format('woff');
}
</style>
  </defs>

You can import fonts that you don’ have installed locally, but Inkscape will not allow you to select the font. You can however edit the svg source code to modify the style of some text to use the webfont. In the drawing above the first three fonts i used i have installed on my laptop, the fourth isn’t on my computer. Inkscape will show an error icon, but you can ignore it.

Create presentations using inkscape

January 3rd, 2012  |  Published in open standards, web  |  1 Comment

I create most of my presentations using Inkscape (here’s an example: Presentation: Introduction to Scrum). This is quite a bit of work, as i need to export all the separate images, and import them into LibreOffice Impress.

I’ve created a small javascript script that can be used to directly use the svg image as a presentation. It allows you to navigate through all the layers of a drawing. Here’s a demo: Inkscape-presenter demo. Use the arrow keys, your mouse, or a logitech remote presenter to move forward and backward (tested with firefox and chromium).

The code is on github: inkscape-presenter / slide-animation.js.

Jms request-reponse not responding in Mule

December 20th, 2011  |  Published in java, oss, soa  |  1 Comment

When I tried to use the following example by David Dossot mule-agent-based-sync-http-request-handling my jms endpoint times out. In the log i can see that the response message is created, but the outbound endpoint never receives it.

After some googling i found the following blog post by Claude Mamo: ReplyTo in a Mule flow. Adding the org.mule.routing.requestreply.ReplyToPropertyRequestReplyReplier processor does indeed solve the problem.

The weird thing is, i can’t find much documentation on the need for this. I searched the Mule User Guide, but it isn’t mentioned there. Also googling it, just returns a lot of links to source code.

Is this the correct way to implement a request response jms endpoint, or is this a workaround for a bug?

Using properties loaded with spring in Mule EL

December 14th, 2011  |  Published in java, oss, soa

Here is a quick example how you can access you can access properties loaded using spring using the Mule expression language.

    <!-- configure property placeholder -->
    <context:property-placeholder location="classpath:application.properties"
                                  system-properties-mode="OVERRIDE"
                                  ignore-resource-not-found="false"
                                  ignore-unresolvable="false"/>
    <!-- configure bean to read the same properties -->
    <spring:beans>
        <spring:bean id="appProps"
                     class="org.springframework.beans.factory.config.PropertiesFactoryBean">
            <spring:property name="singleton" value="true"/>
            <spring:property name="location" value="classpath:application.properties"/>
            <spring:property name="properties">
                <spring:props>
                    <spring:prop key="key4">value4</spring:prop>
                </spring:props>
            </spring:property>
        </spring:bean>
    </spring:beans>

    <flow name="spring-property">
        <vm:inbound-endpoint exchange-pattern="request-response" path="springproperty.in">
            <logger message="Message received #1" level="INFO"/>
            <!-- set a session scoped property on the message -->
            <message-properties-transformer scope="session">
                <add-message-property key="dynamickey" value="key4"/>
            </message-properties-transformer>
        </vm:inbound-endpoint>
        <!-- use the property placeholder, set once, not per message -->
        <logger message="key1 = ${key1}" level="INFO"/>
        <!-- use the appProps bean -->
        <logger message="key2 = #[groovy:appProps.key2]" level="INFO"/>
        <logger message="key3 = #[groovy:appProps['key3']]" level="INFO"/>
        <!-- access property value based on message property -->
        <logger message="key4 = #[groovy:appProps[message.getSessionProperty('dynamickey')]]" level="INFO"/>
        <append-string-transformer message="abc"/>
    </flow>

25 million euros wasted, project failed

November 28th, 2011  |  Published in agile, software development  |  2 Comments

Yet another big IT project in dutch government failed. A 25 million euro project was cancelled. Lots of press and discussions:

  • Ict-project waterschappen loopt uit op debacle
  • Tweede Kamer gaat onderzoek doen naar ict-problemen
  • Parlementair onderzoek naar ict-problemen bij overheid

Why did they spend 25 million before declaring the project failed? Shouldn’t they be able to detect earlier that what is being build isn’t going to help the users? Or that it’s going to cost a lot more than estimated?

Most government projects are using Prince 2, a project management method created by a British government institute. It looks like this isn’t working, for whatever reason. Maybe they’re not using it right, maybe it isn’t the right tool to create succesful products.

Mary Beijleveld recently pointed me towards another method created by a British governement institute: System Error. This approach advises to use Agile methods for project management.

Looks like a good time to read it.

As far as i’m concerned the biggest problem is not understanding the difference between product development and product manufacturing, and the different types of management you need for these two.

LAC2011 presentation: Scrum under Architecture

November 27th, 2011  |  Published in agile, architecture, software development  |  2 Comments

My LAC-2011 presentation Scrum under Architecture is now available on speakerdeck.

Since it contains mainly images, some notes might be useful:

  • Scrum isn’t something by software developers, for software developers
  • Scrum is a tool enabling management of product development by product managers
  • There are two types of projects: those implementing known solutions, and those looking for a solution for a problem
  • You can manage the first type of projects in the traditional way: requirements, time, resources are known and minimal change should be managed
  • The second type cannot be managed this way: you don’t know what the best solution will look like
  • Agile project management is about getting the best solution within available time and resources
  • Many companies struggle to scale agile: how to you go beyond one team?
  • Architecture enables you to scale agile
  • Agile Architecture is not just about doing short iterative architecture
  • Agile Architecture should enable you to work with small independent customers focussed teams
  • This needs to be enabled by technical architecture but also by organisational architecture

Previously


Feb 1, 2012
Using littleproxy in Mule unit tests

by akoelewijn | Read | No Comments

My mule configurations files often contain proxy settings for connectors that are used to communicate to the outside world. However during development and testing I can’t use the normal proxy, since i’m mocking the outside world. Littleproxy is a java proxy that you can use to replace the real proxy with a testing proxy. This [...]


Jan 26, 2012
Useful site to determine what html5, css3 & svg you can use

by akoelewijn | Read | No Comments

I’ve been using When can I use… quite a bit recently. It enables you to quickly determine if a html5, css3 or svg feature is enabled in all the different browsers. Very useful.


Jan 18, 2012
A Product Owner is a Project Manager

by akoelewijn | Read | 1 Comment

A project manager is responsible for the succesful execution of a project. Success is usually defined as delivering the project on time, within budget, to the predefined requirements. A product owner is also responsible for the succesful execution of a project. He manages a team, determines the requirements, the order in which the team delivers [...]


Jan 17, 2012
Using css webfonts in inkscape

by akoelewijn | Read | No Comments

I’m working on a small javascript library to use svg drawings for presentations. This would allow you to display a single svg drawing similar to normal presentations on slideshare or speakerdeck. You can see the current state here: SVG Presenter test. I wanted to see if you can use webfonts in an svg drawing in [...]


Jan 3, 2012
Create presentations using inkscape

by akoelewijn | Read | 1 Comment

I create most of my presentations using Inkscape (here’s an example: Presentation: Introduction to Scrum). This is quite a bit of work, as i need to export all the separate images, and import them into LibreOffice Impress. I’ve created a small javascript script that can be used to directly use the svg image as a [...]


Dec 20, 2011
Jms request-reponse not responding in Mule

by akoelewijn | Read | 1 Comment

When I tried to use the following example by David Dossot mule-agent-based-sync-http-request-handling my jms endpoint times out. In the log i can see that the response message is created, but the outbound endpoint never receives it. After some googling i found the following blog post by Claude Mamo: ReplyTo in a Mule flow. Adding the [...]

About Andrej Koelewijn

On Software Development, Agile, SOA, Java and OpenSource

Tags

activemq agile bi camel css esb google governance grails groovy gtalk html5 internet ipad ivy J2EE java javascript jaxrs jmx jquery lean linkeddata linux maven mule noiv openoffice opensource Open Source oracle osgi oss rdbms rest scrum servicemix soa sql svg tablet web 2.0 XML xmpp yql

Archives

  • February 2012
  • January 2012
  • December 2011
  • November 2011
  • October 2011
  • September 2011
  • August 2011
  • July 2011
  • June 2011
  • May 2011
  • April 2011
  • March 2011
  • February 2011
  • January 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • August 2010
  • June 2010
  • March 2010
  • February 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • August 2009
  • July 2009
  • June 2009
  • May 2009
  • April 2009
  • March 2009
  • February 2009
  • January 2009
  • December 2008
  • November 2008
  • October 2008
  • January 2008
  • December 2007
  • November 2007
  • October 2007
  • September 2007
  • August 2007
  • July 2007
  • June 2007
  • May 2007
  • April 2007
  • March 2007
  • February 2007
  • January 2007
  • December 2006
  • November 2006
  • October 2006
  • August 2006
  • July 2006
  • June 2006
  • May 2006
  • April 2006
  • March 2006
  • January 2006
  • December 2005
  • November 2005
  • October 2005
  • September 2005
  • August 2005
  • July 2005
  • June 2005

Meta

  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.org

Recent Posts

  • Updating a vagrant box
  • Using littleproxy in Mule unit tests
  • Useful site to determine what html5, css3 & svg you can use
  • A Product Owner is a Project Manager
  • Using css webfonts in inkscape

Categories

  • agile
  • architecture
  • cloud
  • java
  • mobile
  • open standards
  • oracle
  • oss
  • other
  • soa
  • software development
  • tablet
  • Uncategorized
  • web

Recent Comments

  • Pcdiggs on Software architecture, PHP and Javascript
  • Een Scrum Product Owner is een Project Leider on A Product Owner is a Project Manager
  • Using css webfonts in inkscape :: Andrej Koelewijn on Create presentations using inkscape
  • Create presentations using inkscape :: Andrej Koelewijn on Presentation: Introduction to Scrum
  • Gebhard Greiter on What is Agile?
Buzz
andrkoel: Utrecht hele dag mist, scheveningen zomerse dag... http://t.co/cDRCJHr9
4:35 PM Nov 10, 2011, comment
andrkoel: RT @stefanvdkamp: Beter filmpje van Garret McNamara in de 30 meter hoge golf. http://t.co/9abiWkYX
9:20 AM Nov 10, 2011, comment
andrkoel: Mmm, een uur voor den haag - leiden lijkt te weinig, ga mijn afspraak niet redden...
7:34 AM Nov 10, 2011, comment
andrkoel: Big Data is Useless without Science http://t.co/2I8EiLsH
6:18 AM Nov 10, 2011, comment
andrkoel: Just tried #vagrant to quickly setup virtualbox development environment. Looks good, although provisioning apache through puppet failed...
10:47 PM Nov 09, 2011, comment
 

Contributors

  • admin
  • akoelewijn

Popular

  • Using google talk from java example
  • ADF Training
  • Groovy and Grape - easiest way to send gtalk message with Apache Camel?
  • REST is a distributed data model
  • SQL is a DSL
  • Oracle best thing that could happen to JavaFX?
  • A simple file monitoring console with camel, cometd and jquery
  • Why tablets will be huge: media convergence
  • Oracle buying Sun: what does it mean for Open Source?
  • Google Wave killer app for HTML 5?
  • Blogroll

    • Java / Oracle SOA blog
    • Oracle .. Java .. OpenSource .. SOA
    • Mike van Alst
    • IT-eye weblog


  • ©2012 Andrej Koelewijn
    Powered by WordPress using the Gridline Lite theme by Graph Paper Press.