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!
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!
Open Up and Say... Ahh!
For several years now STAR BASE, Inc. has been delivering open source IT Services in Cincinnati and Dayton. I don’t know, but maybe we are IT consulting trend setters for Cincinnati. Seems I have seen quite a bit in the last week about open source.
This is not the first time I have written about open source. In a previous post, I talked about Magento e-commerce. I just saw this article about Magento. As my fellow STAR BASE, Inc. IT strategy consultant, Matt Warman says, "come on in, we’re open."
Open source can substantially lower your cost of application development services. You know what? “It don’t get better than this”.
Browser Wars Redux
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”.
Balance vs Blend
I’ve heard a lot of talk recently about finding some balance. Lets face it, whether you are an application developer in Cincinnati or Dayton or outside of the IT services field, its tough to balance out all of the demands of life.
I think of someone balancing on a tight rope or a balance beam. Its hard to do for long periods of time for most of us.
I think its easier to blend rather than balance. What do I mean by that? For me, its doing a little bit of a lot of different things. For example, I’m not getting out on my motorcycle as much as I would like. I did get a chance to ride into the office over the week end. Its not my ideal ride, but at least I got on the “horse” this week.
Come On In, We’re Open
The Cincinnati market is known for being conservative when it comes to using software. Most application development people I know would say that big software, from the big firms, either three lettered companies, or their name ending in “soft”, are the only code found in shops. There is the occasional open source item here and there, but usually in smaller shops. Why is that? Well, some firms don’t create their custom application development, they just enhance out of the box software. They need a vendor to yell at and fix things when it breaks, because their staff can’t fix the code, or don’t have access to it. For many firms, it is better to pay a vendor for support than to maintain it themselves. As long as you can point to somebody, it’s ok. Some firms actively fear that open source means that everyone will have their intellectual property somehow. They fail to realize that it is the same proprietary code that everyone uses too. Since, you have the source code, you can see if there is a backdoor coded in the application, something you can’t do with proprietary code.
With these fears aside, many firms, even in Cincinnati, are looking to use open source solutions for their issues. Certainly many are using the free (as in beer) code to save costs. I hope though that some firms will see how this free (as in liberty) also helps their business. It’s a tough call whether to purchase a pre-made business process package (I am looking at you SAP), or to roll your own. I think the best of both worlds would be to use an open source application, and to enhance it. It is a popular misconception that you MUST contribute code, or that you can’t change the code. You can create your own code for use; you can’t sell the application with YOUR enhancements as YOUR NEW application. There is some legal wrangling, yes, but the bottom line is that you have application development teams, so use them. Your best business plan is to use your process as a competitive advantage, not to shoehorn your process into software that all of your competitors use. I think the goal is to beat them, not join them.
The best thing to do is to give your application development team a couple of old boxes to play with, and let them do some research on applications that can save your money, and are flexible enough to work with your processes. You may end up with an inexpensive system, and get that application that outperforms your competitors.
Object-Role Modeling - Part 4 - Ring Constraints and Subtypes
In this example an Employee is identified by an id, and has a Name. In addition, a Manager is a type of Employee that has a budget. Manager is the subtype.


- Irreflexive - means that the two roles cannot be filled by the same instance of an object. Our Manager supervises Employee fact type is irreflexive meaning a particular manager cannot be his own supervisor.
- Symmetric - means that if a relationship exists between two instances of an object, then the same relationship exists in the opposite direction. If Ohio borders Indiana, then Indiana borders Ohio. Our Manager supervises Employee fact type is not symmetric.
- Asymmetric - is mostly the opposite of symmetric. If a relationship between two instances of an object, then the same relationship does not exist in the opposite direction. Our Manager supervises Employee fact type is asymmetric. Note that asymmetry implies irreflexivity.
- Antisymmetric - is kind of like symmetric with asymmetry in specific instances. So in the antisymmetric relationship, if the same instance of an object is playing both roles of a fact, then it is symmetric, but if different instances of the object are playing the roles of a fact, then it is asymmetric. Here is an example of an antisymmetric fact type: Number is greater than or equal to Number. It is symmetric as long as the numbers are the same, otherwise it is asymmetric.
- Intransitive - Intransitive has to do with chaining relationships together. If Object A relates to object B, and Object B relates to Object C, then intransitivity say that Object A may not have that same relation with Object C. Consider parents and children. Joe is the father of Mark who is the father of Tom, then Joe can't be the father of Tom unless there are some illegal behavior going on. That is intransitive. In most organizations, the Manager -> Employee relationship is intransitive. Note Intransitivity implies Irreflexivity.
- Acyclic - Means that for any object, I can't follow the chain far enough to get back to the starting object. A parent can not be it's own descendant. This constraint is very expensive to impliment in terms of processing resources, so it is typically not specified. Usually Acyclic relationships are specified as Asymmetric. Note Acyclic implies Asymetric which implies Irreflexive.

Well, that's enough on that topic. If you are looking for more information, here are some resources:
www.ormfoundation.org/
and a book by Terry Halpin and others:
Database Modeling with Microsoft Visio for Enterprise Architects
Signature Block Marketing
If you have seen one of my previous posts, you know that I have a new cell phone and new wireless provider. We are Lotus Notes / Domino mail users here at Star Base, Inc. and we have installed the Lotus Notes Traveler plug in on one of our Domino servers This gives us the ability to get two way, email, calendar and contacts over the air. Since we have this capability, I’m in the process of updating my contacts in Notes.
One of the things that I don’t like about the Nokia 5800 phone is if the person calling is not in the contacts, it shows the city and state of the caller and not the phone number. I have not found an easy way to display the phone number, so hence my updating of the contacts.
With that as background, I am using the add to contacts feature from emails that contacts have sent me in the past. I’m surprised at how many people don’t use an signature block at the end of their email. If you don’t, you are missing out on a great way to promote your business. Its also a really convenient way to make sure your email recipients have your up to-date contact information. My signature block is below. (Note: I have left off the phone, fax and email because of spammers.)
Jeffrey A. Welsh
President
STAR BASE Consulting, Inc.
12059 Sheraton Lane
Cincinnati, OH 45246-1611
Vision: Help every organization that engages us to realize their full information technology potential.
Mission: We transform our clients' IT into a competitive advantage.
"Celebrating 18 Years of Excellence" 1991-2009
(Phone, Fax, Email Omitted)Web: HTTP://www.STARBASEinc.com
See what I’m talking about on my blog.
Am I There Yet?
Coming back to Cincinnati is the hardest part of JavaOne. On a physical level, my body just got acclimated to west coast time, and now I am subjecting it back to east coast time. It’s more than just sleep, its food too. Instead of eating breakfast at 8:00 am, I am having it at 11:00 am. It takes me until Wednesday until I feel like I am in the right time zone. On an application development level, it’s a mixed bag. I have the emails and duties that I left for a week, and now I need to complete 2 weeks worth of work in one week. I also forgot that I was presenting a JavaScript lunch and learn. On the plus side, I do feel motivated to work on my JFrets project, and continue on my new project called history slider. It’s amazing how a TODO list goes from avoidable task to an application development imperative after meeting with your peers. I have some new contacts and great ideas for new enhancements after presenting again. Last week seemed like both 2 days and 2 months, and sleeping as often as I could, I think I am back to normal.
Creating and Object-Role Model - Part 3 - External Constraints
First an Answer is given for a Question during a Call. This is not the typical binary fact type that we have been dealing with so far, but in ORM we can still record these fact types and give them internal constraints. Going to the diagram we have the following:

There are no external constraints here, but you can get a decent idea of just what can be modeled with more advanced fact types. Note the mandatory constraint requiring a question and a call for each answer given, and the uniqueness constraint saying that a question asked during a specific call identifies a particular answer.
Here is another way to model the same information using binary fact types and an external unique constraint:

In this case an external uniqueness constraint is applied to the Call and Question roles of the Answer applies to Call and Answer given for Question fact types. There is a difference between these two models though. Can you detect it? In the first model, the same answer can be given for more than one question as long as it is given on a different call. Functionally this means that in the second model, each answer given is it's own answer with it's own answer id. I modeled this in Visio for Enterprise Architects. And though I would like to put a uniqueness constraint on the Answer role in the first model, Visio does not allow that. I have not tried this with other tools.
What about that part where I want to require either a multiple-choice answer or a text answer? I have another external constraint for you. Here is the diagram.

This is a mandatory constraint on the answer role relating the two fact types. This means that an Answer bust have a choice, or some text. Still it could have both, so I need another constraint. One that means that I can't have more than one of each of the related roles in play. I have not talked about this constraint type yet because it really doesn't apply to internal constraints. It is called an exclusion constraint, and this is what it looks like on the diagram.

Note that both the mandatory and the exclusion constraints are attached to the answer role while the uniqueness constraint is on the other role. Note that for a given answer, the answer cannot be unique across the two fact types, it has to be the same on the same fact. The uniqueness constraint applies to the roles it is attached to. Mandatory and exclusion constraints apply to the other role. For a given Answer (role the constraint is attached to, at most one of the fact types is allowed. If we combine the mandatory and exclusion fact types we get an exclusive or construct that would mean for each Answer, exactly one of the two related fact types are required. See the diagram:

It is hard to see, but if you look closely you will see the X in the circle behind the dot. Note also, that these constraints can be extended beyond two fact types to mean exactly 1 of n or at least 1 of n or no more than 1 of n.
Next time I will talk about ring constraints and something that no case tool based on ER models (that I have used) can do.
And So It Ends..
I was hoping to post more last week on JavaOne, but it was a busy week. First, let me get my application development friends up speed. The general theme at this year's conference was Clouds and JavaFX. There were many talks on what Clouds were, how to deploy them, and the new tools available to utilize them. Sun is promoting their Cloud, but there were plenty of talks on Amazon's EC2. JavaFX was also a big player this year. There were talks on creating and utilizing JavaFX, but the most of the focus was on the upcoming tools, importing of graphics, and deployment of JavaFX. Tor Norbye is working on an excellent visual tool for JavaFX that should ship by the end of this year. Think of dragging and dropping widgets and just wiring them up. If any application development team members are interested, materials will be posted on Java's Software Developers Network (SDN) site.
Personally, it was probably my favorite J1. I meet a lot of new people from the Java User Group (JUG) and JUG-USA, the JavaFX team, and members of the NetBeans Dream Team. Sven Raimers, a Dream Team member, and his team won a Duke's choice award for his work on satellite tracking and data collection. I was fortunate enough to be in a small group of application development team members to meet and have a Q&A with James Gosling. I wrote the text for a Java video called "Pushing Java". It is up on Youtube, so check it out. I did present this year as part of the "Making Music With The java Programming Language". I also had a "Java Rockstar" interview here. I met many great people, and made some new friendships.
Creating an Object-Role Model - Part 2 - Internal Constraints
Internal Constraints are those that apply completely to roles within a single fact type. Let's go back to the Person model we developed last time (slightly modified).
Person has Phone Number
Person has Address
Person has E-mail Address
We can attach an internal mandatory constraint to the Person role in the Person has Name fact. This is somewhat counter-intuitive, but constraints apply to the other role in the fact. I attach the mandatory constraint to the Person role in the Person has Name fact. That means that each person must have some name. If I attached the mandatory constraint to the name role, it would mean that for each name, some person must have that name. Another way to say it is that a constraint goes on the controlling or primary role.
This is what this constraint will look line on the diagram:
We can also attach uniqueness constraints to roles. As with the mandatory constraint, the uniqueness constraint applies to the other role. So to say that a Person may have at most one Name, we will attach a uniqueness constraint to the Person role of the Person has name fact.
The uniqueness constraint will look like this on the diagram:
When combined, these two constraints mean that a person has exactly one name:
What about that phone number? I have multiple phone numbers, my home phone, my cell phone, and a couple of work phones. In addition, my home phone and my work phone numbers could be claimed by other people as well, and some people may not even have a phone number, or it is unlisted and we don't know it. In this case, the Person has Phone Number fact type has no mandatory constraints, and it takes both the person and the phone number to make a unique fact. As an aside here, up until now, I have been using fact type and fact rather interchangeably, but that is not strictly correct. The fact type is an abstraction of the real facts, thus Person has Phone Number is a fact type, and Mark has Phone Number 123-4567 is a fact. The point here is it takes both the person Mark and the Phone Number 123-4567 to make a unique fact, so to add the uniqueness constraint we would add it against both roles simultaneously.
This, for the application development team, is a many-to-many relationship, and looks like this on the diagram:
I will show one final combination today. For the sake of example, suppose that I could only have a single e-mail address, and every e-mail address could only be used by a single person, not reality I know, but what you would have is a one-to-one relationship. In that case you could say it like this: Each person has at most one e-mail address, and each e-mail address is used by at most one person. There are two internal uniqueness constraints here one for the person role, and one for the e-mail address role of the Person has E-mail Address fact type.
These constraints would look like this on the diagram:
As you can see, with just binary fact types and a couple internal constraint types (mandatory and uniqueness), the application development team can model nearly everything that can be modeled on an ER diagram. And you have natural language descriptions of the model that are readable by the business users the solution is being developed for. But wait there's more. I will tell you about external constraints, and reference modes next time.
Creating an Object-Role Model - Part 1
Person has Last Name
Person has Phone Number
Person has Address
This is nice, and easily understood, but I like diagrams, and that is simple too. The tools I have seen allow typing fact types in a natural language manner, or by adding them graphically to a diagram like this.

Note that there are three different symbols: the oval with a solid line which represents an entity, the oval with a dashed line which represents a value, and a rectangle with two boxes which represents a fact (sometimes called a predicate). It is up to you to determine if an object is a value or an entity. There are a couple of ways to do this. One is if you can write it down, then it is a value, otherwise it is an entity. For example, you can write a person's name on paper, but can not write the person. Another way to determine this is if it has components, then it is an entity, otherwise it is a value. An address could be written down, but sometimes we want o refer to a component of the address, so we make that an entity, and the individual components of the address become values like this:
Address has City
Address has State
Address has Postal Code
Or graphically

You get the idea. As an exercise you might want to try extending the model to allow states in different countries.
That's it. An Object-Role Model is built using simple facts. In this case, and most cases, the application development team can use binary facts (ones that reference or or two objects playing two roles). The tools I have seen allow n-ary fact types as well, but the uses for these are uncommon, and in my experience can be replaced by binary fact types. In my next post I will discuss uniqueness and mandatory fact types
Object-Role Modeling In your Enterprise
So what does Object-Role Modeling do for me?
ORM is not a new concept - it dates back to the 1970's, but it is a way to build simple information models using nothing more than simple facts. For example a Customer has a Name. When designing a new system, or even upgrading an existing system, we can easily retrieve these natural language facts, and combine them into a powerful information model that the business can look at and say "yes that is true, but you forgot that a customer also has an address!" Add a couple constraints that tell about the relationship between the object and it's roles, and the developers can automatically generate all the ER diagrams and class models it wants. ORM provides a simpler, more accurate and more powerful approach to information modeling than other approaches such as Entity-Relational Modeling and UML.
ORM is really a very simple approach that, once you get past the "there has to be more to it" reaction, will give you some better communication tools for use between the business and the application development team. In fact if they don't already know it, ORM has been part of Visio for Enterprise Architects for quite some time now, and there are even some open source ORM tools that plug into Visual Studio. The integration of these tools into your application development environment will make your business analysts and database analysts far more productive. As such I will impart, over the next couple of posts, some tidbits that will get you going. In the mean time if you are chomping at the bit, I suggest you jump over to The ORM Foundation for some additional reading.
Welcome to My World
http://www.youtube.com/watch?v=R2a8TRSgzZY
Check out this video, it’s so dead on. Many of us in the IT staffing industry have dealt with this first hand. “I can get <fill in IT skill> resources for $20 an hour less from XYZ". Companies’ sometimes act like they are buying a commodity product like copier paper, rather than skilled IT consultants.
No manger would ever dream of going to one of their employees and saying, I can get Bob to do your job for $10,000 less per year, yet it’s becoming more prevalent in the IT staffing business.
One of the huge issues facing our industry is the use of H1-B IT consultants. Our leaders in Washington are looking legislation specifically targeting IT consulting firms that use H1-B consultants to limit our ability to do so. This is in the interest of saving American jobs. Unfortunately, the bill currently being debated does not limit multi-national companies, so only the smaller companies will be hurt.
I would love to use local IT consultants for all of our engagements, but the price pressure dictates we do things we normally wouldn’t chose to do. But then again, we’re really just hurting ourselves.
Java App Store
Can You Hear Me Now? Part Two
Business application development needs to accelerate faster. Some are still talking about getting IT solutions to the web. We should be talking about how to get IT business applications WAP enabled. As voice and data networks continue to converge, consumers are going to want new and different way to access IT solutions. Some have struggled with web application development and WAP is going to be a little trickier because the user interface is small and will probably need to be re-worked for the smaller display.
In part-one I shared that on this trip, the coverage on my new phone was very acceptable. In this post I will share some of the features I have used. One of my requirements was to have a handset that supported navigation. On the old phone I used Navigator that has a female voice, so I named her Suzy. My new phone has Nokia maps and has a male voice, so I will call him Coleman. Suzy has helped me many times and I have confidence in her, so it was up to Coleman to prove himself. While we were still in the mountains of Maryland, I programmed the final destination into both phones. It took a few minutes for the Nokia to find our location, but once it did, Coleman gave me turn by turn instructions, ETA and other things I expected. Even though I had cell coverage, Suzy was not able to connect at all until we were out of the mountains. I have had this problem before with Suzy before and it’s really quite annoying when you really need directions. The conference is at National Harbor which is been open less than a year. As we got close, I could see the Gaylord resort, but Coleman kept insisting we make a legal U turn. Nokia downloads map data to the phone and navigator send information through a data network. If there is no data network, no maps. The downside of the Nokia is it takes up phone memory. Right now I’m call this even. There are pros and cons to both.
My new phone is a smart phone, so there are two other options that I am aware of. Telenav is subscription service that is very similar to Navigator. I can also download a Google maps application as well.
Another requirement that I have is my contacts and calendar be synced to our server. The Nokia software does a great job at this. Another option that I need is to be able to tether the phone to my notebook for broadband internet connectivity. I have not been able to test this on my new phone yet.
One of the goals of the switch was to save some money. Because our new phones are smart phones, they need full data service and so I’m ending up at about the same cost. So the bottom line is we ended up with more capabilities for the same price. From what I see so far, integrating voice and data applications and having them work well together will be the next application development challenge.
And So It Begins…
As a JavaOne alum, today is very much about catching up with old friends. I am setting up lunches, dinners, and “networking” events. It is tough to go to the Thirsty Bear, but that’s what I do!
I will be giving daily updates as I can, so stay tuned!
Can You Hear Me Now? Part One
This week I am in Washington DC at a Jenzabar conference with a customer learning about IT strategies and IT solutions for higher education. One of the partially completed tasks that I had not completed before I left was a switch of Star Base, Inc’s wireless service. We had been with the company whose tag line is the title of this post for 15 years. Yet I have another year to go on my contract. (Go Figure.)
We are in process of switching to the local wireless company and so I have both phones. I didn’t want to cutover on Friday before the holiday weekend and also be out of town on top of that. For now I can call out and use almost all the features of my new phone and service. Inbound calls still use the old phone and its fully functional as well. That puts me in a unique position to test the coverage of both services side by side.
So far I am pretty happy with my choice. One big concern was how would the coverage be outside my home area. I was a passenger for a good part of the trip because I was riding along with the customer. That gave me time to see how the services stacked up in different parts of the route. Even though the national company touts its network. The local company’s signal strength was equal to or greater than the national one each time I checked.
In my next post I will detail the services and features that I have used.
Four!!
I’m taking a break from the usuall IT strategy, IT solutions and application development. I seem to have gotten behind on writing, since I have had two four day work weeks back to back. Last week was the annual Circuit golf outing and STAR BASE, Inc. sponsored a hole again this year. I usually play in these events and have a great time. I have very high standards for those that play golf with me. The first requirement is that you have a set of clubs; the second is that you know which end to hang on to.
I think I’m going to change that first requirement to own a set of clubs. A few years ago these requirments almost got me in trouble. One person in my group didn’t actually own his clubs, he borrowed them and he knew which end to hang on to, because he watched Happy Gilmore the night before. (He had not actually played before). It was a long day.
But I digress, this year I decided I could network more effectively by staying at our hole and meeting all the golfers. We gave out small cards that say “Everyday I play like a Champion!” I swear if you repeat that affirmation everyday, it will take 2 strokes off of your game. If you want one of these laminated cards, let me know. If you want to play golf with me and actually own a set of clubs, I’m open for that as well!
