<!-- ActiveMQ -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>${org.apache.activemq.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.activemq</groupId>
<artifactId>activeio-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.fusesource.fuse-extra</groupId>
<artifactId>fusemq-leveldb</artifactId>
</exclusion>
<exclusion>
<artifactId>mqtt-client</artifactId>
<groupId>org.fusesource.mqtt-client</groupId>
</exclusion>
</exclusions>
</dependency>
Personal blog for Rick Lawson. One thing I have learned over the years is if you can't grasp the basic concepts of a technology in 10 minutes then the technology is flawed. Here are my musings, mainly on Java and Python.
Tuesday, July 24, 2012
Embedding ActiveMQ
Recently working on embedding ActiveMQ in Tomcat for internal messaging (all within the JVM so using the vm protocol). Was really shocked with the amount of dependencies maven pulled down for ActiveMQ (jetty, pieces of Hadoop, etc). So far here is what I have for exclusions
Tuesday, June 12, 2012
The case for a rewrite
Ok here is something people just have to accept:
So you either limp along taking ever longer to add new features or you plan for the rewrite. When I say rewrite it can be either a total rewrite, module by module, or some other way of slicing your system up. The point is some time goes by and basically all the code is rewritten. You may of course not tell your customers this as they panic easily but believe me it happens in almost every system. Some call it a major release and under the covers a new architecture and new code goes in and the version number gets bumped but what really happened was a rewrite.
The important thing here is to realize that the goal of your rewrite is to enable your system to keep a steep feature versus time curve for as long as possible. In other words, you are able to add features over time for roughly the same developer cost. Programming methods, frameworks and architectures advance so they all help you to manage complexity. This enables you to continue to add features without so much technical burden and unintended side effects. Also important is to realize your rewrite will have 4 phases.
Phase 1 - This is the start of the rewrite and here everyone is happy. You take the best parts of the old system and port them over. There is no old code so things just fly.
Phase 2 - Ok here is where you need to have guts and stick to your guns. You remember all those nifty frameworks, new architecture, new build tools, etc. All those help but they have their own learning curve. You'll bump into it here. Things slow down, management gets antsy. Hang in there.
Phase 3 - The curve picks back up again as everyone understands the new system and becomes more efficient. Productivity gains from the new architecture and tools really start to come through. If you have chosen wisely, your much better off than with the old system and hopefully you can maintain this development velocity for many years.
Phase 4 - The inevitable happens and you finally hit the wall on your system which by now is the (new) old system. Time to start thinking about the next rewrite.
- All systems must eventually be rewritten or they will die
So you either limp along taking ever longer to add new features or you plan for the rewrite. When I say rewrite it can be either a total rewrite, module by module, or some other way of slicing your system up. The point is some time goes by and basically all the code is rewritten. You may of course not tell your customers this as they panic easily but believe me it happens in almost every system. Some call it a major release and under the covers a new architecture and new code goes in and the version number gets bumped but what really happened was a rewrite.
The important thing here is to realize that the goal of your rewrite is to enable your system to keep a steep feature versus time curve for as long as possible. In other words, you are able to add features over time for roughly the same developer cost. Programming methods, frameworks and architectures advance so they all help you to manage complexity. This enables you to continue to add features without so much technical burden and unintended side effects. Also important is to realize your rewrite will have 4 phases.
Phase 2 - Ok here is where you need to have guts and stick to your guns. You remember all those nifty frameworks, new architecture, new build tools, etc. All those help but they have their own learning curve. You'll bump into it here. Things slow down, management gets antsy. Hang in there.
Phase 3 - The curve picks back up again as everyone understands the new system and becomes more efficient. Productivity gains from the new architecture and tools really start to come through. If you have chosen wisely, your much better off than with the old system and hopefully you can maintain this development velocity for many years.
Phase 4 - The inevitable happens and you finally hit the wall on your system which by now is the (new) old system. Time to start thinking about the next rewrite.
Wednesday, January 11, 2012
12 resolutions for programmers is a great thing to try
Came across this post on hacker news by Matt Might a CS prof at Univ of Utah.
http://matt.might.net/articles/programmers-resolutions/
I'd like to add a couple of resources
For (1) and (2) - Go analog & Stay healthy.
jogging is a great way to keep your sanity. Try the from couch to 5k program
couch to 5k
go vegetarian or vegan
http://features.peta.org/VegetarianStarterKit/
For (4) - Learn a new programming language.
python python python
http://python.org/
For (5) - Automate the real world
Normally I would recommend Arduino but after talking to a good friend of mine I think Raspberry Pi will change the world in the realm of low cost automation. For $25 you can stick a full PC anywhere to control anything.
http://www.raspberrypi.org/
All in all a great list and even if you only do a few it seems like a fun time.
http://matt.might.net/articles/programmers-resolutions/
I'd like to add a couple of resources
For (1) and (2) - Go analog & Stay healthy.
jogging is a great way to keep your sanity. Try the from couch to 5k program
couch to 5k
go vegetarian or vegan
http://features.peta.org/VegetarianStarterKit/
For (4) - Learn a new programming language.
python python python
http://python.org/
For (5) - Automate the real world
Normally I would recommend Arduino but after talking to a good friend of mine I think Raspberry Pi will change the world in the realm of low cost automation. For $25 you can stick a full PC anywhere to control anything.
http://www.raspberrypi.org/
All in all a great list and even if you only do a few it seems like a fun time.
Subscribe to:
Posts (Atom)

