Friday, August 31, 2012

Did some hacking away using the Guava Cache libraries.  Pretty cool way to handle multiple requests hitting a Web Service at one time.  Will cover more of this in an expanded blog post later on.

        cache = CacheBuilder
                       .newBuilder()
                       .concurrencyLevel(4)
                       .maximumSize(MAX_SIZE)
                       .expireAfterWrite(10, TimeUnit.MINUTES)
                       .build(new CacheLoader="jobacknowledgement">() {
                               @Override
                               public JobAcknowledgement load(Integer jobId)
                                   throws Exception {
                                   return scheduleNewJob(jobId);
                               }
                         });

Monday, August 27, 2012

Programming Language Job Trends

Just a quick glance into what languages are in demand.  .Net and Java are clearly the mainstream, but Ruby is growing.


java, ruby, scala, clojure, .net Job Trends graph
java, ruby, scala, clojure, .net Job Trends Java jobs - Ruby jobs - Scala jobs - Clojure jobs - .NET jobs

As far a view on the growth increase in demand for the languages, Clojure is clearly winning with Scala and Ruby also growing.


Of course, I'm not looking into the JavaScript, HTML5, Mobile Platforms( iOS, Android), JavaScript which clearly dominate the job trends today.


Sunday, August 26, 2012

Long Live the Bazaar Model

In a recent ACM Queue article, Poul-Henning Kamp wisely named his article - "Quality happens only when someone is responsible for it".  But I am not convinced by his claim that the Bazaar model for software engineering is a failure and is the cause for increasing complexity and lack of quality in software.

Unfortunately, to debate this article would be difficult without having a way to measure or define quality.  Fortunately, the Bazaar Model and the Open Source community have given us great tools to inspect and measure weaknesses in our code.

Some of my favorites are -

Nemo - http://nemo.sonarsource.org/
Leverages static code analysis to inspect many of the popular OSS projects out there.

Ohloh - http://www.ohloh.net/
A community driven forum for evaluating OSS projects.

Unix has clearly moved past its adolescent days.  And large systems are certainly getting more complex. But I believe that this is an effect of software entropy and not whether the software was developed in the wild or in a large cathedral.

NASA - Pioneers in Innovation

NASA has been pioneering innovation since its inception.  They are clearly the leader in Open Source adoption - both consumption and production.  But nothing sums it up better than this statement from their final report on the International Space Apps Challenge -

"Innovation is bottom-up, decentralized and unpredictable. True innovation necessitates failure. The more you experiment, the more you fail, the more you learn. Small technologies and initial development deserve innovative process and the opportunity for failure."

http://open.nasa.gov/blog/2012/08/24/what-does-it-really-mean-to-innovate/

Saturday, August 25, 2012

Introduction to Katello Video

Here's a pretty good introduction to Katello from Vinny Valdez.  It's been a while since I played with Katello and its definitely looking pretty good.



Check it out.

StatusNet powered by OpenShift

I have done a couple of proof of concept projects using StatusNet as a Twitter-like service in support of conference type applications. 2 weeks ago I had decided to work on deploying StatusNet to OpenShift as a quick and easy public facing server.

Then @JasonBrooks published his work with StatusNet at github, and it seemed like a good time to combine efforts.  Through the power of Social Coding - we now have a quickstart for running StatusNet @Openshift.

Some things I learned in doing this that are worthing noting - 
  • ACTION_HOOKS - Whatever you can imagine in a BASH script is possible for scripting setups.  Different hooks apply for different phases of the Application Life Cycle.  Most of StatusNet was written in the deploy, but 
      • pre_build  
      • build
      • deploy
      • post_deploy
    • https://openshift.redhat.com/community/blogs/a-paas-that-runs-anything-http-getting-started-with-diy-applications-on-openshift 
  • ENV variables and SSH are your friends here when validating your install scripts
    • http://www.stylesen.org/shell_openshift_express_and_environment_variables
  • All content in the OPENSHIFT_REPO_DIR is replaced with each new commit
    • If you need to persist anything (i.e. the StatusNet config.php file), copy it to the OPENSHIFT_DATA_DIR
  • Creating and removing new Applications and adding cartridges is relatively quick, but rapidly adding and removing applications repeatedly seems to cause strange issues with DNS and Mysql servers.
    • This is not unexpected as DNS requests and MYSQL DB slices are asynchronous calls throughout the system, and it will take time for changes to be finalized.
So now its possible to host your own Twitter / Yammer like service on Red Hat's OpenShift PaaS.  All in under 5 minutes.  

Simply follow the instructions here :  https://github.com/jasonbrooks/statusnet-openshift-quickstart


Thursday, August 02, 2012

Software Craftsmanship Manifesto

Have you signed the Software Craftsmanship manifesto?


"
Manifesto for Software Craftsmanship:

As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value:

  • Not only working software, but also well-crafted software 
  • Not only responding to change, but also steadily adding value 
  • Not only individuals and interactions but also a community of professionals 
  • Not only customer collaboration but also productive partnerships 

That is, in pursuit of the items on the left we have found the items on the right to be indispensable.
"