Friday, January 6, 2012

Resolutions

After posting my 2012 Book Reading List I ran across an article by John Tierney called Be It Resolved. It has some great information about how to keep your resolutions and some surprising statistics that show that you can be successful in achieving you goals by following some simple strategies

    1. Set a single clear goal
    2. Pre-Commit
    3. Outsource
    4. Keep track
    5. Don’t overreact to a lapse
    6. Tomorrow is another taste
    7. Reward often

So I thought I would apply these concepts to my 2012 resolutions to see if it will help me stay on track to reach my goals. One of the biggest portions is outsourcing, which I have done by publicly declaring one of my goals. My book reviews will serve as a mechanism for keeping track of my progress.

Now all I need to do is come up with those frequent rewards.

Wednesday, January 4, 2012

Book Reading Goals

Its that time of year again where we all take an opportunity to start fresh and forget about the resolutions we didn’t accomplish last year in favor of the resolutions we make for this year. I am no exception to this cycle of making resolutions sticking to them for awhile and then letting them slide because life just got too busy.

One of my big resolutions is to do more reading. I always seem to have several books on my shelf as well as a big wish list of books that I would like to read. So this year I am setting the goal of reading one technical book every month and posting a review of each of them.

So, without further ado here is my 2012 list.

  1. Living With Complexity Donald A Norman
  2. Code Complete Second Edition Steve McConnell
  3. Entity Framework 4 In Action
  4. The Art of Unit Testing
  5. RESTful Web Services
  6. SQL Antipatterns
  7. The Productive Programmer
  8. Seven Languages in Seven Weeks
  9. Head First Android Development
  10. Head First C# Second Edition
  11. The Design of Design
  12. Thoughts on Interaction Design

Wednesday, October 26, 2011

SWFox Begins

SWFox_2011_BoothSWFox 2011 begins tonight with the keynote followed by a reception. This is my fifth year attending/exhibiting at this conference. As I mentioned in a previous post we will be doing two sessions on Extending Your FoxPro data to other applications.
One of the demos is a JQueryMobile website that displays the class information for SWFox. This data is stored in VFP9 dbf files and is also used by the Kokopelli scheduling application.

The demo was written using JQueryMobile and accessing the data via the Advantage Web Platform. The example will work in virtually every browser and will automatically resize for various devices such as smartphones and tablets. The data is all read-only, however, data can be modified using simple methods if desired.

Kokopelli_Demo

You can view the demo here.

Wednesday, October 12, 2011

Southwest Fox 2011

We will once again be attending SWFox in Phoenix Arizona which starts on October 26th. I always look forward to this conference because of the great FoxPro community, it always feels like a gathering of friends. I am always impressed with the variety of training offered and the diversity of applications that are using FoxPro.

This year we will be focusing on Extending FoxPro applications. Advantage provides easy access to FoxPro data without any conversion and allows for concurrent access ensuring that current applications will continue to run without any code changes.

I will be presenting a session titled “Mobile Access to your VFP” on Thursday October 27th at 2PM. Here is the class description.

Need to extend your current VFP application to mobile devices or another technology? We will show you how without changing you current VFP application. See how to share your VFP data with your desktop application and mobile devices at the same time, along with getting other client/server benefits. In our session we will demonstrate concurrent data access with an iPad, iPhone, Android, and a mobile web application. Your current data can now be accessed by mobile workers without having to change the application currently used by the office workers. Your VFP application's life span can grow... we can show you how to do it.

If you are going to be attending SWFox this year please come to the session. Feel free to stop by our booth we will have an amazing giveaway as always. See you in Phoenix.

Monday, September 26, 2011

Advantage Technical Summit

We had another very successful technical summit in Boise last week. We focused on mobile development and our Advantage Web Api. The best feature of the Web Api is that it uses oData and JSON to transfer data which can be consumed by virtually any client. No specific Advantage client is required to send and receive data through the Web Api.

I taught classes on Mobile Web Development using JQueryMobile with oData. There is an excellent screencast done by Daniel Ryan which demonstrates our example Web Application. I also did a class on developing oData applications for iOS which includes iPods, iPhone and iPad devices. JD Mullin did a series of screencasts on using oData with iOS as well. Jed Thomet did a class on using oData from Android devices.

We also had our usual classes on using our other Advantage technologies and clients. We added a panel discussion session which gave attendees the opportunity to ask our development team general questions about Advantage and our development process.

The greatest benefit of our technical summits is the networking that goes on between Advantage users and our staff here. It is always great to hear about how you are using Advantage with your products. I hope we will see you at our next conference.

Monday, September 19, 2011

Delphi Live 2011

IMG_0764We had the opportunity to attend Delphi Live! in San Jose California again this year. We always get to see and talk to many Delphi users that are also Advantage customers.

This year we were able to talk more about our Advantage Web Platform which provides oData and JSON access to Advantage data through the Web. This allows access from virtually any device, such as iPhones, iPads, Android phones and tablets. We have an example mobile website where you can see this technology in action.

There were many sessions on the latest release of Delphi, Delphi XE 2 at the conference. This release includes 64-bit support and Fire Monkey which is a cross-platform development mechanism. We will be updating the Advantage Delphi Components to work with this release and to include support for 64-bit applications. We are still investigating Fire Monkey support.

Monday, March 28, 2011

Limiting Users for a Database

Advantage counts users based on the machine name that is connecting. This means that a single machine can have multiple connections to Advantage while only consuming a single license.  There are times when you may wish to limit the number of users to a particular database. For example you may be hosting data for multiple customers at your site or in the cloud. You may need a way to limit each customer to a specific number of concurrent users. If each customer has a specific database you can accomplish this by using the sp_mgGetTableUsers system procedure when your application starts up.

The sp_mgGetTableUsers procedure takes one parameter which is the full qualified path to the table. You can provide a path to a data dictionary instead of a table to get a list of all the users connected to the database. See the example below

sp_mgGetTableUsers1

As you can see this list returns all connections to the specified file. You will need to count the results based on the type of users you wish to track. If you are using a traditional client/server solution where each user has their own machine name ( as shown in the example ) you need to count the number of unique UserName values. If you are hosting the application on a terminal server then you will need to count the unique TSAddress values.

If you are using Advantage version 10 or newer you can use SQL to count the connections. The example below demonstrates different types of counts.

sp_mgGetTableUsers2

By running a script like the one above when your application starts you can get an accurate count of the total number of users connected to the specified database. You could then compare this to the number of licenses for that database. The number of licenses could be stored encrypted in the registry, in a license file or some other method.

There are a few limitations to this approach. This technique will not prevent third party applications since the check is done by your application and not by the server. This technique will also not work for a web based application since all users will be connecting through one or more web servers.