Creating an app is easier than you might think. We use Xojo to create iPhone, iPad, iPod, Mac, Windows, Linux. For Android, we use the Android Developer Kit. Xojo cannot create Android apps yet, but they do have plans.
We created one of the first Xojo apps to be approved on the iOS app store, Reference for FileMaker. We have a couple of apps in development and just released our first Android app for our friends at Christian Camps & Conferences.
Camp is my middle name. Literally.
We've been helping out Christian Camps & Conferences for many years with their FileMaker database. I remember when Bob contacted us about helping out with FileMaker. Bob said he runs a camp and wanted to know about our experience creating software for camps. I explained that our name was CampSoftware, but it's named after my middle name "Camp" passed down from my Grandfather to my Father, to me, and to my Son. I said we've haven't worked with a camp yet, but we work with all types of businesses and we learn very quickly.
Retreat to New England
Christian Camps & Conferences is located in New England and has an amazing summer camp program and also a conference center for retreats. From their website: "Christian Camps and Conferences, Inc. is a non-profit foundation with the mission to foster vibrant Christian communities in awe-inspiring outdoor settings where young people are spiritually transformed through Christ-centered relationships."
Android meet iPhone
Years passed as we've worked on several projects together. A few weeks ago, Bob contacted us about creating an Android app for his camp as they already had an iPhone app. So we took a look at their iPhone app and provided a ballpark estimate regarding the costs.
The Android app turned out to be really nice and Bob was pleased, which made us happy!
The app includes access to their web cams, registration, directions, and a countdown to the first day of each camp session. The web cams don't look like that right now as it just snowed 6 inches yesterday!
Yep. We moved from WordPress to FileMaker. It sounds insane, but it's working great all due to FMWebFrame by Tim Dietrich. Of course we didn't do this overnight and without reason. Our site was running on Wordpress and while it was working, we noticed that it was sluggish and we had added several plugins for things we really didn't need. It was time to simplify.
Looking back, we'd do it all over again. Our site is now wicked fast. If you need your website updated let us know! We can help get the info in a database and available on the web too!
Looking for a Deal
Once we found out about FMWebFrame, we needed to learn how it worked. So we started an experimental site that we've been using to test FMWebFrame called Overseerr.com where we list nice deals on things we like.
We created a new database file, added the products table, and then implemented FMWebFrame, which was a breeze. Not only did FMWebFrame add the ability to search FileMaker data by using the same Select statements like ExecuteSQL uses, it also added caching. Those are my two favorite features, but it does more than that.
Export / Import
To make the move, we exported all of our Pages and Posts from WordPress to XML and then imported them into a FileMaker Database. This took a bit of work, but not too much. We just had to extract the Titles, Page Content, Dates, and a few other fields into FileMaker fields. The data was ready to be published. Once that was done, we were able to use FMWebFrame show the content. All we really needed was a few webpages written in php that search the database and display the information on the page.
The majority of the content on our site are either pages or posts which are shown in very similar manner, but are cached. FMWebFrame's method of caching is crazy fast. Really. Without the caching, we'd still be using Wordpress. FMWebFrame can takes any text and save it to a file. So, when you perform a search on the FileMaker database, you just save the result to a text file. Once it's saved, you can then choose to pull the data from the text file or perform the search again. The flow is something like this:
Do we have a cache file for the query and is it fresh enough to use?
If so, use it and display the page.
If not, search the database, save the cache file, and display the page.
The result is that you only need to query the database when the page needs to be refreshed. We currently only refresh the cache after 24 hours. It sounds simple, but that means that if there is no cache, the next person that loads the page will have to wait a second or two to search the database, save the cache, and load the page. Every person afterwards for 24 hours can skip the searching of the database. It's really amazing.
Try It, You'll Like It!
View our list of posts on our blog and scroll to the bottom of the page where you can see either the query or cache load time. Even with about 80 posts on the site, you'll see how fast the cache is. If you happen to see the query time, reload the page to see how much faster the cache is and how old the cache is. Of course we have a way to force the cache to load. :)
Plug It In
The one thing we loved and hated about Wordpress are all the plugins. We had to find ways to add similar functionality, but found there are many great ways to replicate the functionality.
Pictures: We add images to our posts as FileMaker Containers converted to text using the new Base64 functions. By having the images as base64 text, the images become part of the page and are cached together!
PayPal: We use standard PayPal buttons.
Videos: We use YouTube's embedded html5 video player. On YouTube, go to a video, click share, and then embed. You can do the same for YouTube playlists!
Q & A: We use a Google Docs Sheet Form. When someone fills in a form, they are actually adding a row to a Google Sheet and then we receive an email.
You use the observer pattern when you have an object that needs to notify one or more other objects of specific changes. This is the definition from wikipedia: "The observer pattern is a software design pattern in which an object, called the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, usually by calling one of their methods."
FileMaker DB Integration
One of the best things about FileMaker is how it automatically communicates with with the database. We don't need to worry about any of that in FileMaker, but with Xojo, we have a lower level of control and must handle forms ourselves.
Normally, I would create my form and have a method set the form and another method save the form. Anytime I add another field to the form, I'd have to update the set / save methods. That becomes a pain point very quickly.
Implementing with Xojo
DBObservers makes things MUCH easier. Once the DBObservers is set up, all we need is a sqlite table of data like our Contacts table fields and a Window / View with the fields that we need set to their database column names.
The flow is really simple as well, which I love.
You subclass the fields / interface elements that you want to use.
You add the fields to the form and set the table name.
You create an array of the fields to be observed.
You send messages like "Set" or "Save" to the observers.
Last week we released Reference for FileMaker our iPhone / iPad App that makes looking up FileMaker details quickly.
Not only is it one of our first apps, it's one of the first iPhone / iPad Apps created with Xojo! Xojo is really amazing. With it, we can create real apps for Mac, Windows, Linux, Web, and now iOS ( iPhone / iPad/ iPod ). Xojo is also working on adding Android to the list, but no dates have been set for the release date.
We've been using Xojo since 1998, way back when it was called REALbasic and have been using it to develop apps since then. One of the main reasons we love Xojo it is a high level language. The level refers to how close the language is to machine language. Binary is lowest level language (1's and 0's) followed by assembly language, then languages like C, C++, Pascal, COBOL, and others follow. Xojo would be above those languages and FileMaker above Xojo. While FileMaker is generally a drag and drop development environment, Xojo requires more "coding". You can still drag and drop some elements, but you also have to write code. Think of Xojo as between FileMaker and C++.
We've created C++ apps in the past, but it was never fun. The first time we saw Xojo, it was like a breath of fresh air as Xojo made it easier to create apps. Since the iPhone was introduced, we've been trying to find a way to build apps with out using C++. We've tried FMTouch which converted FileMaker databases to iPhone apps. We've tried LiveCode which is like Hypercard. We've tried PhoneGap which is like building mini web apps. None of them felt right to us.
Xojo added building iOS apps in early December 2014 and we had our app submitted to the App Store by the end of December. It was amazing to conceptualize, develop, and submit the app so fast. Considering that it took a week or so to learn how iOS apps work with Xojo, I'm still amazed how fast we could build an app. Since then, Xojo has released TWO updates. Xojo strives to release major updates quarterly and minor updates as needed. The updates aren't just bug fixes, but also new features, changes, and docs / examples. Here are the Release Notes.
If you need an app created, we can help with the development.
Here's a video that Paul, the Xojo Developer Evangelist created to show how easy to can be.
Tim Dietrich and I have been experimenting with the FileMaker and the Web recently using Custom Web Publishing. One thing led to another.
Tim's been working on FMEasyWeb which makes it crazy easy to put a FileMaker layout on the web. Below you can see what a list layout currently looks like. It generates the layout automatically for list and detail layouts, but detail layouts are just a long column of each field. It works, but it's not similar to the FileMaker layout. It's freaking awesome and completely useable for being automatically generated.
FMEasyWeb with FileMaker Layouts
We started talking and wished we could get a Custom Web Publishing page to look like a FileMaker Layout. So, I mentioned that we could get the position and size of just about anything on a FileMaker Layout by selecting all the objects on the layout to get the xml representation of the layout.
So, I copied the xml for the FileMaker Layout shown below with no changes to the xml. You can get an idea what the xml looks like near the bottom of this page. The xml represents the field for the Title below. Just the Title field. If you were to copy the all of the objects on the layout, there would be that much xml multiplied by the number of objects. It looks like a total mess, but it's very organized. You can get the xml using a FileMaker plugin like Clipboard Explorer or the MBS Plugin. If there are other plugins, I'd like to know, so please leave a comment.
With that the xml, I created this web page layout. I looped thru each object in the xml and placed it on the layout. There was NO hand coding of anything. Each text and field were added to the webpage in the same position and at the same size. You'll probably notice that the portal isn't show on the webpage. That's next on the list.
Just a FileMaker Layout.
Web Page Layout
This is a web page generated from the xml of the FileMaker Layout show above. NO HAND coding was done. A bit of the xml is shown below.
FileMaker Layout Field XML
This is what the xml looks like for the Title Field on layout shown above.