Mark Scrimshire
B: http://ekive.blogspot.com
....Sent from my iPhone
Thursday, August 09, 2012
Which tie to wear to @knotfriends party tonight?
Tuesday, August 07, 2012
#Openflame from @firejacknet - A means to a robust end
In previous blog posts (here and here) I have documented the process for getting the Openflame platform running on Mac OS X. This can be accomplished because the platform uses industry standard open source components such as:
- Tomcat
- Memcached
- Maven
- MySQL
But running Openflame on this stack is not an end in itself. It is a means to an end. Openflame provides a rapid development environment that produces web applications that run using robust, open source web technologies. So let's put together a sample application and learn more about how Openflame works.
In order to get to work on the platform I take the following steps:
- Launch MySQLWorkbench and startup the MySQL Server. I could also have gone in to System Preferences and used the MySQL Preference Pane.
- Open the Terminal and check the setting for OPF_ENV_PATH.
- Launch Tomcat using /Developer/Tomcat/bin/startup.sh
You can check the progress of Tomcat and the deployment of Openflame by checking the catalina.out log. In my installation that can be found in:
/Developer/Tomcat/logs/.
Openflame is a complex platform so it may take a few minutes to loa but once Tomcat is loaded pointing your Web Browser to Localhost:8080 should return this:
Clicking on the Manager App button should return information that includes the Openflame application:
With openflame started we can launch the application:
You should see this:
Use the Admin userid and password to access the Openflame platform.
When logged in you should see a screen that looks like this:
We have a working Openflame installation and we can get to work creating business solutions!
The first step is to secure the application by changing the default admin password.
Go to the Directory Tab and select the admin user.
Double click the admin user and set and confirm a new password and press "Save"
With the admin password changed we can now get to work and create our first application.
Hello World
To create an application we need to construct some basic building blocks. The first is the Root Domain.
Let's add a new Root Domain.
Click on the Domain Tab.
Click on the Add Root Domain icon.
I then fill in the root domain form with:
Name: helloworld.com (this has to be in lowercase)
and, optionally, a brief description.
Click the blue "Save" button.
The next step is to create a package. The package is the application we will build.
Select the helloworld.com root domain in the sidebar. Then click on "Add Package"
I use the name "hello" and check that the Context Path is set to match as "/hello"
Click the blue "Save" button.
The package context path is the url we will browse to on the server. i.e. localhost:8080/hello
Next step is to add a "Domain." This is different from the root domain.
Domains are where we start thinking about the data we want to handle in our application.
For this example I am going to create a very simple address book, which I will call "contacts".
I add a brief description and a naming prefix of "contact".
I am also going to create a database called "messages".
I am now going to add an Entity to the Domain. Select "contacts" in the sidebar.
Add "Category". Note the Capitalization.
Click "Save".
I repeated this process for two other Entities: "Organizations" and "People".
By now I think you are getting the idea.
The Openflame 1.3 documentation has the steps for building a sample app documented here:
The example application is a movie database. There have been some changes between version 1.3 and 1.4 but you can still easily follow the process.
I find it easier to think in pictures when I am understanding a system so I prepared this schematic which depicts the major elements of an Openflame solution.
When you have built a solution using Openflame the next step is to:
- Create a system component
- Create a database within the system component
- Generate the code for the Solution
You should be aware that the code generation process can take up to 30 minutes. The Openflame platform is busy building a fully documented project, which is deposited in to Maven and building the databases in MySQL and preparing a WAR file and supporting configuration files to allow the application to run on Tomcat.
While the code is being generated you may see an application pop up in your OS X dock. The application is org.apache.catalina.startup.Bootstrap.
Monday, August 06, 2012
Configuring Openflame on Mac OS X
In an earlier blog I went through the installation of Memcache, MySQL, Maven and Tomcat. These are the open source building blocks on which the Openflame platform is built. Openflame is an enterprise-strength, scalable development platform from Columbia, MD innovator FireJack Technologies.
<filestores>
<filestore name="base" path="net.firejack.opf-local">
<port>8080</port>
<serverDirectory>{Absolute_File_Reference}/openflame/base/filestore</serverDirectory>
<serverName>localhost</serverName>
</filestore>
<filestore name="config" path="net.firejack.opf-local">
<port>8080</port>
<serverDirectory>{Absolute_File_Reference}/openflame/base/filestore</serverDirectory>
<serverName>localhost</serverName>
</filestore>
<filestore name="content" path="net.firejack.opf-local">
<port>8080</port>
<serverDirectory>{Absolute_File_Reference}/openflame/base/filestore</serverDirectory>
<serverName>localhost</serverName>
</filestore>
</filestores>
I have delayed following up on the installation of Openflame because I have moved my MacBook to Mountain Lion. Now that the OS is largely running smoothly (Other than a few niggles with Safari and Address Book) I am turning back to getting the upcoming 1.4 release of Openflame running.
First step - Launch Memcached:
/usr/local/bin/memcached -d -p 11211
MySQL is easy since I installed the System Preferences Add-in. Just launch System Preferences, choose the MySQL preference pane and click the button to startup MySQL.
I had downloaded and installed Openflame 1.4 in to /Developer/openflame1.4 and setup a symbolic link so that /Developer/openflame points to the 1.4 release directory.
I then copied the openflame.war file from the webapps sub-directory to the webapps sub-directory in the Tomcat installation. I had installed Tomcat in /Developer/apache-tomcat-7.0.29 and had a symbolic link to the installation from /Developer/Tomcat
The next step is to configure the two configuration files. There are two files:
- environment.xml
- environment.properties
FireJack provides two sample files for this:
- environment.example.xml
- environment.properties.example
More on the settings for these in a moment.
I went through a number of iterations to get the openflame.war file to successfully deploy. After receiving some great support from one of the Developers at FireJack.net I was able to successfully get OpenFlame running. This is what I had to do to get the 1.4 beta version of Openflame running:
One point to note is that the 1.4 version of Openflame makes a change to the properties files to encrypt the content. I believe that one of my initial implementation attempts failed because there was no Openflame database to upgrade. First we will start by reviewing the environment files:
The first step is to gather all the settings and accounts you have used to configure Memcached, Maven, Tomcat and MySQL. You will need them to configure the environment files.
environment.xml
<?xml version="1.0" encoding="UTF-8"?>
<environments>
<environment>
<system name="opf-local" path="net.firejack">
<packages>
<package>net.firejack.openflame</package>
</packages>
<port>8080</port>
<environments>
<environment>
<system name="opf-local" path="net.firejack">
<packages>
<package>net.firejack.openflame</package>
</packages>
<port>8080</port>
<protocol>HTTP</protocol>
<serverName>localhost</serverName>
</system>
</system>
Specify the port, protocol and serverName to match your machine. If you are running locally this would be localhost on port 8080. The default for Tomcat.
<databases>
<database name="db" path="net.firejack.opf-local">
<password>{account_password}</password>
<port>3306</port>
<rdbms>MySQL</rdbms>
<protocol>JDBC</protocol>
<serverName>localhost</serverName>
<urlPath>opf_main</urlPath>
<username>{admin_Account}</username>
</database>
</databases>
<database name="db" path="net.firejack.opf-local">
<password>{account_password}</password>
<port>3306</port>
<rdbms>MySQL</rdbms>
<protocol>JDBC</protocol>
<serverName>localhost</serverName>
<urlPath>opf_main</urlPath>
<username>{admin_Account}</username>
</database>
</databases>
This is where you create the connection to MySQL. The default port is 3306. I used the root account for this test but you could specify an alternative name. Just make sure you give it the necessary admin level permissions in order to create and manage the Openflame schema.
Replace {account_password} with the password used by the admin account.
The serverName should match the setting you applied in the previous section - unless you are connecting to a MySQL instance on another machine.
Replace {admin_Account} with the administrator account you are using on MySQL. The default will be root.
<servers>
<server name="server" path="net.firejack.opf-local">
<port>8080</port>
<protocol>HTTP</protocol>
<serverName>localhost</serverName>
</server>
</servers>
<server name="server" path="net.firejack.opf-local">
<port>8080</port>
<protocol>HTTP</protocol>
<serverName>localhost</serverName>
</server>
</servers>
Port, protocol and serverName should match the settings used in the earlier system section. I am using Localhost and the default 8080 port for Tomcat.
<filestores>
<filestore name="base" path="net.firejack.opf-local">
<port>8080</port>
<serverDirectory>{Absolute_File_Reference}/openflame/base/filestore</serverDirectory>
<serverName>localhost</serverName>
</filestore>
<filestore name="config" path="net.firejack.opf-local">
<port>8080</port>
<serverDirectory>{Absolute_File_Reference}/openflame/base/filestore</serverDirectory>
<serverName>localhost</serverName>
</filestore>
<filestore name="content" path="net.firejack.opf-local">
<port>8080</port>
<serverDirectory>{Absolute_File_Reference}/openflame/base/filestore</serverDirectory>
<serverName>localhost</serverName>
</filestore>
</filestores>
The filestores need to be referenced by an absolute file/folder reference. I pointed the filestore to a Developer area under my user account
{Absolute_File_Reference} = /Users/{OSX_Account_Name}/Developer
The Base, Config and Content database filestores all point to the same location.
<directories>
<directory name="accounts" path="net.firejack.opf-local">
<directoryType>DATABASE</directoryType>
<serverName>localhost</serverName>
<status>ACTIVE</status>
<urlPath>/openflame</urlPath>
</directory>
</directories>
</environment>
</environments>
<directory name="accounts" path="net.firejack.opf-local">
<directoryType>DATABASE</directoryType>
<serverName>localhost</serverName>
<status>ACTIVE</status>
<urlPath>/openflame</urlPath>
</directory>
</directories>
</environment>
</environments>
environment.properties.
# Admin user login and password
app.admin.email={My_Email_Address}
app.admin.name=admin
app.admin.password=111111
#Memcached
memcached.url=localhost
memcached.port=11211
memcached.cache.size=10
#Master Openflame URL
#opf.master.url=[OPF_MASTER_URL]
The app.admin.name and app.admin.password were set to the openflame defaults. They can be changed in the platform once Tomcat has deployed and launched the openflame.war file.
The memcached information is taken from the install. In this case I am running it on localhost on the default port of 11211.
The critical Environment variable before launching Tomcat is OPF_ENV_PATH. I made sure this was set to the /Developer/openflame where the environment files were located.
You should then be able to copy the openflame.war file in to the /Developer/Tomcat/webapps folder and launch Tomcat.
The deployment process may take up to 15 minutes since there is a lot of code to deploy, databases to build etc. But once it has deployed you should just be able to go to Openflame via localhost:8080/openflame.
If you have problems with a new deployment try these steps:
The following notes are for a new installation and NOT for an upgrade!
If the new deployment fails check these things:
- Drop the openflame schema. I used MySQLWorkbench to do this.
- Check that the MySQL Admin account you use has full rights to create and manipulate schemas and tables.
- Check that the openflame folder does NOT have an openflame.properties file. I had an unencrypted version that was a result of another installation experiment. Openflame 1.4 requires an encrypted file
- Have you defined the OPF_ENV_PATH setting and pointed it to the location of the openflame environment files. For me this was /Developer/openflame.
Mac #OSX Safari 6 and AddressBook- Problems are lurking. Can't wait for update!
Last week I upgraded to Safari 6 and then on the launch of Mountain Lion updated my OS. Most things have gone smoothly but there are some annoyances.
Safari 6 with Google Docs and Facebook via https
There is a problem that impacts the use of Google Docs in Safari 6. The best example is how you load a Google Spreadsheet but you can't edit any cells. There are various threads in the Apple Support Community Forums on this subject. Another problem is the speed with which Facebook loads.
The Google Docs and Facebook problems are probably connected. They relate to how Safari 6 is accessing secure web pages. I went in to Facebook and changed my security settings so that they don't force the use of https:// secure browsing. When I headed back to the Facebook home page the page loaded blazingly fast. This obviously doesn't solve the problem with Google Docs which uses a secure page but at least it points to the area where Apple need to fix Safari. Hopefully we can see an update come quickly from Apple to solve this issue. In the meantime you can use Chrome which doesn't exhibit the same problems on Mountain Lion.
If you are using Safari 6 but haven't upgraded to Mountain Lion then you are probably experiencing this sluggish browsing behavior. The problem is with Safari 6 and not with Mountain Lion.
Bonfire for JIRA from Atlassian
Another area I have seen a problem with Safari 6 is with Bonfire from Atlassian. Their browser extension works fine on Chrome under Mountain Lion but again Safari 6 on either version of OS X has a problem. For those not familiar with Bonfire it is a browser extension that is used to document software bugs. The way it works is to open a sidebar and collect a snapshot of the current browser page. The problem with Safari 6 is that the browser extension opens a new tab instead of updating the existing page and it doesn't capture the screenshot. This effectively makes the extension unusable in Safari 6. Hopefully Atlassian will release a patch that will solve this behavior now that Safari 6 is officially available.
Addressbook and Contact Pictures
Addressbook, or should I say Contacts, is an app I use multiple times every day on Mac OS X. In Mountain Lion Apple has tweaked the interface making it easier to deal with groups. However there are some areas where the application has taken steps back in usability. One small area is with the formatting of phone numbers. Under Lion you had an option to choose the format for your phone numbers. I had mine set to +1.234.567.8901. In Mountain Lion the option to format numbers has been removed and all numbers default to +1 (234) 567-8901 or (234) 567-8901. I am assuming that this is related to the International and Regional setting for the system as a whole but there is no information shown about phone numbers in the Language & Text section of System Preferences.
The more retrograde step in Contacts is how Contact Pictures are handled. One of the really slick features of AddressBook under Lion was how you could drag a picture from your browser in to the Contact Picture area of AddressBook while editing a contact record and the picture would be set as the Contact's picture. In Contacts this is now a frustrating multi-step process.
When editing a Contact record you have to double click the "Edit" link in the Contact Picture. This pops up a grid of pictures. There are three options:
- Defaults
- Recents
- Camera
Defaults is a standard set of icons. The same icons you would see when selecting a default icon for your account in Users and Groups. Camera fires up your web cam to allow you to take a picture. To add a picture grabbed from your web browser or from finder you need to click on Recents. This gives you a grid of recent pictures. Now click on the little pen icon beneath the grid. This takes you in to edit whichever picture you have selected. Now drop the picture you want from your browser, or from finder, and click done.
This is a major step backward in usability. What was a one step task has now become a six-step task.
There is a lot to like in Mountain Liion but the 10.8.1 patch can't come soon enough. I am hoping Apple will address these weaknesses.
Friday, July 27, 2012
Is OAuth 2.0 sinking?
I just read a CNet article about Eran Hammer-Lahav leaving his role as Lead of the OAuth2.0 specification. Eran had put 5 years of effort in to developing OAuth 2.0. It seems to be another story of Enterprise needs complicating a workable standard in to un-usability. It is a real shame.
When you look at the history of the Internet it is the simple standards and protocols that have succeeded. Take SOAP v. REST for example. Amazon supported both standards and the market spoke. About 98% of their transactions were accomplished using the simpler REST protocols. Simple wins. Simple is easier to adopt.
The aim of OAUTH 2.0 is laudable. We absolutely need simple authentication that works pervasively across the Internet. We need portable user authentication. The more complex you make Authentication the less secure it gets.
I wish Eran success as he turns his focus to new endeavors.
Wednesday, July 25, 2012
#BmoretechB Another great Baltimore Tech Breakfast. Even @Gussent was here from @BaltimoreSun
The Baltimore Tech Breakfast is Baltimore's biggest regular Tech meetup.
90% built. Go live in SeptemberUsing JanRain for social sharing.
Busygrad.comHelping grads to collaborate and share information. Built by johns Hopkins graduates.Far more than Facebook. Has inventory of materials for use in research projects.Started as Hopkins only now extends to university of Baltimore Maryland. Helping science graduates.Hyper local communication.
People want to reach this graduate market. Now and in the future.Foodem - foodem.comConnecting farms with restaurants.Helping restaurants control food costs (35% of costs) by giving access to vendors.Currently in test phase.
Based in ETC in Baltimore.26,000 restaurants in DMV area.
$33B industry. $650B us market.Tapping the local-sourcing food trendsSeller and buyers can rate each other on every transaction.Filters for various categories. Eg. Halal, organics etc. Betascape.org is coming up and looking for sponsors and participants at the intersection of art and technology.Baltimore innovation week - last week of September
Every month we have a great set of demonstrations of new products. This month was no exception.
@DJ5Starr certainly woke up the crowd to kick off the morning. You can't beat a little bit of Michael Jackson's Thriller to get things moving...
News: Foster.ly is helping bring the Tech Breakfast to Washington DC.
The Tech Breakfast is making a big impact in the local community. Close to 200 people turned up to the event. Even the Baltimore Sun (@BaltimoreSun) was represented by Gus Sentementes (@gussent) . We will look forward to his assessment in one of his regular columns.
Here is the program:
8:15 - 8:25 - Be More STEM: DJ Technology - Kendrick (dj5starr) Tilghman
8:25 - 8:35 - Royle Claims - Richard Goldberg
8:35 - 8:40 - 30 Second Lightning "Shout Outs"
8:40 - 8:50 - Planistry - James Tasch
8:50 - 9:00 - Course Canary - Robert Kearns
9:00 - 9:05 - 30 Second Lightning "Shout Outs"
9:05 - 9:15 - BusyGrad - Lawrence Gray
9:15 - 9:25 - Foodem.com - Kash Rehman
9:25 - 9:30 - 30 Second Lightning "Shout Outs" & Last Words
Be More STEM
@DJ5STARR Kendrick Tilghman - Promoting Science Technology Engineering Mathematics education.
Getting kids excited about STEM. Putting the wow in STEM! - http://www.dj5starr.com/be-more-s-t-e-m/
Mixing MP3 and Video live during education sessions. Creating excitement.
Very cool Scratching Video live. Interesting sponsorship opportunities.
DJ'ing is the excitement. The fact that calculating Beats Per Minute is needed is the "slippery slope" to realizing that STEM is important and has practical real life applications.
Using Scratch Live to deliver the DJ session.
Royle Claims - Richard Goldberg
Proprietary platform to submit claims to insurance industry from doctor's practices. Targeted at Property and Casualty Insurance. (P&C).
Creating a paperless environment. Faster processing for Providers, Attorneys, Employers, Insurers/Brokers, Insurance Carriers.
95% Market coverage with Insurance Carriers.
Providers can receive Authorizations through the system.
Equates to Fedex. They do not host documents for longer than 30 days.
$39.95/month to doctors and brokers. Free to Carriers. Eliminates copying, scanning and postage expense.
Planistry - James Tasch
An event planning service like Eventbrite.
In order to differentiate themselves Planistry needs to emphasize the Vendor side of this planning and ticketing service, otherwise there is not much to differentiate from Eventbrite.
90% built. Go live in SeptemberUsing JanRain for social sharing.
Course Canary - Robert Kearns
Provides surveys to support trainers on courses.
Provide Embed codes to integrate in to a teacher's Course Management System. eg. Blackboard, Moodle etc.
Complements Course Management Platforms. Built for online Education but is also applicable to face-to-face education - using Classroom exit tickets.
Using coursecanary.com/{link}. Very mobile friendly.
Launching today. Started development in March.
Enables anonymous feedback.
BusyGrad - Lawrence Gray
Busygrad.comHelping grads to collaborate and share information. Built by johns Hopkins graduates.Far more than Facebook. Has inventory of materials for use in research projects.Started as Hopkins only now extends to university of Baltimore Maryland. Helping science graduates.Hyper local communication.
People want to reach this graduate market. Now and in the future.Foodem - foodem.comConnecting farms with restaurants.Helping restaurants control food costs (35% of costs) by giving access to vendors.Currently in test phase.
Based in ETC in Baltimore.26,000 restaurants in DMV area.
$33B industry. $650B us market.Tapping the local-sourcing food trendsSeller and buyers can rate each other on every transaction.Filters for various categories. Eg. Halal, organics etc. Betascape.org is coming up and looking for sponsors and participants at the intersection of art and technology.Baltimore innovation week - last week of September
Friday, July 20, 2012
Fanning the Flames… Working with OpenFlame from FireJack Technologies
I am very interested in a new platform called OpenFlame from a local, Columbia MD company - Firejack Technologies. It is a platform that helps you quickly convert your ideas in to software. More importantly, the resulting software is fully documented (automatically) and is configured using industrial-strength, enterprise-ready, open source technologies such as Java, Tomcat, MemCache and MySql.
The platform is designed to run on a Linux or Centos Operating System but the components all have Windows and Mac implementations. Therefore, in order to get my hands on the OpenFlame platform I want to try configuring the platform to run on a Mac running Mac OS X 10.7 aka Lion. I figured that this would also help me to understand how it has been built. So in this blog post I am going to document the process I am going through to get the OpenFlame 1.4 platform running under Mac OS X.
I am indebted to a number of people who have posted configuration guides for these different technologies. There is a wonderful community of developers and coders who contribute their knowledge. What I am doing here is leveraging their valiant efforts to combine a series of these technologies in to a working setup under Mac OS X. To all of you - Thank You.
Since I am running OS X 10.7 Lion it does not come pre-installed with Java and Tomcat 7 requires Java 1.6. So the first step is to get the download for Java and install it. With that done we can move on to installing Tomcat 7.
Tomcat installation:
Thanks go to Wolf Paulus for his guide on installing Tomcat 7 on OS X Lion. I also found the instructions for Snow Leopard installation by John Malis useful
First a little about my environment. Yes, I am running Mac OS X Lion. I have also installed XCode in to the /Developer folder on my hard drive. Since I don't intend to run Tomcat frequently I decided to install Tomcat in /Developer along with Openflame.
First I downloaded the latest version of TomCat and expanded the tar ball.
I then simply moved the Tomcat folder to /Developer. This gave me a new folder:
/Developer/apache-tomcat-7.0.29
Rather than sprinkle version references for Tomcat in path statements and elsewhere I created a symbolic link.
ln -s /Developer/apache-tomcat-7.0.29 /Developer/Tomcat
I then changed ownership:
sudo chown -R <your_username> /Developer/Tomcat
I removed the .bat files from the /Developer/Tomcat/bin folder since we are not running on Windows and then I made the .sh shell files executable:
sudo chmod +x /Library/Tomcat/bin/*.sh
Make sure that CATALINA_HOME is as an environment variable.
You can do this with:
export CATALINA_HOME=/Developer/Tomcat
If you want these to be run everytime you launch a shell then add them to ~/.source using a text editor.
Startup Tomcat on port 8080 using:
/Developer/Tomcat/bin/startup.sh
Then launch a browser and try connecting to localhost:8080 and you should see a screen something like this:
Memcached Installation:
With Tomcat installed the next step is Memcached. For this process I found Tug's blog post really useful. Once again XCode is a pre-requisite since we are going to be compiling and installing code.
create a temporary working directory and switch to it.
The first pre-requisite is libevent. So let's install it:
curl -O http://www.monkey.org/~provos/libevent-1.4.14-stable.tar.gz
tar xzvf libevent-1.4.14-stable.tar.gz
cd libevent-1.4.14-stable
./configure
make
make verify
sudo make install
tar xzvf libevent-1.4.14-stable.tar.gz
cd libevent-1.4.14-stable
./configure
make
make verify
sudo make install
With that done we can install memcached:
Switch back to the temporary working directory and install memcached:
tar xzvf memcached-1.4.10.tar.gz
cd memcached-1.4.10
./configure
make
make test
sudo make install
This should result in an installation of memcached in the /usr/local/bin.
running memcached can be accomplished with the following command:
/usr/local/bin/memcached -d -p 11211
This runs memcached as a daemon on port 11211.
Tug's blog post gives details on using telnet to connect to the memcached installation to test it.
We are making progress. We have Tomcat and Memcached running. The next step is MySQL.
MySQL Installation:
For the MySQL installation I turned to Michael McLaughlin's blog. MySQL has a simple implementation for Mac OS X. You can download an OS X Disk Image of the 64-bit installation from the MySQL site. This package also include a System Preferences Pane to make starting and stopping MySQL simple to do.
With the System Preferences Pane you can choose whether you want to have MySQL launch when your system starts up.
With mysql configured with a symbolic link we can configure the environment settings:
export set MYSQL_HOME=/usr/local/mysql
export set PATH=$PATH:$MYSQL_HOME/bin
export set PATH=$PATH:$MYSQL_HOME/bin
To configure MySQL you can download and install the MySQLWorkbench application. If you are a LAMP developer you may already have MyPHPAdmin installed.
We not have all of the base components up and running for OpenFlame. In the next post on this subject I will look at what is needed to get Openflame configured and working using these base components.
Subscribe to:
Posts (Atom)