My Top 4 Takeaways from NFJS 2013

August 19th, 2013 by Cecil Williams No comments »
**Android Development**
Google is working on Android Studio, which is built on the community edition of Intellij IDEA.  You can learn more and download the early access preview at http://android-developers.blogspot.com/2013/05/android-studio-ide-built-for-android.html.
A great book for Android development is “The Busy Coders Guide to Android Development” by Mark Murphy.  He uses an annual subscription model for the book and updates it regularly. He adds new material each month.  This way your book is never out of date. You can learn more at http://commonsware.com/Android/
It is possible to seed up the Android emulator!  Intel has developed the Hardware Accelerated Execution Manager (HAXM).  Selecting this as the emulator will drastically reduce the amount of time it takes to start the emulator.  You can learn more and download the HAXM at http://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager.
Would you like to view your physical Android device on your computer?  Well now you can using a program called Droid@Screen by Jens Riboe.  You can learn more at http://droid-at-screen.ribomation.com/.
**HTML5 Offline Applications**
The HTML5 specification supports client side storage so that applications can work in an offline mode.  All of the latest desktop and mobile browsers support HTML5 client side storage. To tell the browser that you application supports client side storage you have to add the “manifest” attribute to the html tag at the top of the document.  You can learn more at http://www.ibm.com/developerworks/library/wa-offlinehtml/.
**CoffeeScript**
After seeing CoffeeScript, I don’t think I will ever write JavaScript again.  CoffeeScript is to JavaScript what Groovy is to Java.  It provides a much simpler syntax than JavaScript by incorporating language features from Ruby and Python.  CoffeeScript compiles into pure JavaScript and is compatible with all JavaScript engines.  You can learn more at http://coffeescript.org/.
**Server Side JavaScript**
There is a JavaScript runtime engine called Node.js.  The authors designed it for building fast, scalable network applications.  Node.js allows you to try JavaScript without needing a browser, by running the Read-Evaluate-Print-Loop (REPL).
Node.js has a large ecosystem.  For example, there is NodeUnit and Buster.js for testing, Jade for tempting, Express for web applications, and Connect for middleware.  Even CoffeeScript will run inside Node.js.  This ecosystem is managed using the Node Packaged Modules (NPM) registry.
NodeUnit and Buster.js provide new ways to test JavaScript, either within a browser or Node.js.  This is important since jsUnit is not longer actively maintained.

One of the best software development conferences you can attend is the No Fluff Just Stuff (NFJS) conference. The conference  is small and the speakers are mostly consultants working in the field.  I attended my 9th NFJS conference this year, and as always, came away with some great information that I can use right away.  So here are my top 4 takeaways from NFJS 2013:

» Read more: My Top 4 Takeaways from NFJS 2013

Acceptance Testing presentation at Iowa Code Camp

July 15th, 2013 by Cecil Williams No comments »
I had the opportunity to present at the eleventh Iowa Code Camp on June 8, 2013.  The title of my presentation was “Easy Acceptance Testing.” The purpose of the presentation was to discuss an acceptance testing framework that Source Allies, Inc. developed for a client while working on a large scale web application.
I started the presentation with a discussion on the various types of software testing. Then I focused the discussion on acceptance testing.  I discussed some of the disadvantages and advantages of acceptance testing that I have observed.  I discussed some of the various tools available for acceptance testing like Cucumber, Fitnesse, and Selenium.  Finally, I demonstrated a generic version of the acceptance testing framework we developed for our client.  The demonstration was executed against a randomly selected website to show how easy it is to create acceptance tests for a web application using this framework.
The framework is written in Groovy and uses Selenium.  It takes advantage of some of the language features of Groovy such as Closures and Delegates to simplify the formation of test cases.  The test cases are defined in an XML format so that they can be easily changed.  The framework also supports nesting test cases inside other test cases.
The presentation slides and generic framework code is available for download on GitHub at http://github.com/cecilgwilliams/

I had the opportunity to present at the eleventh Iowa Code Camp on June 8, 2013.  The title of my presentation was “Easy Acceptance Testing.” The purpose of the presentation was to discuss an acceptance testing framework that Source Allies, Inc. developed for a client while working on a large scale web application.
» Read more: Acceptance Testing presentation at Iowa Code Camp

Agile Manifesto – Customer Collaboration Over Contract Negotiation

June 24th, 2013 by Cecil Williams No comments »

By: Cecil Williams & David Kessler

Do you ever wish that companies would trust their employees and business partners instead of insulating themselves with contracts and policies?  For many companies, each discipline operates out of its own department requiring other areas to document exactly what they want and what they are going to do.  This provides a means to assign blame when projects fail.  In stark contrast, Agile suggests that we should favor shared collaborative efforts over ridged, locked-in, contractual obligations.

NUnit Addins That Work With Resharper

June 20th, 2013 by David Kessler 2 comments »

If you’ve tried to create an NUnitAddin that works with Resharper you quickly found that it simply doesn’t work.  In fact, it’s been confirmed that Resharper does not currently support NUnit EventListener addins.  While this is true, I’ve found a work around that works very nicely.
» Read more: NUnit Addins That Work With Resharper

ThoughtWorks releases ebook on Agile Project Estimation

June 14th, 2013 by Cecil Williams No comments »

ThoughWorks Studios has released an ebook titled “How do you estimate on an Agile project?” where they explore common approaches and their adaptions from real-world projects.  The book is comprised of several authors, most notably Martin Fowler. In this ebook they discuss why teams estimate, different methods that teams use to estimate, and provide a couple of case studies.
» Read more: ThoughtWorks releases ebook on Agile Project Estimation

No Estimates?

June 14th, 2013 by Cecil Williams 2 comments »

Over the last year or so software development estimates have become a popular topic.  The popularity stems from the inherent fact that estimating software development is difficult.  Some people are writing about ways to improve your estimates while others are writing about how to manage software development without estimates.

» Read more: No Estimates?

Code Quality Metrics with Sonar, Part III: Sonar in a Ant-based Java Project

June 1st, 2013 by Akrem Saed 8 comments »

Now we will cover the fun stuff for which we’ve been waiting. In this post, I’ll go over how to setup Sonar for a Java project that utilizes Ant for its build.  I’ll go through the basic steps for installing and running a Sonar instance, and how to use a MySQL database for collecting metrics. Then I’ll go into some details around analyzing a Java project using Ant and Sonar. This involves writing Ant script, pointing to the source codes, analyzing the binaries, analyzing JUnit test cases, analyzing Ecl Emma coverage, etc.

» Read more: Code Quality Metrics with Sonar, Part III: Sonar in a Ant-based Java Project

Agile Manifesto – Working Software Over Comprehensive Documentation

May 17th, 2013 by Cecil Williams No comments »

Do you sometimes feel like your team spends more time documenting your system than building it?  One of the biggest hindrances to progress in a software project is documentation.  The Agile Manifesto prescribes that teams should value working software over comprehensive documentation.  It doesn’t mean that you should not create documentation; it means you should create documentation that provides value and at the same time does not hinder the team’s progress.

» Read more: Agile Manifesto – Working Software Over Comprehensive Documentation

Code Quality Metrics with Sonar, Part II: Overview of Sonar features

May 14th, 2013 by Akrem Saed No comments »

What we covered so far ?

In my previous post I covered the reasons why software quality metrics should be collected and why improvements to the code should be made based on those metrics. In this post I’ll be illustrating how Sonar can fulfill the job of collecting metrics and driving decisions.

Sonar goes beyond just collecting and displaying metrics:

  • Sonar can answer the following questions:
    • What are our most critical code quality issues?
    • Where is the highest concentration of code issues?
    • How many working hours will it take to fix the issues?
    • What does the metrics trend look like over the past year?
    • etc.
  • Sonar can be used to track work tickets assigned to team members.

In short, Sonar helps us analyze the situation, take actions, and quantify the improvement.

» Read more: Code Quality Metrics with Sonar, Part II: Overview of Sonar features

Using Git with Subversion

May 1st, 2013 by Cecil Williams No comments »

If you haven’t heard of Git or don’t understand why you should use it, checkout the talk given by the author to Google (Torvalds, 2007).  Git is an excellent version control tool for agile software development.  But many of us may not have the luxury of using Git because our company has deemed that we shall use Subversion.  Now Subversion is not a bad tool and has added some nice features in version 1.7.  But my preference is to use Git. » Read more: Using Git with Subversion