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!

What’s new at JavaOne 2009 – Part 2 JavaFX, JavaFX Designer, and The Java Store

Thursday, July 9, 2009 by Matt Warman

Part one discussed Open Solaris. Part Two is all about what is new with JavaFx and the Java Store.

I have talked about, and been impressed with JavaFX since its debut at JavaOne 2007. It was a key part of my presentation to Cincinnati area application development members that year. For those application development people who don’t know what JavaFx is, I blogged about it here. So what’s new really with it? The JavaFx in 2007 was JavaFX script. JavaFX was limited in where you could run the script. In January, JavaFX released its first runtime, and now JavaFX 1.2 is out. You can have graphic designers create media for your application using JavaFX production and easily import them into JavaFx. The JavaFx language can now be run on the desktop, web page or mobile device. JavaFx has been integrated with the new version of web start, but more on that later. New widgets have been created, and third-party widgets are being created at JavaFx widgets. There still are issues, though. Some swing like widgets like menus and tables have not been completely done. You can create a wrapper around Swing components, but it’s not the same as a native widget. Integration with NetBeans 6.7 isn’t there because of the new designer isn’t ready, but an update is scheduled at the end of July The reason I think application development teams should use JavaFX, is that the same code can run in multiple areas. I can now create a desktop application and have it run on the web and mobile devices without having to rewrite my code.

The JavaFX designer will help in a wider adoption rate of JavaFX for the things it can do. A big part of JavaFx is making animation simple to create. With the timer piece of designer, it’s a breeze. In the demo here, (starts 10:25 in) you can take an image, give it a starting point, and pick intermediate points and the times and the designer creates all of timings for you. You can bind media and widgets to data or events. For example you can drop a video and some buttons on the scene. You then drag a link from a button to the media, and all available actions popup (play, pause, etc.). Select the action in the popup and it’s done. Application development guys can create a media player in minutes. You can open different windows with different screen sizes, and all of the children inherit their changes from the parent. You can edit each screen though, and those changes are kept for that window.

What is the Java Store, and why do I need it? The Java store is a warehouse for free, and for fee Java applications. Right now, everything is for free while the community decides the best way to charge (or not) for applications. If you need an application quickly, you can check the store without having to do extensive searching, or worse, recreating the wheel. The cool thing about the store is its use of the new Web Start technology. Users can preview the application before keeping the application. If you decide to keep the application, just drag it to your desktop. It’s just that easy.

What’s new at JavaOne 2009 Part One – Open Solaris and VirtualBox

Thursday, July 2, 2009 by Matt Warman

This is my third year at trying to boil down 4 days of experiences into an abbreviated post or presentation for application development teams and management of the Cincinnati and Dayton areas.
As mentioned previously, the major topics were Cloud computing and JavaFX, but a new item that I am impressed with is Open Solaris. Version 2009.06 was released at CommunityOne. I am not a Sun representative and I have not been a Solaris user, but there are some great features that I think are cool. Before I get into the new features, let me give you some background. Solaris was Sun's proprietary OS that has a reputation as a fast, enterprise operating system, using ZFS as their file system. Sun open sourced Solaris a couple of years ago. Application development teams who use Solaris will tell you about the worthiness of DTrace, a system debugging tool. It is the one thing that Linux engineers really want to integrate.
There is not a lot of Solaris usage in Cincinnati, and I don’t have a dedicated box for Solaris, so I never used it, but that may change. Like Linux, you can get a "live" version on a disc to try out. I am currently playing with VirtualBox, a open source virtualizer. Unlike VMware, both the player and recorder are free. To tell you how cool it is, I was running an Ubuntu VM on a live Solaris session with Windows as the host OS!
The other reason for my excitement is project Crossbow. Project Crossbow is a networking virtualization project aimed for usage in the cloud. Before my application development friends tune out due to buzzword overkill, let me explain. Project Crossbow can virtualize your entire network including your NICs and switches. The really cool part is that they have a cool GUI that allows you to drag and drop your network pieces. You need a firewall? Drop it into your network. It’s already configured and ready to use. Need another server? Just drop it in and connect it to your network. Since the network is virtualized, you can create your own network from virtualized pieces from any VM. That’s where the cloud comes in. Virtual networks and hardware can be added or removed at any time, if they were not virtualized by you. You could connect to your partner’s network, and if anything changes on their end, the changes would be reflected in their VM. I would strongly urge application development people who dislike/don't understand networking to use project Crossbow, and for free virtualization, use VirtualBox.

Swweeet!

Wednesday, July 1, 2009 by Jeff Welsh

Web application development is a must for Cincinnati and Dayton companies.  We at STAR BASE, Inc. have written much lately about open source IT solutions.  Since we have been on a roll with that, why stop now? 

Another open source IT solution we have worked with is Sugar CRM.  Sugar CRM falls in to a relatively new software category that I’m going to call Commercial Open Source or COS for short.  (Remember you saw the TLA (three letter acronym) COS here first!)  COS applications have a free version that you can download and implement and they also have a commercial version that can be licensed and supported like any other software application.

What we have found to be very effective; is to use the open source version and customize and tailor it to meet specific business needs.   No need to re-invent the wheel.  Swweeet!

 

Browser Wars Redux

Tuesday, June 23, 2009 by Jeff Welsh

Just when I thought the browser wars were pretty much a thing of the past, they are heating up again.  Web application development is difficult enough without having to worry about what version of what browser a client may be using.  

We just upgraded a couple of machines to IE 8 and guess what?  IE 8 is not compatable with our web based CRM!  IE 7 and FireFox 3 work fine, but in IE 8 the search fields are not input capable.  IE 8 provides for a “compatablity mode”, but hey that doesn’t work either.  I was wondering if Google Chrome would work, but in Chrome, the search fields don’t show up at all; the field labels are repeated. 

I was thinking about trying Opera, but stopped because how many web browsers do I really need on my machine any way?

In order for web applications to continue to flourish and expand, there has got to be adherence to standards by both application developers and software companies.  There are so many other applications that could be developed and expanded.  But what do we do with IT solutions?  Both vendors and developers shoot themselves in the foot by delivering applications and software that “stops working”. 

What's the business impact?
- Increased support costs.
- Increased applications development and testing time
- Less confidence by the user community of “IT not  being able to do anything right”.
- Less time and money to develop new applications.

As a reformed, application developer, maybe I should retitle this post “The Return of the Angry White Guy.”  I think instead, I’m going outside and shouting, “I’m mad as hell and I’m not going to take it anymore”.