Ken Williamson


Building a Website with Ulbora CMS

By: Ken Williamson

Ulbora CMS Architect

Ulbora CMS is changing the way website developers build websites. Ulbora CMS uses cutting edge technologies like Google’s AngularJS to quickly build sites that use content provided by REST web services. Sites can be built and deployed in hours with AngularJS and Ulbora CMS.

This tutorial will show how to configure and deploy Ulbora CMS to a Tomcat server running on your local system. A later tutorial will show how to deploy Ulbora CMS to the Cloud.

Setting up your environment:

(You can skip this section if you already have Tomcat and MySql and a database management tool installed on your system)

  1. Download and install (follow the instructions provided by Apache) Tomcat here
  2. Download and install MySql here
  3. Download and install the JDBC driver for MySql here
  4. Install database management software (PhpMyAdmin, NetBeans, DbVisualizer or some other)

Installing Ulbora CMS

  1. Download the Ulbora CMS Combined war file here
  2. Download the database file here
  3. Unzip the Ulbora CMS sql zip file
  4. Run the Ulbora CMS sql file downloaded above in your database management software to create the database
  5. Set permissions for the newly created database and record the username and password
  6. Unzip the Ulbora CMS binary zip file to a separate directory
  7. Navigate to the folder that contains the war file (UlboraCMSAPI.war)
  8. Open the war file and navigate to /WEB-INF/properties/ and edit the file with the new database username and password
    1. jdbc.api.database.username=yourUsername
    2. jdbc.api.database.password=yourPassword
  9. Copy the edited war file to Tomcat’s webapps directory
  10. Start Tomcat
  11. The application will by automatically deployed
  12. Start a browser (Firefox, Chrome or IE10 or greater)
  13. Enter this url: http://localhost:8080/UlboraCMSAPI
  14. You should see the screen below:

Read the rest of this entry »

number of view: 431 Posted by ken under Ulbora CMS | Permalink | No Comments »

Is HTML5 a Cross Platform Silver Bullet Solution for Mobile Application Development

By Ken Williamson

A year ago, I was a big proponent of building mobile applications with HTML5 and JavaScript. At that time, I had considerable native mobile application development experience under my belt. I believed, however, that HTML5 applications would eclipse native applications and that HTML5 would become the predominant delivery system for almost all mobile applications. The need for cross platform solutions and the portability of HTML5 made HTML5 an attractive alternative. Unfortunately, I found out the hard way while designing MicButton Notes that HTML5 has many unforeseen issues that adversely affect the functionality of mobile applications. I came to realize that HTML5 is not the silver bullet solution for mobile application development that many would have you believe. It is just another of many tools available to build mobile applications. That’s all.

My ventures into HTML5 mobile application design started with the initial design of a note sharing application called MicButton Notes (pronounced Mike Button) for Android, Google Chrome and with plans for all mobile devices. MicButton Notes started out as a Java, Spring Framework, Hibernate web based application using jQuery Mobile for the mobile UI and deployed to The Android version was a hybrid wrapper application built and deployed to the Android Market very quickly and with little effort. The final design of MicButton Notes for Android (which just released), however, ended up being a 100% native code application designed with a background service used to synchronize the application’s local database using REST services at

So, what went wrong and caused the major redesign you might ask. Well there were many unanticipated obstacles that cluttered the path to a well functioning HTML5 hybrid mobile version of the application. The single biggest impediment, however, was the need for and the inability to provide off-line functionality for the web based application on which the Android version was built. Most mobile users of note sharing applications (and most mobile applications in general) use their applications in all kinds of places and under all kinds of conditions often without network connectivity or with very poor connectivity. The need for constant availability can play real havoc with mobile users who expect full functionality 100% of the time. Phase one was a total failure. Even I couldn’t stand to use the application.

On to phase two:

At this point I was still trying to salvage my earlier efforts with HTML5, so I decided to enhance the hybrid application with a local Web SQL Database. In this phase I produced a relatively large amount of JavaScript to handle the local database synchronization process and to display data to the user in HTML5 pages. I used HTML5 page caching where it made sense. My primary objective was to retain cross-platform functionality. As one might imagine, the JavaScript code soon became very difficult to manage or debug. It soon became very obvious to me that using HTML5 and JavaScript was probably not the best long term solution given the difficulties of maintaining the JavaScript part of the application. I even considered using PhoneGap, but realized that a significant part of a PhoneGap version would require building PhoneGap plugins in native code to achieve the needed functionality. Not exactly a cross-platform implementation. Read the rest of this entry »

number of view: 1576 Posted by ken under Mobile Development | Permalink | No Comments »

Using The Active Record Pattern With SQLite and C++

The Active Record Pattern is a popular design pattern for accessing data stored in a relational database. This pattern can be used to greatly simplify the use of SQLite in C++ applications. The concept of the Active Record Pattern is to use an object to wrap a row of data in the database. For an example, I will use the Section table from DocUMentDS, my recently released Desktop Document Manage System. Figure 1 show the UML for DocUMentDS.

The Section table has the following fields

  1. id (int)
  2. name (varchar)
  3. user_id (int) (foreign key)

One of the main concepts of the Active Record Pattern is the containment of all data access methods and business logic inside the corresponding class. For example, Figure 2 show the simplified generic UML of the actual Section class:

Notice that the class contains accessors and mutator for the class attributes, but also contains business methods save, update, remove and finders for this class. The Active Record Pattern allows us to simplify data access by placing all the needed methods inside the Section class. Therefore, the Section object contains everything we need to create, access or modify a Section objects.

This shows the code for section.h:

Read the rest of this entry »

number of view: 7559 Posted by ken under Sqlite, c++ | Permalink | 1 Comment »

Spring MVC Tutorial Part 1

By Ken Williamson

I start from the very beginning of building a Spring MVC application and give step by step instructions on how to build and deploy a Spring MVC application. All code and configuration files are explained to give you an understanding of how the application functions.

This tutorial contains the following sections:

  • What you need
  • Building your project
  • Writing the required code
  • Deploying the application
  • Testing the application

What you will need

1. Java 1.5 or greater SDK

  • Download the latest full Java SE SDK from
  • Follow the installation instructions provided with the download.

2. NetBeans 6.8

  • Download NetBeans 6.8
  • Follow the installation instructions provided with the download.

3. Tomcat 6 or later

  • Download the latest Tomcat at
  • Placed the unzipped apache-tomcat-xxxx folder in the directory of you choice.
  • Follow the NewBeans instructions on how to install application servers and install Tomcat.

Read the rest of this entry »

number of view: 14063 Posted by Ken Williamson under Spring MVC | Permalink | 1 Comment »
1 visitors online now
1 guests, 0 members
Max visitors today: 2 at 12:47 am EST
This month: 10 at 11-02-2014 03:10 am EST
This year: 43 at 02-12-2014 02:27 pm EST
All time: 43 at 02-12-2014 02:27 pm EST