<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Disqus - Latest Comments for jstrachan</title><link>http://disqus.com/by/jstrachan/</link><description></description><atom:link href="http://disqus.com/jstrachan/comments.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Tue, 26 Feb 2019 00:55:56 -0000</lastBuildDate><item><title>Re: Continuous Delivery with Amazon EKS and Jenkins X</title><link>https://aws.amazon.com/blogs/opensource/continuous-delivery-eks-jenkins-x/#comment-4354481097</link><description>&lt;p&gt;I'm so sorry to hear joining slack is currently unavailable. I guess we can use &lt;a href="http://discuss.kubernetes.io" rel="nofollow noopener" target="_blank" title="discuss.kubernetes.io"&gt;discuss.kubernetes.io&lt;/a&gt; until then - or you could raise an issue on github: &lt;a href="https://github.com/jenkins-x/jx/issues" rel="nofollow noopener" target="_blank" title="https://github.com/jenkins-x/jx/issues"&gt;https://github.com/jenkins-...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Tue, 26 Feb 2019 00:55:56 -0000</pubDate></item><item><title>Re: How We (almost) Reinvented Jenkins X on Our Own</title><link>https://pattern-match.com/blog/2018/12/04/how-we-almost-reinvented-jenkins-x-on-our-own/#comment-4311204517</link><description>&lt;p&gt;Good article! Note though you can still use Jenkins X with your classic hand-crafted Jenkinsfiles and pipeline libraries. You can then mix and match for the biggest win - use Jenkins X automation on new microservices you deploy on kubernetes and keep your existing hand rolled pipelines for other stuff.&lt;/p&gt;&lt;p&gt;Also by rolling it yourself you miss out on really useful features like:&lt;/p&gt;&lt;p&gt;* automated Promotion via GitOps: &lt;a href="https://jenkins-x.io/about/features/#promotion" rel="nofollow noopener" target="_blank" title="https://jenkins-x.io/about/features/#promotion"&gt;https://jenkins-x.io/about/...&lt;/a&gt;&lt;br&gt;* Preview Environments being created automatically on Pull Requests: &lt;a href="https://jenkins-x.io/about/features/#preview-environments" rel="nofollow noopener" target="_blank" title="https://jenkins-x.io/about/features/#preview-environments"&gt;https://jenkins-x.io/about/...&lt;/a&gt;&lt;br&gt;* develop inside the cloud with DevPods: &lt;a href="https://jenkins-x.io/developing/devpods/" rel="nofollow noopener" target="_blank" title="https://jenkins-x.io/developing/devpods/"&gt;https://jenkins-x.io/develo...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I know I can't live without Preview Environments now! They are awesome.&lt;/p&gt;&lt;p&gt;But yeah, if you are focussing on managing existing Jenkins pipelines as-is without taking advantage of kubernetes or GitOps then you need to weigh up if you want to roll things yourself or move to Jenkins X&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Mon, 28 Jan 2019 12:35:27 -0000</pubDate></item><item><title>Re: Continuous Delivery with Amazon EKS and Jenkins X</title><link>https://aws.amazon.com/blogs/opensource/continuous-delivery-eks-jenkins-x/#comment-4202114883</link><description>&lt;p&gt;BTW the best way to get fast support is via the Slack channel: &lt;a href="https://jenkins-x.io/community/#slack" rel="nofollow noopener" target="_blank" title="https://jenkins-x.io/community/#slack"&gt;https://jenkins-x.io/commun...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I wonder if you could share more of the console output? I'm assuming something earlier in the output actually failed (e.g. maybe some resource could not be created due to your RBAC or IAM policies?).&lt;/p&gt;&lt;p&gt;Did you run `jx create cluster eks`?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Mon, 19 Nov 2018 04:21:55 -0000</pubDate></item><item><title>Re: Comparing Tools That Offer Previews  </title><link>https://blog.probo.ci/comparing-tools-offer-previews#comment-4021414283</link><description>&lt;p&gt;There is also Jenkins X which is OSS and can be used on any kubernetes cluster - it automates CI/CD for releasing apps as helm charts and promoting them across your environments. It also supports preview environments on each pull request: &lt;a href="https://jenkins-x.io/" rel="nofollow noopener" target="_blank" title="https://jenkins-x.io/"&gt;https://jenkins-x.io/&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Sat, 04 Aug 2018 02:19:43 -0000</pubDate></item><item><title>Re: Deploy Monocular on OpenShift</title><link>https://blog.openshift.com/deploy-monocular-openshift/#comment-3863626322</link><description>&lt;p&gt;Great blog post thanks! I've hit a similar issue of not being able to deploy monocular on OpenShift when it works on all other kubernetes clusters I try. &lt;a href="https://github.com/jenkins-x/jx/issues/435#issuecomment-382634818" rel="nofollow noopener" target="_blank" title="https://github.com/jenkins-x/jx/issues/435#issuecomment-382634818"&gt;https://github.com/jenkins-...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Though the setting mongodb.persistence.enabled=false looks kinda scary - doesn't that disable the user of the PersistentVolumeClaim - i.e. disabling persistence completely?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Thu, 19 Apr 2018 23:49:04 -0000</pubDate></item><item><title>Re: Getting Started With A Local Kubernetes Environment</title><link>https://blog.giantswarm.io/getting-started-with-a-local-kubernetes-environment/#comment-2704555683</link><description>&lt;p&gt;We struggled with the various options; particularly as we wanted to use CentOS and wanted to expose the Docker port so that we could easily do local docker builds from the host and reuse the built images directly inside kubernetes (to avoid delays caused by pushing to a registry), so we came up with this vagrant image: &lt;a href="https://github.com/fabric8io/fabric8-installer/tree/master/vagrant/kubernetes" rel="nofollow noopener" target="_blank" title="https://github.com/fabric8io/fabric8-installer/tree/master/vagrant/kubernetes"&gt;https://github.com/fabric8i...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;It turns out its really easy to run a single node kubernetes cluster purely using docker too&lt;br&gt;&lt;a href="https://github.com/fabric8io/fabric8-installer/blob/master/vagrant/kubernetes/bin/start-kubernetes" rel="nofollow noopener" target="_blank" title="https://github.com/fabric8io/fabric8-installer/blob/master/vagrant/kubernetes/bin/start-kubernetes"&gt;https://github.com/fabric8i...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;BTW here's now to get a nice console for running apps or a full CI / CD pipeline too:&lt;br&gt;&lt;a href="http://fabric8.io/guide/getStarted/kubernetes.html" rel="nofollow noopener" target="_blank" title="http://fabric8.io/guide/getStarted/kubernetes.html"&gt;http://fabric8.io/guide/get...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Tue, 31 May 2016 10:36:44 -0000</pubDate></item><item><title>Re: Using NSEnter with Boot2Docker</title><link>https://ro14nd.de/NSEnter-with-Boot2Docker/#comment-1568998160</link><description>&lt;p&gt;awesome stuff!!! works a treat, thanks!&lt;/p&gt;&lt;p&gt;to get the bash completion thingy to work I did:&lt;/p&gt;&lt;p&gt;  brew install bash-completion&lt;/p&gt;&lt;p&gt;then added the docker-enter_commands to /usr/local/etc/bash_completion.d&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Mon, 01 Sep 2014 12:28:52 -0000</pubDate></item><item><title>Re: Microservices and monoliths - is there a third way? - Zen Slapped</title><link>http://www.tomakehurst.com/microservices-and-monoliths-is-there-a-third-way#comment-1386712789</link><description>&lt;p&gt;You're right that micro services isn't "new" (little in IT is ever really new since the 70s really ;) - its just a different approach.&lt;/p&gt;&lt;p&gt;While OSGi has been used for many years to implement modular services (and fabric8 started life working exclusively on OSGi &amp;amp; it still works great inside an OSGi container), most of the new 'micro services' based approaches and tools (e.g. DropWizard, Spring Boot, Vertx, Netflix &amp;amp; the ThoughtWorks approaches et al) are slightly different; its not so much about composing modular services inside a single JVM (the OSGi approach) but more about physically separating them into separate, stand alone JVMs for easier monitoring, management &amp;amp; incremental change.&lt;/p&gt;&lt;p&gt;While looking through OSGi glasses that might not seem a big deal - OSGi might equate to "micro services" to you - but from a devops perspective its quite different.&lt;/p&gt;&lt;p&gt;There are various ways to compose services inside a single JVM (flat classpath, DI, OSGi, servlets, JEE, JBoss Modules etc), IMHO the micro services approach is more about decoupling your JVMs/services. How the services inside a micro-service JVM are wired is a separate thing (and often micro services are so much smaller, the framework/app server is little less important). So I don't think anyone's really saying OSGi can't be used; any Java technologies which can load Java bytecode will do just fine really.&lt;/p&gt;&lt;p&gt;Though I would say, rather like JEE / EJB3, one of the drivers behind the micro services meme/movement/approach is on simplicity &amp;amp; developer productivity. Thats never a word even the biggest OSGi fan would ever use about OSGi compared to a flat class loader ;). IMHO the simplest, easiest, smallest &amp;amp; most productive classloader mechanism I can imagine today for writing micro services on is a flat classpath. Though YMMV. One things for sure; we're never all gonna agree on whats the one true way to make class loaders in Java ;)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Thu, 15 May 2014 05:50:46 -0000</pubDate></item><item><title>Re: Parallel Universe</title><link>http://blog.paralleluniverse.co/2014/05/08/modern-java-pt2/#comment-1386518540</link><description>&lt;p&gt;Thanks for your kind words! I guess my TL;DR; response is fabric8 is like a distributed version of Capsule for running more than one Java process on possibly more than one machine which may need to know where each process is on the network etc.&lt;/p&gt;&lt;p&gt;Yeah the fabric8 website needs some serious work to explain what it does; its kinda confusing and hard to grok from the site. The overview is probably the best thing we have so far, but I hope we can improve that soon! :)&lt;br&gt;&lt;a href="http://fabric8.io/#/site/book/doc/index.md?chapter=overview_md" rel="nofollow noopener" target="_blank" title="http://fabric8.io/#/site/book/doc/index.md?chapter=overview_md"&gt;http://fabric8.io/#/site/bo...&lt;/a&gt;&lt;br&gt;The video demo above may be the quickest way to grok fabric8 in the micro service context.&lt;/p&gt;&lt;p&gt;Basically fabric8 came from trying to make it easy to provision, configure and manage "Java stuff" in a number of processes across usually more than one machine; particularly REST + web services, Apache Camel integration flows and messaging applications using ActiveMQ / STOMP / AMQP / MQTT etc.&lt;/p&gt;&lt;p&gt;We designed fabric8 to have minimal requirements; its just a JVM you can start &amp;amp; its got everything you need &amp;amp; works on any OS with a JVM; but to be able to run multiple processes on multiple machines (and be able to help wiring things together). When you try run "java stuff" on EC2, on arbitrary compute nodes with jclouds, on OpenStack or on a PaaS like OpenShift or start using things like Docker; soon you tend to get dynamic IP addresses or ports and a significant amount of work is required to wire stuff together.&lt;/p&gt;&lt;p&gt;We started out supporting OSGi as the 'application server' for running Java stuff a few years ago when we started (integrating it into Fuse ESB then JBoss Fuse) then added the Java Container to support stand alone flat class path processes and are working hard on deep Tomcat, TomeE &amp;amp; Wildfly integration right now.&lt;/p&gt;&lt;p&gt;When it comes to class loaders and application servers we see a large spectrum from simple flat classpath, to servlets to JEE to OSGi; all have their strengths and weaknesses. Its a classic simplicity &amp;amp; productivity versus modularity/complexity trade off really. (e.g. OSGi is particularly great at reloading just, say, 1 bundle when new code is available without disturbing any other java code which can be really useful).&lt;/p&gt;&lt;p&gt;We see lots of folks in the field liking different parts of this spectrum for good reason; we kinda think 'the customer is always right' and want to let folks use whatever packaging/app server they wish for each service/application. Personally I love the simplicity and productivity of a flat classpath though ;)&lt;/p&gt;&lt;p&gt;In parallel we've added support to work nicely with different infrastructure (docker, cloud, IaaS, PaaS etc); so you can provision containers over jclouds, ssh, OpenShift and docker; but those are all optional; you can just use fabric8 on your laptop to run one or more JVMs using 'just java'. e.g. increasingly if you're using linux we see systemd as an ideal way to ensure your java processes keep running (which thankfully is the approach used by OpenShift too; so you're PaaS ready too if you go that route); but if you're on windows you can just miss out the systemd stuff.&lt;/p&gt;&lt;p&gt;I like Capsule though; it does one thing very well.&lt;/p&gt;&lt;p&gt;As an aside; the Capsule / Spring Boot approach of making an uberjar does make things easier to run ("java -jar FTW!") but one downside; it can take a little while to jar and unjar those jars in development (which in development they don't really add much value). Just putting jars (that change) into a lib folder and using 'java -cp "lib/*" $MAIN" does speed that up quite a bit; making the developer experience much slicker.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Thu, 15 May 2014 02:00:18 -0000</pubDate></item><item><title>Re: Parallel Universe</title><link>http://blog.paralleluniverse.co/2014/05/08/modern-java-pt2/#comment-1384706813</link><description>&lt;p&gt;Great article! I give jolokia a massive thumbs up too.&lt;/p&gt;&lt;p&gt;Another alternative to Capsule for provisioning stand alone Java processes from a jar (via maven dependency information) is fabric8: &lt;a href="http://fabric8.io/" rel="nofollow noopener" target="_blank" title="http://fabric8.io/"&gt;http://fabric8.io/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I did a little blog and video demo last week showing how to deploy a maven project to fabric8 and creating as many containers as required:&lt;br&gt;&lt;a href="http://macstrac.blogspot.co.uk/2014/05/micro-services-with-fabric8.html" rel="nofollow noopener" target="_blank" title="http://macstrac.blogspot.co.uk/2014/05/micro-services-with-fabric8.html"&gt;http://macstrac.blogspot.co...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;here's the video:&lt;br&gt;&lt;a href="https://vimeo.com/94501138" rel="nofollow noopener" target="_blank" title="https://vimeo.com/94501138"&gt;https://vimeo.com/94501138&lt;/a&gt;&lt;/p&gt;&lt;p&gt;whats interesting is it works using separate processes locally on a machine; or can work on docker (where it dynamically creates a docker container image on the fly); plus we should add "Java Container" support to OpenShift shortly too.&lt;br&gt;&lt;a href="http://fabric8.io/#/site/book/doc/index.md?chapter=javaContainer_md" rel="nofollow noopener" target="_blank" title="http://fabric8.io/#/site/book/doc/index.md?chapter=javaContainer_md"&gt;http://fabric8.io/#/site/bo...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I like that each Java process can use any classpath it wishes; fabric8 doesn't add anything into the classpath or do any class loader tricks; so its nice and simple. Plus you get a nice out of the box hawtio console for each JVM you deploy (with fabric8 keeping track of all the containers and their status; where you can start and stop them via the UI or command line shell etc).&lt;/p&gt;&lt;p&gt;Then folks are free to use any framework they choose; dropwizard, spring, spring boot, vertx, dagger, CDI or whatnot; then whether folks are running stand alone Java processes, Tomcat, WildFly or Karaf containers; there's a single UI and CLI for provisioning and managing etc.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Wed, 14 May 2014 11:00:01 -0000</pubDate></item><item><title>Re: Microservices and monoliths - is there a third way? - Zen Slapped</title><link>http://www.tomakehurst.com/microservices-and-monoliths-is-there-a-third-way#comment-1384661599</link><description>&lt;p&gt;Its on my list of things to do to create a DropWizard demo of fabric8 provisioning. Its great stuff!&lt;/p&gt;&lt;p&gt;We've used Profiles in lots of different ways in the past (which support multiple inheritance and composition):&lt;br&gt;&lt;a href="http://fabric8.io/#/site/book/doc/index.md?chapter=profiles_md" rel="nofollow noopener" target="_blank" title="http://fabric8.io/#/site/book/doc/index.md?chapter=profiles_md"&gt;http://fabric8.io/#/site/bo...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;e.g. we could have a profile, "activemq" for running, say, an ActiveMQ message broker on a typical box; then we could have a "activemq-bigbox" profile which inherits from "activemq" profile and just tweaks the thread pool size, connection count and memory buffer when run on a big box (with plenty of CPU and RAM).&lt;/p&gt;&lt;p&gt;So folks have often used profiles as a way of tagging groups of services (with hardware or geographical capabilities or metadata). As an aside, one nice thing is when using the RHQ monitoring software: &lt;a href="http://rhq.jboss.org/" rel="nofollow noopener" target="_blank" title="http://rhq.jboss.org/"&gt;http://rhq.jboss.org/&lt;/a&gt; we've a plugin that groks fabric8's registry and mapping of containers (services) to profiles; so we can automatically aggregate metrics of all service instances of the same profile. (e.g. aggregate metrics for all message brokers globally; or aggregate by kind of hardware, by rack/data centre/country etc).&lt;/p&gt;&lt;p&gt;Sorry got side tracked there ;) what I meant to say was we could use profiles as 'tags' to indicate if a service was slow/fast or reliable or not, stateless or stateful etc. Then we could provision/manage services with different profiles/metadata differently. (e.g. we could use a different docker container or docker container configuration for stateful services to explicitly mount a shared block storage to backup the file system for stateful services - say).&lt;/p&gt;&lt;p&gt;e.g. maybe unreliable HTTP based services would get a Gateway provisioned in front of them to do automatic retries?&lt;/p&gt;&lt;p&gt;Having the perfect DevOps infrastructure for all kinds of services (micro or not) is complex and there are lots of trade offs but so far we've been really happy how fabric8 gets out of our way (using whatever container/application server/runtime/classpath/infrastructure we like on a per profile basis) then having a nice web UI and CLI for working with all this stuff; and we can then just  perform some configuration or write some little bits of generic java code here or there (or create the odd custom docker image) to solve edge cases when we hit them.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Wed, 14 May 2014 10:48:30 -0000</pubDate></item><item><title>Re: Microservices and monoliths - is there a third way? - Zen Slapped</title><link>http://www.tomakehurst.com/microservices-and-monoliths-is-there-a-third-way#comment-1384475196</link><description>&lt;p&gt;Great post!&lt;/p&gt;&lt;p&gt;Incidentally I blogged last week and cut a little video demo showing how to provision maven jars with an executable main function using the open source project, fabric8 &lt;a href="http://fabric8.io/" rel="nofollow noopener" target="_blank" title="http://fabric8.io/"&gt;http://fabric8.io/&lt;/a&gt; (with a management console for each JVM included too):&lt;br&gt;&lt;a href="http://macstrac.blogspot.co.uk/2014/05/micro-services-with-fabric8.html" rel="nofollow noopener" target="_blank" title="http://macstrac.blogspot.co.uk/2014/05/micro-services-with-fabric8.html"&gt;http://macstrac.blogspot.co...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;you can either use stand alone processes; or if you enable the docker profile; then fabric8 creates docker images on the fly for each profile (based on the maven dependencies in your project) and uses docker to start/stop processes (and includes a nice web UI for docker too).&lt;/p&gt;&lt;p&gt;What I find particularly interesting about the Java Container approach in fabric8 is that there's not a single particular framework or container class added to the classpath - its completely up to the owners of a service to decide what its flat classpath is going to be; so folks can use vanilla Java, spring, CDI, vertx, dagger, dropwizard or whatever any versions they want; also its particularly cool that its so easy to view all the containers; their profiles and you get a nice web console for free to look inside each JVM.&lt;/p&gt;&lt;p&gt;If folks wanna use OSGi (or Tomcat / WildFly) its fairly easy to just change the profile and fabric8 deploys those containers instead; but in the case of Micro Services; avoiding the application server sounds like its going to be more common.&lt;/p&gt;&lt;p&gt;Whats interesting is that just starting/stopping a process / docker container isn't really enough; what we're finding is you need to do some wiring the micro services together (e.g. inject, say, system properties, configuration files or environment variables to say where, say, ActiveMQ message brokers are or where web service endpoints are etc). We can do this pretty easily with fabric8; whether its exporting host / ports / application specific metadata into the runtime registry; or using whats in the registry to inject environment variables / system properties / config file values..&lt;br&gt;&lt;a href="http://fabric8.io/#/site/book/doc/index.md?chapter=registry_md" rel="nofollow noopener" target="_blank" title="http://fabric8.io/#/site/book/doc/index.md?chapter=registry_md"&gt;http://fabric8.io/#/site/bo...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Another interesting approach - which is a bit more PaaS-ish or Docker-ish is to use localhost and fixed ports to communicate with protocols like AMQP / STOMP / MQTT or to talk to well defined services (memcached / cassandra or whatnot); then in this case you can also provision on the same machine a Gateway (like a local http proxy) that does the dynamic load balancing to where the micro services or infrastructure addresses &amp;amp; ports really are:&lt;br&gt;&lt;a href="http://fabric8.io/#/site/book/doc/index.md?chapter=gateway_md" rel="nofollow noopener" target="_blank" title="http://fabric8.io/#/site/book/doc/index.md?chapter=gateway_md"&gt;http://fabric8.io/#/site/bo...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Wed, 14 May 2014 09:22:18 -0000</pubDate></item><item><title>Re: Writing a Camel Component &amp;#8211; Camel-Static-Resource</title><link>http://code.notsoclever.cc/writing-camel-component-camel-static-resource/#comment-1138355618</link><description>&lt;p&gt;Great article!&lt;/p&gt;&lt;p&gt;BTW if you also use Endpoint Annotations &lt;br&gt;&lt;a href="http://camel.apache.org/endpoint-annotations.html" rel="nofollow noopener" target="_blank" title="http://camel.apache.org/endpoint-annotations.html"&gt;http://camel.apache.org/end...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;then you'll get a nicer auto-generated UI form in tools like hawtio  - &lt;a href="http://hawt.io/" rel="nofollow noopener" target="_blank" title="http://hawt.io/"&gt;http://hawt.io/&lt;/a&gt; - if you edit routes using this new component. You also get nice auto-generated static HTML too (similar to the auto-generated docs for maven plugins).&lt;/p&gt;&lt;p&gt;You can even implement the new EndpointCompleter to get nice auto-completion of the URI path in hawtio (and other tools)&lt;br&gt;&lt;a href="http://camel.apache.org/endpointcompleter.html" rel="nofollow noopener" target="_blank" title="http://camel.apache.org/endpointcompleter.html"&gt;http://camel.apache.org/end...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Mon, 25 Nov 2013 11:47:39 -0000</pubDate></item><item><title>Re: The Best IT Events 2014: What Attendees Want and Exhibitors Expect, Plus ROI Considerations</title><link>https://zeroturnaround.com/rebellabs/the-best-it-events-2014/#comment-966772353</link><description>&lt;p&gt;BTW the Red Hat Summit / JUDCon also included CamelOne too&lt;br&gt;&lt;a href="http://camelone.com/" rel="nofollow noopener" target="_blank" title="http://camelone.com/"&gt;http://camelone.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;which is the main conference for Apache Camel and open source integration technologies. Might be nice to mention it on the Red Hat Summit / JUDCon section.&lt;/p&gt;&lt;p&gt;Plus CamelOne has quite a lot of non Red Hat talks from various vendors &amp;amp; customers etc&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Thu, 18 Jul 2013 06:50:49 -0000</pubDate></item><item><title>Re: http://richardlog.com/post/21142113656</title><link>http://richardlog.com/post/21142113656#comment-498726397</link><description>&lt;p&gt;Note you could write the kotlin version as pretty much the same lines of code too BTW. e.g. line 13 could be:&lt;/p&gt;&lt;p&gt;!input.toLowerCase().split(" ").any{ !words.contains(it) }&lt;/p&gt;&lt;p&gt;i.e. scala and kotlin are about as concise.&lt;/p&gt;&lt;p&gt;Where sometimes Scala can be more concise, its usually at the cost of readability and easy understanding; though in general application code they appear to be about as concise as each other&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Mon, 16 Apr 2012 06:41:16 -0000</pubDate></item><item><title>Re: Continuous Integration and Feature Branches</title><link>https://zeroturnaround.com/rebellabs/continuous-integration-and-feature-branches/#comment-188173174</link><description>&lt;p&gt;FWIW we use a little bit of scala code to auto-generate most of our CI build configurations; so its really easy to add new projects, branches, mvn profiles and so forth using a simple little DSL describing the build configurations...&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/fusesource/hudsongen" rel="nofollow noopener" target="_blank" title="https://github.com/fusesource/hudsongen"&gt;https://github.com/fusesour...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Wed, 20 Apr 2011 08:23:11 -0000</pubDate></item><item><title>Re: Maven artifacts need to be more discoverable</title><link>http://www.javarants.com/2010/05/16/maven-artifacts-need-to-be-self-discoverable/#comment-50674081</link><description>&lt;p&gt;Am liking the use of URLs instead of dependency group/artifact/version tuples (particularly as often projects change their group/artifact ids or moves stuff to different repos which causes pain in poms).&lt;/p&gt;&lt;p&gt;Then you could just run (on your local machine or on your WAN/LAN for your team) a regular caching http proxy to speed up mvn builds.&lt;/p&gt;&lt;p&gt;It is nice having a global mirrored repo as a cache in case &lt;a href="http://sampullara.com" rel="nofollow noopener" target="_blank" title="sampullara.com"&gt;sampullara.com&lt;/a&gt; is down for example - but central repos could just rsync known repos and act as a backup http proxy cache.&lt;/p&gt;&lt;p&gt;It'd be nice to be able to do imports using URIs too in code...&lt;/p&gt;&lt;p&gt;  import &lt;a href="http://cli-parser.sampullara.com/4.5" rel="nofollow noopener" target="_blank" title="http://cli-parser.sampullara.com/4.5"&gt;http://cli-parser.sampullar...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;and the JVM could auto-download stuff on the fly...&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Mon, 17 May 2010 04:00:42 -0000</pubDate></item><item><title>Re: The ideal web application templating system</title><link>http://www.javarants.com/2010/05/03/the-ideal-web-application-templating-system/#comment-48955988</link><description>&lt;p&gt;I'm not sure there is a single ideal template language; it kinda depends on your requirements.&lt;/p&gt;&lt;p&gt;e.g.&lt;/p&gt;&lt;p&gt;(i) does the designer just use mock data inside a local HTML file, then you inject values into it on the server, &lt;br&gt;(ii) do you use mustache style tags {{foo}} or {{#bar}} inside the HTML which look a bit icky to the designer but at least there's no logic - and you can reuse templates on the client side too&lt;br&gt;(iii) or do you have the templates owned by scala/ruby/java/groovy hackers so they want something DRY (like Haml) &lt;br&gt;(iv) or use a template language the developers already know well (SSP/JSP/Erb/Velocity etc).&lt;/p&gt;&lt;p&gt;They all have strengths and weaknesses depending on the project and make up of your team. FWIW we've got (iii) and (iv) in Scalate already and we're working on (i) and (ii) in master right now.&lt;/p&gt;&lt;p&gt;&lt;a href="http://scalate.fusesource.org/" rel="nofollow noopener" target="_blank" title="http://scalate.fusesource.org/"&gt;http://scalate.fusesource.org/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Irrespective of (i), (ii), (iii) or (iv) you get a nice error console which highlights to the developer which lines/expressions have errors when mistakes occur in development mode. The Scala parser combinators for all the above templates helps us make really good error messages if there are any mistakes in the templates (very common!). Plus the API and layouts are polymorphic so you can mix and match the template engines based on requirements.&lt;/p&gt;&lt;p&gt;e.g. the designer may own some templates (i) or you might use mustache style (ii) or use scaml for developer-owned templates and (iv) for emails etc.&lt;/p&gt;&lt;p&gt;I've ran out of time this week - but I hope to document next week how you can use either mustache style or jquery style templates together or separately, depending on if you want a plain HTML without mustaches or not for your designer...&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Fri, 07 May 2010 12:30:29 -0000</pubDate></item><item><title>Re: Why Apache ActiveMQ isn&amp;#8217;t good for .NET developers?</title><link>https://blog.goyello.com/2009/09/07/why-apache-activemq-isnt-good-for-net-developers/#comment-16230103</link><description>&lt;p&gt;@Alessios - agreed. Thats the 'messaging' way of doing things; which is based on asynchronous message passing and avoids locking yet works in a consistent way despite high concurrency rather than doing non-transactional RPCs (querying queue depths) etc.&lt;/p&gt;&lt;p&gt;i.e. to use messaging well you don't treat the messaging system as a database to query&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Wed, 09 Sep 2009 04:00:41 -0000</pubDate></item><item><title>Re: Why Apache ActiveMQ isn&amp;#8217;t good for .NET developers?</title><link>https://blog.goyello.com/2009/09/07/why-apache-activemq-isnt-good-for-net-developers/#comment-16095117</link><description>&lt;p&gt;NMS should be able to support queue browsing  - see &lt;a href="http://issues.apache.org/activemq/browse/AMQNET-97" rel="nofollow noopener" target="_blank" title="http://issues.apache.org/activemq/browse/AMQNET-97"&gt;http://issues.apache.org/ac...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;FWIW you can use the web console to view the queues and browse messages. We're in the process of creating a fully RESTful access to ActiveMQ from any language via &lt;a href="http://restmq.fusesource.org/" rel="nofollow noopener" target="_blank" title="http://restmq.fusesource.org/"&gt;http://restmq.fusesource.org/&lt;/a&gt; so any language capable of doing a few HTTP GET requests can find out details on a destination, browse its messages, DELETE them or POST new messages etc.&lt;/p&gt;&lt;p&gt;In the meantime I've raised this issue which would make it pretty trivial to query the queue size, by just sending a message to a pseudo destination of ActiveMQ.Statistic.Queues.MyQueue and getting back a Map message of the current size &amp;amp; enqueue/dequeue rates etc.&lt;/p&gt;&lt;p&gt;See &lt;a href="https://issues.apache.org/activemq/browse/AMQ-2379" rel="nofollow noopener" target="_blank" title="https://issues.apache.org/activemq/browse/AMQ-2379"&gt;https://issues.apache.org/a...&lt;/a&gt;&lt;br&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jstrachan</dc:creator><pubDate>Mon, 07 Sep 2009 10:33:56 -0000</pubDate></item></channel></rss>