Monday, April 18, 2011

Software Development Posts of Interest - 18 April 2011

There have been numerous insightful blogs and articles on Java and other software development in recent days. I reference and summarize some of these in this post because I think they're worth a look.


Tips for Making a Developer's Life Easier

In the post Some tips to make a developer’s life easier, Bob Belderbos writes about "best practices of development" he has gained from "experience I gained building apps." He outlines six tips that I'd categorize as "general development tips" that apply to various types of software development.


Oracle Open Office and Oracle Cloud Office

Gavin Clarke's Ellison's Oracle washes hands of OpenOffice is interesting for a variety of reasons. An obvious reason for reading this post is provided in the first sentence: "Oracle is turning OpenOffice into a purely community project, and no longer plans to offer a commercial version of the collaboration suite loved by many." Another point of interest is Clarke's mention of the seeming abandonment of Oracle Cloud Office. Finally, Clark's statement about JavaFX is interesting:
Among the ideas Oracle had lined up for OpenOffice under its control: a call to rewrite it using the closed-source JavaFX language for interface development that nobody cares about but Oracle.


To Do or Not To Do for a New JVM Language

Sven Efftinge addresses those thinking about designing JVM languages in a post called Dear Java Killers and discusses "seven most important Dos and Don'ts you should consider when developing a language for the Java community". As is often the case with the best blog posts, the feedback comments add significantly to the discussion.


Ceylon

Gavin King's "Introducing the Ceylon Project" presentation was highlighted in Marc Richard's post Gavin King unveils Red Hat's Java killer: The Ceylon Project. Richard analyzes what he likes about what he has seen related to Ceylon. Ceylon has already been the subject of significant discussion.

In the post The rationale for Ceylon, Red Hat's new programming language, Ryan Paul examines the reasons for King and Redhat to pursue a successor to Java. He also points out that many in the Scala community wonder why they don't simply use Scala instead of developing yet another new language for the JVM.

Gavin King has commented on the surging interest in Ceylon in the posts Ceylon and Ceylon presentation: a clarification. He also answers questions about Ceylon in Alex Blewitt's interview post Ceylon JVM Language.

Several in the Scala community seem at least a little put off by the idea of Redhat working on a new JVM language instead of using Scala. An example is the post Ceylon: Interesting for the Wrong Reasons. Post author Lachlan O'Dea argues that he'd be likely to pick Ceylon over Java, he thinks Scala is superior to what Ceylon will offer. Toward the end of his post, he states:
You may wonder, "if you think Scala is so good, then use it and be happy, why worry about Ceylon?" Well, I worry because I think Ceylon is worse than Scala, but it could win anyway. That actually seems to be the more common outcome in these situations. I would much prefer a world with Scala jobs in demand than one with Ceylon jobs in demand. So, yes, it’s all about me being selfish. I would say to all Scala fans: don’t be afraid to be a little selfish and evangelise for the better outcome.

I'm not the only one who has noted that the Scala enthusiasts seem more concerned about Ceylon than they have been about other alternative JVM languages that have come about since Scala. The only reasonable explanations for this different reaction must have to do with the major player involved with Ceylon (Redhat).


Devops

The term "devops" has started gaining some traction recently. I ran across two posts this week that provide nice introductory overviews of the "devops" concept. In What Is This Devops Thing, Anyway?, Stephen Nelson-Smith (guest blogging on Patrick Debois's blog) describes the devops movement as a "multi-disciplinary approach" and states:
The Devops movement is built around a group of people who believe that the application of a combination of appropriate technology and attitude can revolutionize the world of software development and delivery. The demographic seems to be experienced, talented 30-something sysadmin coders with a clear understanding that writing software is about making money and shipping product.

Nelson-Smith also focuses on the idea of "sysadmin coders" and states that the concept is an acknowledgement that "there is no one IT skill that is more useful or more powerful than another." He adds, "To solve problems well you need all the skills. When you build teams around people who can be developers, testers, and sysadmins, you build remarkable teams."

Dan Ackerson's post DevOps Entrenched – Tide Begins to Turn references a description of devops stating that devops helps "improve cooperation between developers and sysadmins." The concepts of devops may be best summarized in a sentence in this post: "Developers and Sysadmins are joining forces and forming 'Delivery Teams' – working together to ship high quality products to customers faster than ever."


JVM Interaction via File Locking and Groovy

Brock Heinz's blog is named in Groovy closure style as "thoughts.each { println it }". His post Inter JVM Communication demonstrates using Groovy in conjunction with Groovy GDK's version of java.net.Socket to determine if two instances of the same application are running. Kovica left a comment stating that use of FileChannel would be effective for this situation and pointing to Kovica's post on that very subject. I took concepts from both to come up with this marriage of Groovy and FileChannel use:

#!/usr/bin/env groovy
def timeoutMs = args ? args[0] as Integer : 10000
def lockFile = new File("dustin.lock")
def fileChannel = new RandomAccessFile(lockFile, "rw").getChannel()
def fileLock = fileChannel.tryLock()
if (fileLock)  // non-null (Groovy Truth) means not locked by another instance
{
   println "Busy working ..."
   Thread.sleep(timeoutMs)
}
else
{
   println "This application is already running!"
}

The following snapshot shows how the lock works when the script is run separately and nearly at the same time.



Conclusion

In this post, I referenced and briefly summarized posts that I found to be particularly interesting in recent days. I am especially interested to see what the future holds for Ceylon and for the devops movement.

1 comment:

Bob said...

thanks for mentioning my post