BA: User Experience Practices, part 2 of 2

Wednesday, October 19, 2011 by Aaron Whittenberger

As a Business Analyst (BA) we are often asked to help design a new user interface and the supporting application to perform a required function in the Enterprise Resource Planning (ERP) system. If you are talking about a web interface you may work with a graphic designer, or perhaps not. You go off with your business application development design team and create a mock-up of the interface and write a design specification describing how it is to be built.  Often the business is not represented on the design team. The design team may pass the mock-up and design specification by a business Subject Matter Expert (SME) before attempting to get it approved; but then they are often approved by a business manager without ever being seen by the end-users that will actually use the new application. Often, features and function are primary concerns when the design is being created. What if we change focus of our design team?

 

Last time we took a look at the first of two main concepts that of User Experiences Practices—Personas. I hope you are able to see the power that Personas can have for an enterprise application development team. Let’s now take a look at the second concept—Usability testing.

 

As I noted often an application with a new user interface, or changes to user interfaces are often put into place without the end users ever seeing the interface, or changes to the interface. This can lead to the users not liking or using the interface.   This outcome can be changed by conducting some Usability Testing during the design of the interface or changes to an interface.

 

Usability Test ResultsUsability Testing is done by selecting three to five persons from the user community, usually from the primary or secondary user group of the user interface, and have them test a mockup of the interface. No more than five users are necessary for usability testing as you will receive decreasing benefits from additional users. Also, you may have to run more than one round of usability testing. Take the results of the first round that suggest changes are needed, make those changes to the mockup and run another round of usability testing with different three to five users.

 

The idea of Usability Testing is to create an interface that is intuitive for the users to use. So you will create a mockup of the interface, it does not have to be functional a paper mockup will do. Just so the users get an idea of what the interface will look like. You will also create user scenarios to have user perform tasks using the interface. Show them the interface and ask them to do the tasks. Do not give them hints or tell them how to do the tasks, you wish to see how intuitive the use of the interface is. If they take a long time to figure out how to do the task or have questions on how to use the interface then the interface needs designed to be easier for the user to use.

 

Using the two concepts of User Experience Practices will help your application development teams design more user friendly interfaces. Are you ready to design for user experience?

BA: User Experience Practices, part 1 of 2

Monday, September 26, 2011 by Aaron Whittenberger

Persona MapAs a Business Analyst (BA) we are often asked to help design a new user interface and the supporting application to perform a required function in the Enterprise Resource Planning (ERP) system. If you are talking about a web interface you may work with a graphic designer, or perhaps not.  You go off with your business application development design team and create a mock-up of the interface and write a design specification describing how it is to be built. Often the business is not represented on the design team. The design team may pass the mock-up and design specification by a business Subject Matter Expert (SME) before attempting to get it approved; but then they are often approved by a business manager without ever being seen by the end-users that will actually use the new application. Often, features and function are primary concerns when the design is being created. What if we change focus of our design team?

 

I would like to introduce two concepts to which I have been recently introduced—Personas and Usability Testing. These two concepts are the main concepts of User Experience Practices. The purpose of User Experience Practices is to change the focus of the design team from features and function to the users the new application is to serve and usability of the application. Have you ever rolled out a new application and user interface to find out that the users hated it or even worse refused to use it? Have you heard of times new applications were rolled out but they did not make the user’s job easier or save them time or have any added benefit to the organization? Designing for User Experience would have changed those outcomes. Let’s look at these two components and see how they are used.

 

A Persona is an artifact (written document) that consists of a narrative relating to a specific user group. It should include a picture and an abstract name that you can live with.  So don’t name your Persona Mickey Mouse, name it Stan, Ned, Alain, or Liza instead. You don’t name them after actual people in the organization but use an abstract name that represents a group of people. Say you are a BA working with a design team that has been charged with designing a new Order Entry system. So what user groups (customers) is your new application going to serve—Order Entry/Customer Service clerks. Yes, the company has six manufacturing locations with at least two Order Entry clerks in each location; the larger facilities have as many as eight Order Entry clerks. So what Personas do you have—one local Order Entry Clerk, let’s name her Emily and she represents eight order entry clerks. In some instances you may find it necessary to have two Personas to represent this one group. The remote site Order Entry clerks will be represented by one or more personas. Who else—what about Sales Representatives that can enter orders as well. The Company has 16 Sales Representatives; 13 of which enter orders on a weekly basis, one who will enter an order or two every month and two who never enter orders. Sounds like three more personas, maybe more. Not considering reports that Sales or Upper Management will want out of the system, as these are often pulled out of the database after the Order has been entered; what about Inventory Management/Purchasing. If an Order Entry clerk enters an order that uses any extraordinary large amount of a raw material if Purchasing is not aware of it until tomorrow’s report comes out, in a day or two the manufacturing plant may be out of that raw material. Therefore, my Order Entry system must send an “alert” message to Purchasing for extremely large orders so that they can account for that material used and keep the manufacturing plant working. How about external customers who have to get the order to our company, they have to call the Customer Service Representative (CSR), how long do they have to stay on the phone with the CSR to get the order in. What if the customer sends their order in via EDI; so an IT persona is needed. Fax, email, XML file—all acceptable ways of receiving a customer’s order; these are often handled by a CSR or IT, but we may want to build an automatic process to enter these customer orders. These methods of order entry need to be specified on the external customer, CSR and IT personas.

 

The Persona Map—now that you have written all your personas, we need to focus on the important people that our new interface and application will be used to support. So take a very large cardboard poster and draw a target (bulls-eye). In the very center will be our Primary Persona. The one most affected by our new interface, probably the CSR/Order Entry clerks; but you can only have one, so we select Emily. In the inner ring of the target you can place two to three Secondary Personas. In our example, this most likely will be other local CSRs and remote CSRs.   In the outer ring of the target you can place three to four Tributary Personas. For our example, possibly Sales Representatives Personas and possibly IT personas. Now this Persona Map should be hung in the room where the design team will work, or if necessary duplicated and given to every design team member. Now we have changed the focus of the design team from features and function to the people who will use the new interface and application.

 

This is the first step of designing for User Experience. In my next post we shall explore the second step—Usability Testing. Even without knowing about Usability Testing, can you see the power that Personas can have?

The Great Ubuntu Experiment

Friday, October 29, 2010 by Matt Warman

I recently blogged about our move to virtualized desktops. Well the saying that being a pioneer means getting arrows in your back is not entirely true! I have taken the plunge and have swapped out my work PC of 5 years to run Ubuntu. If you are a hard core Linux application development person, this post may be familiar, but as long time Windows user I was cautiously optimistic. Disclaimer, I have been a long time proponent of open source software and a fan “from afar” when it comes to the Linux desktop. I have used Linux and UNIX systems in the past, so the terminal learning curve was slight. This really isn't about the terminal, but all about the desktop, and how productive I can be. For the Windows based application development people and management unaware of Ubuntu, the desktop has a clean, simple feel, similar to Windows, but easier to manage. Instead of on desktop, I have four by default, so I can different applications in different spaces. What you know as the system bar is now a small strip at the top. Your chat and email notifications are in the upper right hand corner. This actually catches my eye better, Instead of a start button, the applications are in the upper hand corner. Linux applications have package information, so they can be grouped into categories. This makes finding specific programs much easier than Windows. I don't have to periodically go through the start reorganize anymore. I personally like a clean desktop, but for those of you who want shortcuts, you can do it in Ubuntu. Some applications can be found in the Ubuntu software center, a library of Linux packages. There are hundreds of apps to choose from, each within a category. You can search for specific titles too. All of the major technical applications have Linux versions, and I had no time finding and installing MySQL, Netbeans, and the VMware player. Ubuntu comes with Open Office 3.2, and Firefox 3.6, so I can surf and and open my Word document with ease. It found our work network, so I had access to all of our files. I have Wine, the Windows emulator installed, but I don't have any Windows applications running. Really, if I need that, I can use a Windows VM. As for the productivity, well my Windows application friends you'd be jealous. It takes 20 seconds from pushing the button to start to actually doing something on the desktop. It used to take 5 minutes. I had to change my routine, as I could start my machine and get some water downstairs before I could do work. My boss saw me open the Domino client in 10 seconds, down from the minute plus, and even he was impressed. I get updates daily, but I usually don't have to restart the system. Shutdown takes 5 seconds instead 2 ½ minutes. It's been 2 weeks since I switched, and I haven't missed Windows at all!

The Virtual Desktop

Friday, September 24, 2010 by Matt Warman

I know some of my application development colleagues my say “heard it”, but a virtual desktop is cool! We are currently running Windows XP as our company standard. We moved our 9 physical servers running Windows 2000 on ancient (and failing hardware) about 2 years ago. Most of our clients are currently on XP, but some are looking into moving to Windows 7, and one is going to Vista. When my application development friends stop laughing, they are doing this because they have certified their testing with Vista, and they will have to re-certify with Windows 7. They want to move to Vista now, and move again in a year or two.
We can just follow the Windows upgrade path, but given the success of virtualizing our servers, my boss gave me the green light to review our desktop strategy. Some application development and management people would say why? Well it gives us flexibility in what we can do. If we just move to Windows 7, and our clients are still on XP, then we are too ahead of the curve in terms of support. We do have some XP only development tools, so why not just keep them on their OS? With a virtualized desktop, we can run any OS we want. If our clients want us to run specialized software, we can set up an OS just for that client. The other big change is that we are using Ubuntu 10.4 as our host operating System. This is to reduce the memory requirements, but it has other great side effects. Our consultants can learn (at least the basics) of a new OS! If they are under constraints, they can fire up their Windows VM and get to work, or they can do the basic stuff (surfing, checking email) on Ubuntu. In time they can learn how to install packages and other tasks without disrupting productivity. The can even use Windows 7 and learn it too. The best side effect (for management anyway) is that we can still get a lot of mileage out of our 5-7 year old laptops. Our laptops have 2 gigs of RAM, so even if we went pure Windows 7, we would have a performance hit, especially when you fire up an IDE like Eclipse! The more I play with Ubuntu, the more I like it. I will probably use it as my main OS, but others can use XP, Vista, Windows7, or whatever we can virtualize. Choice is a great thing!

Youtube Versus Viacom

Wednesday, June 2, 2010 by Matt Warman

For those of you not following geek things, there is a lawsuit going on between Youtube (owned by Google), and Viacom (CBS, Daily Show, Colbert Report). Viacom is angry that some of their content was posted on Youtube. Apparently, there was 63,000 separate items on Youtube that were copyrighted by Viacom. Viacom has been supported with a “Friend of the Court” brief by NBC, BMI, and ASCAP (Basically the RIAA). Google has similar briefs by EBay, Facebook, Amazon, and Yahoo. How does this court case affect me as an application development person? Well, it could determine your web application development. There are many interesting issues here: fair use, piracy, site owner responsibility. The key issue here is for the very soul of the Internet. As you probably know, the Internet was created to share information amongst researchers around the globe. This communications device allows us to share voice, text, audio, and video. This makes it easy to share ideas, even if those ideas weren’t ours. A part of that communication is the same kind “water cooler” talk that everybody has done for years. “Did you see what that talk show guy said last night”? The only difference is now you can post it. This song expresses how I feel, and I have added some pictures to show how it has affected my life.
The media outlets want the site owners to control the content on their site. They claim that Youtube is a content provider, and thus are “stealing” their content for gain. This would be analogous to suing the U.S. mail for getting a threatening letter. We have fair use,  so any signal sent through the airwaves is free for anyone take and use. This meant that anyone who broadcasted, the content could be consumed by anyone. The content providers made money by placing advertisements in the content. Since that time, content providers have been using congress to side step these boundaries by changing the length of copyright, putting "digital" rights on formerly analog content, and pushing for laws that allow content to be controlled by the provider. The large media companies ignored the Internet because there wasn’t any correlation to their business. When companies like Google started to compete for the same advertising dollars, the large media outlets saw the Internet as a threat to their business model, and are now looking to destroy it.
No one is trying to deny content providers money. It was agreed long ago that your work was yours, but eventually it would be owned by the public. That changed when media companies are entirely built upon their own content (just look Mickey Mouse at Disney). Do people take content that doesn’t belong to them? Yes. Are people just posting items broadcasted to make their point, or to inform? Yes. We have to decide as a society whether the Internet is place to allow copyrighted material as a form of communication. NBC found it distasteful that their shows were on Youtube. That’s why they created Hulu.

What do you want the Internet to be, a free (as in liberty) communication device, or a pay-per-view broadcast medium?

 

Getting Some REST

Monday, April 19, 2010 by Matt Warman

After playing with JPA, I realized that I really don't want to directly hit the database from the client, because that would mean opening up the database port to potential attackers. JPA is really great, but either you hit the database locally, you hit the database directly from a remote location, or you access the database through a connection pool. JNDI is the best way to access a server resource, but it needs to be in a server container. I could not find a way to call JPA using a JNDI context from the client. All database servers have some mechanism to accept multiple connections. But besides the obvious security issue, I already have an application server and connection pool. I should let the connection pool do the work, and figure out plan B.

I reviewed all of my options. I am lucky because I can use the latest and greatest since this is all new. I am using Java 1.6, so I can use EE5 or EE6. Most application development people know that EJB has had a history of being complex, and at times, unwieldy. I could call JPA via servlet, but I was concerned about performance. I decided to use RESTful web services to push data to my JavaFX application. Using REST in JavaFX is quite easy, because the 1.2 specification has a HTTP request object. That means I can write all of my access and utility objects in JavaFX, instead of accessing a class library externally. The big drawback I have thus far is that all of the related objects are another link, and another call to a REST resource. For example, if you look up a specific Customer Record using REST, you will get the details in XML or JSON. To get the collection of Orders related to the Customer, the XML returns a link. You must make another call to get another XML/JSON to parse the related information. The parsing process would not be to big of a deal, except that everything is done asynchronously. I have a Table A object where one of the fields would be a collection of Table B objects. The Table B object contains a collection of Table C objects. In JPA, all of the related collection objects are there and ready for me. Since REST is asynchronous, It makes it very difficult to set up a Table A row object, because Table B is a separate call which will start and finish without Table A's call knowing anything about it. For my database application development people, the key is to de-normalize your relationships. Since this is a big departure to my original schema, I decided to create a whole new database in case I wanted to go back to JPA. After some trial and error, I have a way to asynchronously access and display REST resources in a JavaFX application. I now have to work on writing that data.


IT Skills in Demand for 2010

Wednesday, April 7, 2010 by Aaron Whittenberger
The Job Search website Dice.com recently released the top 20 IT Skills in demand in Today’s Market.  They also show the percentage increase in demand for that skill over March of 2009.  The list consists of:

1.  Informatica (database) 71%
2.  Virtualization 70%
3.  ETL (Extract, Transform and Load) 57%
4.  Python (web programming) 57%
5.  Service-Oriented Architecture (SOA) 55%
6.  Sybase (database) 52%
7.  WebLogic (application server) 50%
8.  SOAP (web programming) 48%
9.  Data Warehouse 47%
10.  SharePoint 41%
11.  MySQL (database) 40%
12.  E-commerce 39%
13.  JavaScript (web programming) 36%
14.  VMWare (virtualization) 36%
15.  CSS (web design) 36%
16.  Business Analysis 35%
17.  ITIL 34%
18.  Ajax 34%
19.  Perl (web programming) 33%
20.  Business Intelligence 33%

As you can see from the list Database, Virtualization and Web programming are still IT staffing skills very much in demand, as they have been these past few years.  The one IT staffing skill that I noticed that no longer makes the list is IT Infrastructure (Network Administrators, Network Engineer).

Everything Old Is New Again

Monday, March 8, 2010 by Matt Warman

This post may shock you... the Java Rocker is going to talk about legacy iSeries and AS/400! Before you panic, and call it the end of the world, let me continue. This post is about running all of the cool new Web 2.0 things on your IBM hardware. Really! Even in Cincinnati! Many people, (myself included) thought the old IBM hardware was only for RPG and COBOL (shudders). It turns out that IBM has been adding functionality to run Linux on the box. That means Wikis, Ecommerce, blogs, and web applications are now there for iSeries-AS/400 people. The catch is that your iSeries needs to be up to date, which sadly for most organizations is not. My IT consulting colleagues at STAR BASE are good with taking your tired old hardware and doing the maintenance necessary for the modernization piece. They get your hardware and software cleaned up and ready, so I can help you with all of the cool new application development projects that I have been talking about.

Packaging Fun

Thursday, March 4, 2010 by Matt Warman
You probably noticed that I haven't written anything lately. I was dealing with a head pounding issue with my JPA/JavaFX application (yes, it's still awesome!). When using NetBeans to create a JavaFX application, it creates JNLP files, a JavaFX JAR file, and a default HTML page to run in the browser.  This is a great way to run standalone or on a browser within NetBeans, but the packaging is not so great when you want deploy it to an application server like Glassfish. I had problems using the command line to WAR up those files, so I created a web application project, and moved the files mentioned above in the Web Pages directory. As any web application development guy will tell you, any libraries used should go in the WEB-INF/lib directory. Since I am using JPA (I put my entity and controller classes in a JAR), I added the JAR file and deployed..  no dice. The application deployed, and was trying to run (no 404s, etc.). The error message was that the JNLP file was throwing a null pointer exception. After checking for the proper JPA/JNLP/Server configurations online, everything was in order. Fun note: when looking for some JPA help, my own post showed up. I finally found the error message (pressing "5" in the Java console) and found that it wasn't loading the JPA classes! Wait it's in the proper directory! It works standalone! after some therapeutic primal screaming, I refocused and looked at the structure. The JavaFX files are in a Jar file, and the manifest file has the classpath for the JPA files. The JAR file is a part of a WAR file, so it's a zipped file inside of a zipped file. The fix is to add the "lib" directory of the JavaFX project (it is added to dist directory if you are using NetBeans) to same directory as the JavaFX JAR file. Your web application will not need the JPA files in the library.

How to Get the Financing You Need

Monday, February 8, 2010 by Aaron Whittenberger
Any good Business Analyst will tell you that IT and business speak in different languages.  Good CIOs and IT Infrastructure Management know that CFOs have a language all their own.  “That being said, it is the money people who generally stand in the way of engineers and technologists and the spending required to accomplish great things with IT.”, according to an CTOEdge article.  CIOs generally don’t speak in the language of the CFO when making spending requests, so we walk away feeling that they “just don’t get it”.  Here are 10 areas where we, as the promoters of IT, can begin to communicate better with the CFO.

1.  Think TCO, not ROI

To the CFO, return on investment is how much money you’re going to give back to the company. Let’s face it. Most IT projects — no matter how compelling — don’t bring “return” to the organization like an additional sales person, a new marketing campaign, or a new product launch.  Preach total cost of ownership (TCO); repeat it until you are blue in the face.  Whether business application development, web application development, IT infrastructure investment; you can demonstrate “fiscal stewardship” through cost reduction or increasing customer satisfaction and loyalty.

2.  Cloud Computing

CFOs like what they hear about cloud computing as a cost saver. Don’t fight them on it.

3.  Green IT

Are you surprised when the CFO is not willing to pay a premium to keep the environment cleaner?  The reality is that no green projects exist unless they have a better TCO.  So whether to upgrade your IT infrastructure, better IT infrastructure cooling, or saving space for your IT infrastructure you can build a strong business case of the decreased TCO and community relations intangibles of being an “environmentally conscious” firm.

4, 5 and 6.  Virtualize, Virtualize and VIRTUALIZE

“This subject takes up three spots because there are three key virtualization targets -- servers, desktop and storage. But again, the key here is how to justify and how now NOT to justify.”  Again build your TCO case for virtualization, but be realistic in your cost savings estimates.  Many times virtualization projects are viewed as unsuccessful because they did not meet the upfront cost estimates.  Be sure to include high traffic times such as end-of-month close periods.

7.  Adopt IT-Centric Business Continuity

Over the years responsibility for business continuity have been put on IT management.  This needs to change.  Organizations need to understand that there are three phases to a business continuity plan; event response, disaster recovery and business continuity.  With the financial impact on the organization of disaster recovery and business continuity, business management must be involved and responsible for these areas.  It should not be IT management’s responsibility to determine which business units are most important.

8.  Align with the Big Picture

Along with TCO, build your requests showing how the request aligns with the business objectives and goals of the organization.

9.  Proactive Cost Reduction

Boy does that sound like another way to say TCO to you?  Take a proactive stance on reducing cost.  The article showed how to reduce cost of document retention.

10.  Reduce Data Center Costs

The organization’s data center is usually the center of the IT infrastructure, both in physical space and cost.  Just as in application software development, modular building of a data center can cut cost of the IT infrastructure through avoiding construction cost, reduced cooling cost and reduced capital expenditures.

“While the relationship between CFO and CIO can sometimes have more debits than credits, it is definitely worth the investment in time and effort to highlight IT projects in terms the CFO will understand.”

Deploying JavaFX on Glassfish and Facebook

Thursday, January 21, 2010 by Matt Warman

First, sorry for the tardiness of my posts. Between the holidays, coming back from the holidays, a cold, and a secret project (for now), I haven't had time to blog.. until now. My current focus has been a Facebook game application. Well it's still in the alpha phase, but I wanted to get the architecture up and running. There's nothing worse for an application development person than to finish your application, then find out you need to rewrite it (or worse) because of the architecture doesn't support it. Even without Zembly, setting up a Facebook application is pretty easy. Since I had most of the defaults already in, the only thing I need to do is to tell Facebook where my application resides. Since I don't have Zembly anymore, I have to put on my application development and network administrator hats on set up an application server.
My first test was to deploy the application into my local Tomcat. NetBeans does a great job of having the files available to you, but the thing you learn quickly is that there isn't a simple deployment piece. Tomcat needs a WAR file, so I tried to use the JAR command to WAR up the files in the dist folder. No dice. The war file needs a proper web.xml file to work properly. Rather than use workarounds on workarounds, I created a web application project in NetBeans, linked the jar file from my JavaFX project, and copied the JNLP and HTML files to my new project. I now have a WAR to deploy. Tomcat loves this file. I run and... “FILE NOT FOUND?” was heard all throughout Cincinnati. Your JNLP file that was created points to a servlet called internally by NetBeans. Make sure change the following lines:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://your server.com/app path/" href="SBWarsTest_browser.jnlp">
<information>
<title>SBWarsTest</title>
<vendor>STAR BASE </vendor>
<homepage href="http://your server.com/app path/"/>

Once I made the change to localhost, everything was fine. Now I wanted a real application server, so I downloaded and installed Glassfish V.2.1 on one of our servers, changed the JNLP file and we are in business. I tried to hit it from my machine, and no dice. After some extensive research, I found out the the Java 7 EA JRE does not play well with JavaFX. I uninstalled it (which reverted to JRE 1.6.18), and it works. In Facebook, you need to set the canvas callback URL to your host application path. The result is the pretty picture you see at the top of my post.

Open-source Security A Major Concern for 2010

Friday, January 15, 2010 by Aaron Whittenberger

According to ComputerWorld, web application development remains top dog by far in the top IT skills to have in 2010.  Specifically, companies will look for developers with knowledge of .Net, Java, Web development, open source and portal technologies.  The article goes on to suggest that combining web application development skills with business analysis or project management skills is a big plus.  ComputerWorld lists the remaining skills to have for 2010 in its top six as:  Help Desk/Technical Support, Networking, Project Management, Security and Business Intelligence.

I feel ComputerWorld did not put enough emphasis on Security; this without doubt will be the biggest challenge for IT executives in the coming years.  Open-source software may be an innovative money saver, but IT professionals still have concerns that networks could be vulnerable to viruses, cyberattacks and other intrusions.

According to InfoWorld, a new survey from Forrester Research found that 58 percent of large companies have security concerns about open source. In addition, 57 percent of small and mid-sized businesses expressed concern that open-source software would be "complex and hard to adopt".

With the advent and increasing usage of open-source in the business world, expect to see demand for IT security related skills to grow.  According to the FLOSS 2020 roadmap presented at the Open World Forum in Paris, 40 percent of jobs will be related in some way to open source by 2020.  You can expect application development and security to comprise a great majority of these jobs.
 

IBM, Java, and the Community

Thursday, November 5, 2009 by Matt Warman

I recently read an article about the state of the IBM “i” and the amount of complaining by IBM application development and business partner folk. I know several RPG application development folk, and it sounds familiar. That made me think about my Java Application development and career. Are there things to complain about, and uncertainty about the future? Yes, but there are 2 reasons why the Java community is in a better place; the business model and the community. Before the IBMers call for a holy war, I said COMMUNITY! I am not talking about the strengths or weaknesses of the hardware or software. The business model for IBM is that they make the hardware and software, and partner for the sales and service. I think that is a viable model until IBM competes in the sales and services with their partners. If a lead is brought in by a small partner, they are awarded by giving the business to someone bigger. This sets up a confrontational relationship between IBM, the big partners, and the little partners. IBM can also decide whether or not you are worthy to be a partner. Why does this affect the software application development team? Because most consulting firm are selling SERVICES not HARDWARE. If they are not seeing business because of political fighting, they don't have to sell it. There are viable options on other platforms, where interference does not happen. IBM never fostered a community, they created a hierarchy with themselves as the head.

Certainly Sun has done some things that made myself and others unhappy. Besides, complaining, we actively pushed to remove barriers in our path. We do have an open source Java. Is there a IBM community that can work with RPG to make it work for them? I also think its about scale and timing. It's not like IBM software developers have their own AS/400 at their home. It's easy for me to create and use nearly any kind of application at my home in Cincinnati, and pretty cheaply. It makes it fun to tell non-technical people about my application development. Nobody but accountants want to hear about accounting programs. Java, and newer languages have grown up with the Internet. I have friends from all over the globe that have similar interests. If I have a problem, I can go online to a forum, friend, or web page to find what I need. I can read and write blogs to voice my opinion (like now). These things are not ingrained in the Legacy community, and in fact, have been actively campaigned against. It is my belief that any software, hardware, or service will die when there is no vocal community to support it.

Working with Magento

Wednesday, October 21, 2009 by Matt Warman

People outside of Cincinnati may be shocked to know that I work with languages OUTSIDE of Java! I don't know any application development person, especially one who does web application development who doesn't use several languages. I have recently been working on Magento. What is that you say? Magento is an Open Source PHP ECommerce application based on the Zend Framework. You don't need to download Zend, just the Magento PHP files. We actually have Magento internally setup with a LAMP package, but I already have MySQL and Apache on my local machine, so I thought I'd tackle and individual install. The verdict? Well after a couple of small hiccups (don't use the Windows install for PHP, just unzip, and localhost needs to be a virtual host), setup was a breeze!  Fortunately, STAR BASE, Inc. has enough experience to over come these issues.  Magento is easy to customize products and catalogs, and would be a good choice for organizations to create their own ECommerce site. Magento is easy enough to implement without an IT Consultant, but an experienced consultant can save you time and frustration.


Using Zembly

Wednesday, September 30, 2009 by Matt Warman
I am working in the Cincinnati office writing an application using Zembly. Zembly makes it easy to write applications because the authorization/infrastructre piece is handled for you. As any application development person will tell you, connecting to a new or different system can take up time needed for solving the problem. Especially for systems that you don't control. I always make sure I can connect to a system before even writing the application. Zembly takes care of this for you by using a keychain metaphor. For example, once you have set up development for your application. you can store your application public/private keys in the Zembly keychain. Your application development team can go through Zembly to connect directly to your application. Without Zembly, you have to lookup and pass session keys. While not difficult, finding the right calls isn't apparent. This is especially the case for Web Services. I can use Zembly to call Web Services from Flikr, Google, Amazon and others. Once I setup the keys, the authorization piece is abstracted leaving your application development team to solve the problem, and having time to add additional features. You can use the Zembly service by downloading the z4cl jars from Zembly, or using the integrated jars in NetBeans. Netbeans not only has the jars, but allows you to search for and filter Web Services. Once found, you can drag and drop the service into your application, and replace the default information as needed. Your application development team can be much more productive using Zembly, giving them time solve and enhance the problem at hand.

NetBeans, Zembly, and Facebook

Friday, September 18, 2009 by Matt Warman
No, this isn’t a Cincinnati law firm, it’s my latest project. While at JavaOne this year, I took a lab on using Zembly. The lab was very interesting, and somewhat chaotic, but they gave me a book on Zembly. For those application development guys who don’t know, Zembly is a framework that allows developers to deploy their applications to social networks like Facebook, twitter, or Orkut.  I brought this idea up to my boss, who was interested in what we could do. I decided to create a simple questionnaire on our IT Wellness Check service. I know you can create simple questionnaires in Facebook, but I wanted a more polished look than black text on a white background. I wrote the app in JavaFX, because of the gradients and effects that are available to me.  Netbeans not only has JavaFx application development, it also has the facebook API integrated. I did check on the Internet that I can use JavaFX with Zembly, and you can. Once complete, I brought up the Zembly site.  I created a widget in Zembly, and after a couple of missteps, I got my questionnaire working in Zembly. On to the Facebook integration! Zembly makes all of the particulars of integration painless, but there are scant details on the web. Fortunately, I had my book from JavaOne, and there were step by step details on integration. I now have an application on Facebook! Don’t look for it yet, because the application itself was just a test. Once polished, we will have it out there. I am going to finish phase one of JFretsFX, and put that out on Facebook too.

Never Stop Learning

Friday, August 21, 2009 by Matt Warman

I am finishing up with my client in Cincinnati. I am trying to clean up code from the vendor, when an interesting error occurred. That’s when I decided to poke around and look at some place for better coding practices. As any Java software development person knows, "Effective Java" is about the best book there is on Java. It’s a must have book. On The web, I have found this site that has some great coding practices. Technology, and specifically Java, is a fast moving animal. What was valid 5 years ago, may not apply, or even exist, now. Searching the Internet is great for information, but you have to be careful too. I try to avoid any article written before 2006, unless it directly applies to the subject matter. Take string concatenation for example, common wisdom says to not use the "+" for concatenation. Use a StringBuilder object. If you are on 1.4.2, you don’t have that object, you have StringBuffer. Well performance wise, which works best, and what kind of performance hit do you get? The only real way to tell is to write your own test class, and call JavaP. JavaP allows you to see the byte code operations. Sometimes you may have only a few operations which would be unnoticed by your users. If repeated often enough though, you could have a real performance problem.
I have noticed that many application development people, and really all people, find a fact that they have read, and use it in their daily job. Facts, like technology change, and the best way to know is to prove it yourself. I have come to write little test classes to work out code I haven’t done before. That way I can understand just what is going on before I introduce it into my application. I have been applying that same concept to accepted performance practices. Profiling applications is also a great way to "see" what your code is doing. The best thing for application development members to do is never assume anyting works as planned, and never stop learning.

Is the IIBA Buckling Down Too Hard?

Tuesday, August 4, 2009 by Aaron Whittenberger
I have return.....from my eight month siesta.  No, I have not been in Mexico; so I can guarantee that I do not have the swine flu.  Although Mexico is on my bucket list, I don't believe now is a great time to visit.  I am back and still on my soap box.  What has gotten me back on my soap box are some recent articles and blogs I have read complaining that the International Institute for Business Analysis ® has made the application and recertification process for their Certified Business Analyst Professional (CBAP)® certification too stringent.

I have been and continue to be a strong proponent for IT certifications.  Even since I obtained my CBAP® certification last year the application process has changed.  The exam itself is now based on version 2.0 of the Business Analysis Body of Knowledge (BABOK)®.

I have heard that CBAP® applicants are rejected due to the IIBA® reducing their documented hours for tasks or deliverables that do not qualify as business analysis work.  Such reduction of hours left them short of the 7,500 hour requirement.  Some applicants are unaware of the new 900 hour requirement in four of the six knowledge hours, again leaving them short of the requirement. 

First of all I believe that the application process itself is more rigorous than the exam.  It is part of the whole process of obtaining the certification.  The IIBA® , by putting all applicants through a rigorous review process, protects the value of the certification.  A couple of tips I can give you in applying for the CBAP® certification:
  1. Document more than the minimum 7,500 hours of business analysis work.  This ensures that if your hours are reduced in the review process that you will still have enough hours to qualify to sit for the exam.  This goes for total hours as well as hours in each of the knowledge areas.  I personally documented 9,000 hours on my application.
  2. Put the language on your application in the wording of the BABOK®.  By putting your work tasks and deliverables in the language of the profession it is less likely that the hours will be discounted in review.
     
Remember that any certification worth getting will not be a give-me.  You will have to work for it.  Any certification worth getting will have a re-certification process, usually just as rigorous as the original application process itself.  In my opinion, the CBAP ® certification and the business analysis profession is what turns IT solutions into IT business solutions.  When it comes to web application development or any business application development projects, the business analyst is as much a valued resource as the project manager.  Business analysis done right can help ensure the success of your IT business solutions projects.

Never Assume Anything

Friday, July 31, 2009 by Matt Warman

My client in Cincinnati is having issues with one of their Java based web applications. The application is throwing an out of memory error. One of the vendor's application development personnel traced it back to a local byte array object. He said "it can’t be the problem because it is created in a method. I don't have to null the object because it is garbage collected". In Java, you are taught that any variables created in a method call persist only for the life of that method call. When the method has completed, all objects are out of scope, so they are to be garbage collected. Java uses implicit object creation and destruction, so the application developer can focus on the problem. Like any rule though, there are exceptions. If your local variable is referencing an external object, and that reference is still live, your local object still persists in memory. Since the method has been garbage collected, the object will stay in memory and not be freed until you restart the server. The best example of this is creating a database connection object. If you don’t call the close method and null it, the object will persist until the JVM is shut down. This called a stale connection. Even though you may have created the connection in a method, the object doesn’t get collected. Look at the following code:

package test;
public class MemTest
{
    private final int dataSize = (int) (Runtime.getRuntime().maxMemory() * 0.9);

 public byte[] func()
 {
    byte[] data = new byte[dataSize];
    System.out.println("func: byte array created in func");
    System.out.println("func: Total Mem=" + Runtime.getRuntime().totalMemory()
               + " Free Mem=" + Runtime.getRuntime().freeMemory());
    return data;
 }

 public static void test()
 {
    MemTest jmp = new MemTest();
    System.out.println("Max Mem=" + Runtime.getRuntime().maxMemory()
              + " dataSize=" + jmp.dataSize);
    System.out.println("Total Mem=" + Runtime.getRuntime().totalMemory()
              + " Free Mem=" + Runtime.getRuntime().freeMemory());
     byte[] data1 = jmp.func();
     System.out.println("byte array returned in jmp.func, size=" + data1.length);
     System.out.println("Total Mem=" + Runtime.getRuntime().totalMemory()
                + " Free Mem=" + Runtime.getRuntime().freeMemory());
      jmp = null; // this does not do anything as data1 still has a reference to the byte[] returned from jump.func()
//   data1 = null; // if data1 is not set to null here to remove to the reference to the byte[], data2=jump2.func() will hit OutOfMemory exception
      MemTest jmp2 = new MemTest();
      byte[] data2 = jmp2.func();
      System.out.println("byte array returned in jmp2.func, size=" + data2.length);
      System.out.println("Total Mem=" + Runtime.getRuntime().totalMemory()
            + " Free Mem=" + Runtime.getRuntime().freeMemory());
 }

 public static void main(String[] args)
 {
    System.out.println("--test1--");
    test();
    System.out.println("--test2--");
    test();
    System.out.println("--test3--");
    test();
    System.out.println("--test4--");
    test();
 }
}

If you run this code, it will throw an out of memory exception. Uncomment the data1= null statement and run again. This application is the 1.4 JDK, and the newer JDKs are doing a better job at handling this situation. I also know that there are 2 things to remember in application development, don’t assume anything, and rules were meant to broken. I still have some testing to do, but I am sure my Cincinnati client will be happy.


What’s new at JavaOne Part 3 - The Sun Cloud and The End?

Tuesday, July 14, 2009 by Matt Warman

This is the last of a three part series; part one is here and part two is here. Many application development guys are wondering, what is the Cloud, and what is the Sun Cloud? Think of Cloud computing as a virtualized data center. In part one I talked about VirtualBox, which allows you to virtualize network components and resources. Think of VirtualBox working on the atomic level, taking small resources to create a virtualized network. Now Cloud computing takes all of the virtualized networks and utilizes them as resources in a virtualized data center. The Sun Cloud is a set of APIs to let you manage networks and storage areas as resources. You can cluster or categorize networks in any way you wish. You can manage user access to the resources, not unlike application development teams utilize in web applications.
What does all this mean to application development and management? It means that you can create a single network and copy or clone it. For example, you can create a single network instance with servers, storage areas databases, and clone the entire network for each region you manage. That means all networks are managed in one spot, and all regions are setup exactly the same. No application compatibility issues. You can, of course, add or remove components, but they are all have the same infrastructure. You can upgrade the virtual network, and pass the changes to the other regions. The electricity saved by running virtualized datacenters would be significant. You can connect to your partners’ virtualized networks to access their data. For application development teams, that would change how we design applications if we have access to external data and applications.

This was my fifth JavaOne conference. Since it is always at the Moscone center, I know pretty much every nook and cranny of JavaOne. Although smaller this year, I thought this was the best one yet. The people there were truly happy to be there, and combined with takeover news and a bad global economy, a bigger sense of cooperation. I would highly recommend coming to one if they still have one. Nobody, not even James Gosling (I was in a group of 20 who had a 45 minute meeting with him) knows if there will be one next year. The reason you come to JavaOne is not the presentations (they are great!), but the people. Meeting and befriending people who created your favorite blog, book, or technology is the reason to come. I remember meeting Craig McClanahan (co-creator of struts) in 2004, and saying "that’s Craig freaking McClanahan!" Last year, I was honored a share a picture of beer with him, Jarda Tulach (inventor of NetBeans), and Geertjan Wielenga (JavaLobby blogger extraordinaire). Application development people get to "network" with the best and brightest architects, technical press, and business owners. This year I got hang with the JUG leaders, NetBeans Dream Teamers, and the JavaFX guys. I wrote, and helped edit a YouTube video "pushing Java", and met more of my fellow Java music software developers. I literally have friends from all over the world (yes Cincinnati too), and I am considered an honorary Brazilian because of JavaOne. Larry Ellison, if you are reading this, please don’t stop JavaOne!