03 February 2009

Non-commercial Re-installations

A challenge for freelance developers

tidyspices Maybe it’s just me.  But I suspect this is a situation faced at times by others who work at the micro-ISV level.

It has happened to me 3 times in the last week.  Customers have got a new computer, and have installed “my” application, without contacting me.

Well, what’s wrong with that, you may ask.  This is how I see it…

If you are a freelance developer, building an application for a very specific one-off scenario, you don’t go to the extra effort/expense of providing for the “generality” factor.  Like you do if the application will be deployed more widely.

No, you set it up and install it to the computer system it was designed for.  You make sure, on that system, that everything related to the application is carefully put in the right place, and nicely lined up.

One of the examples this week was an Access 2000 MDE application, originally deployed with the Access 2000 Runtime, referencing a couple of third-party DLLs, using a set of specifically located TXT files, and requiring a DNS for some core functionality connecting to the MySQL database on their website.

The customer replaced their PCs, with Access 2007 installed.  The IT company who supplied and set up their new computers, simply copied the Access database files from the old PCs to the new, and somehow expected them to work.  Which they didn’t, of course.

One of the problems with this, is that it suddenly starts to feel like it’s my fault. There seems to be something of an undertone in our communication of “What’s wrong with this dumb database of yours, it was working fine and now suddenly it’s throwing all these errors, we didn’t think you would fail us at a time like this.”  Well, I’ve got broad shoulders, and I can handle this one.

More difficult, is the fact that by this stage it has become urgent. They rely on this application. They have to get their invoices out by tomorrow. And of course they are in a distant city. And they don’t know what “unzip” means. And so on… Pressure!

As I said before, this is not the only time.  So I can’t help dwelling on the question…  Why didn’t somebody think of getting in touch with me before the event? “We’re getting new computers. What do we need to do to make sure our database will work?”  It would have been easier and cheaper and nicer.

02 February 2009

Access Security

Management by Technology

security When planning and designing a Microsoft Access application, the question of the security of the data has to be carefully considered.

Similarly, one is called upon, from time to time, to discuss this aspect in technical forums and newsgroups.

Of course, from the technical angle, there are many aspects that could be discussed – and indeed they have been, many times in many places.  Hiding the database window, disabling the bypass key, deploying as MDE/ACCDE, backend in SQL Server, etc.  But that is not my main focus here.

Nor do I want to diminish the importance of attending to the question of data security in general.  However, I think we have to recognise that how critical a consideration this is, will vary hugely from one industry to another and from one application to another.

If security is highly critical, basically an Access application with a JET/ACE backend database is not the right tool for the job.  So?  There are millions of database application scenarios where security is not highly critical.

A few weeks ago, I was responding in a newsgroup to a question about preventing access to the backend database.  This person had realised that if anyone on his staff was sufficiently savvy, it would be possible for them to use various means to locate and connect to his application’s data.

This person had taken all the reasonable steps, as a developer, to make the backend database file difficult to find and open directly, and to make sure that the ordinary user would only interact with the data via the frontend application.

He asked what further steps he can take to prevent this hypothetical tech-savvy staff member from finding a way in.

I was discussing this over lunch with Lucy Thomson, fellow MVP, and she confirmed my viewpoint.  “People keep trying to use technology as a substitute for management!”

Exactly!  This is not a technical question.  It’s a management question.  It’s already patently obvious that you’re not supposed to mess with the database file.  It’s like a locked door.  It wouldn’t be too hard for someone with a screwdriver or bolt cutters to get in - but they would surely know they were doing something wrong.

Mr/Ms Savvy linking to the data file, or however they are going to do it, is hacking the company system. This is a serious offence. Make sure the staff know it will not be tolerated. Public flogging followed by instant dismissal for first offenders.

Expend your development efforts on building a great application. And apply management solutions to management problems.

01 February 2009

Nana is 100

On a personal note…

Steve-Nana My family and I have returned home from a very special visit to Adelaide, South Australia – my home town.

The purpose for the trip was to help my grandmother Phyllis Schapel to celebrate her 100th birthday, on 10th January.

Of course it was a very family-oriented affair. Wonderful to catch up with immediate family, cousins and extended family members, many of whom I hadn’t seen for many years.

And of course to spend some time with my Nana.  She’s a great lady, always know for her sharp wit.  Here are a few of her birthday quips I will remember:

Looking across the room at my wife Susan, she turns to me and says…

“She’s too young to have you for a husband!”

(Of course I should have commented back about a certain person being old enough to have me for a grandson, but I wasn’t quick enough – too busy laughing!)

The congratulatory letter from the Queen has been read, the candles are lit, the assembled throng are on the verge of singing Happy Birthday, and Nana says…

“Who paid for this cake?”

Witnessed this interchange…

Nurse: “To what do you owe your long life?”
Nana: “Good, clean living.”
<general laughter>
Nana: “Hey, I didn’t say I was perfect!”

And another…

Somebody: “All set for another 100 years?”
Nana: “Well, I’ll definitely be around for part of it.”

My daughter Hazel has posted here about it.  All in all, a pretty memorable experience.

31 January 2009

Snip Snip

I like the Snipping Tool in Vista

snip Sometimes “quick and easy” is good.

The Snipping Tool which is part of Windows Vista is a screen capture utility.

For me, it’s been a recent discovery.  But since that time, I have found myself grabbing it fairly often.

The best thing about it is that it’s “feature-sparse”!

Of course, for some purposes you need screen capture with lots of flexible options about what to capture, when and how, coupled with powerful editing tools, in order to produce presentation-standard outputs.

In such cases the Snipping Tool does not snip the mustard, and for myself Snagit continues to be an essential blade in the quiver.

But I reckon the Snipping Tool designers have got the mix of functionality just about right, for those times where you want a simple no nonsense instant shot.

Here are a few examples of what I have used it for today:

  • I got an email from a customer asking where does he put a certain type of information into his Access database application.  I opened the application at the form my customer is supposed to use, grabbed the Snipping Tool, grabbed a screen shot of the relevant section of the form, highlighted the textbox, and emailed it to him.  Total time less than 60 seconds.  Totally effective, adequate to the purpose, and certainly quicker than I could have handled it by any other means.
  • As part of a development task, I had to delete a bunch of tables in a database, and replace them with tables imported from another database.  I wanted to make sure the Relationships pertaining to these tables would end up the same, without having to work it out (thinking is so time consuming, don’t you find?)  Opened the Relationships window, grabbed the Snipping Tool, grabbed a shot of the relationship diagram, didn’t even save it – just left it sitting there to refer back to, deleted the tables, imported the new ones, and checked the relationships.  Nice.
  • While working on one aspect of a database, I thought of something tangential that I would need to attend to later.  Grabbed the Snipping Tool, took a capture of the relevant part of the report (in this case), used my tablet to write a note on it, and whacked in into my “to do” page in OneNote.  Couldn’t have done it quicker and better any other way.

And so on.  The examples are infinite of course.

So here’s the deal… you get:

  • A handful of configuration options;
  • The choice of 4 capture size/shape options;
  • A pen for freehand drawing/writing, with the choice of 2 nibs, 3 thicknesses, and 16 colours;
  • A highlighter, in the colour of your choice (as long as you choose yellow);
  • Save your capture to a choice of 4 formats;
  • A snappy user interface.

A lot of the time, that’s plenty.

30 January 2009

Real World Access (40)

One of a series of articles about where Microsoft Office Access applications have found a real-world niche.

 Jeanette Cunningham's Roads and Bridges

kangarooParkRoads is an MS Access based road and bridge asset management program.

It is designed for use by rangers and other road management staff in Parks Victoria, a national park management agency, in Victoria, Australia.

The program:

  • records assets on roads, including the road surface;
  • assesses the condition of the asset;
  • develops works schedules for maintenance and upgrade works;
  • calculates repair cost estimates;
  • prioritises works based on structural condition and cost estimates;
  • tracks progress of works.

Reports can be generated on screen, in Access templates, or exported to Excel worksheets.

Photographs, technical reports, and assessments can be attached to the database.

The program is designed to be intuitive for non-engineer type road managers, and does not require extensive training courses.

04 August 2008

Database discussion

Access & SQL Server at US TechEd

There is a video recording available of an interesting panel discussion, chaired by Mary Chipman at the US TechEd in June.

It is about considerations for moving a database from  JET/ACE to SQL Server.

This is a topic where one can often find considerable confusion.  You will see people wanting to choose between Microsoft Access and SQL Server.

To me, it's simple.  SQL Server is not an alternative to Access. They're quite different categories of software, and you can't compare them.  Access's primary purpose is application development.  As far as I am aware, SQL Server can not be regarded as an application development platform. It's database management system software, and as such needs a frontend user interface built using "something else".

In many cases, that "something else" is Access.

Therefore it was excellent to see the panel bringing some good perspective, balance, and clarity to this question.

One of the panelists, Access MVP Armen Stein described Access as a "development environment".  A development environment that comes with a free database engine (JET/ACE), which you can use by default, but under certain scenarios you may prefer to use another database engine - SQL Server for example. This is a good way to put it.

21 July 2008

Access White Paper

I went to a SharePoint User Group meeting tonight.  A great presentation by visiting British trainer Craig Carpenter.

But I digress... Somehow at these events I always seem to end up mentioning Access to somebody. smile_tongue And, as is so often the case, the "somebody" is apparently surprised to know that Access is being used in the real world.

Well, on this occasion, I was able to refer the person to an article that was fresh in my mind.  It's the Microsoft Office Access Vision White Paper, published by Microsoft.

It's available for download as a Word document.  A couple of years old, but still a good read.

I take the liberty of quoting from the final section of the document:

Microsoft believes strongly in the strategic importance of continued investment in Access and the Access database engine. Access addresses a class of users who would never use Visual Studio and developers who can help empower and support those users. The Access database engine, with its versatile ability to connect to multiple diverse data sources and its powerful client-side query processor, fills a need that is distinct from SQL Server and SQL Server Express. Also, as a tool for creating rich Windows-based forms and reports bound to Windows SharePoint Services data, Access can add significant value to the Web-based capabilities of Windows SharePoint Services. The Web services–based technology that Access uses to connect to Windows SharePoint Services is a promising harbinger of how Access will be able to add value to other emerging service-oriented data sources. For these reasons, Microsoft sees a bright future for Access and will continue to invest strongly in its continued growth.

Nicely put, don't you think?

Technorati tags:

Real World Access (39)

One of a series of articles about where Microsoft Office Access applications have found a real-world niche.

 Bob Larson's Medical Point of Sale

Providence Health System, in Portland, Oregon, was opening a retail outlet for selling appearance items for cancer patients in one of their hospitals.

They needed a Point of Sale (POS) system in order to handle the retail transactions.  The transactions would include marking which items were covered by insurance and/or cash sales.

They found a system that the Home Medical Equipment division was implementing, but it was not going to be available for 6 months to a year.  So, they needed some program to handle the sales until such time as they could get hooked up to the Enterprise system.

Using Microsoft Access I designed, programmed, and implemented a POS system which is able to handle the cash sales, including credit cards (and tracking the bank confirmation codes), and insurance sales.

The system can submit sales invoices to the business office.  They have all the information required for billing the insurance companies.

At the time I left the company the retail outlet was successfully using the Access program I created and, if it had done the actual insurance billing, they were wishing that they could just keep using the program I created instead of the Enterprise system.

07 June 2008

Real World Access (38)

One of a series of articles about where Microsoft Office Access applications have found a real-world niche.

 Branislav Mihaljev's SMS Messaging

One of the customers asked me if I can build a database program in Microsoft Access which he will use to send single or mass SMS text messages.

Basically it is a simple task, as SMS messages will be sent through a SMS Gateway, and VB code is already provided by the SMS Gateway provider. With small modification this code can be easily adapted to work in Access.

Wherever the base of a program is a small or mid sized database, Access can be used to build a program around it, so we both agreed to continue with Access.

There were lots of things to consider for this application. The buyer maintains several lists in Excel database-like format, so I needed to write a custom import module to import all these data. As most of the worksheets do not have the same field names, there was a need to give the user the option to "connect" fields from a database table to Excel columns. In some worksheets, the columns are not in the same order, which complicated the programming a bit, but in the end a custom import wizard (reusable for other programs) worked well!

Usually, even for a single user, I split a database into backend and frontend parts. At least there is one advantage: when the backend is completed I can work on the user interface (frontend) without interfering with the user's actual data.

Furthermore this program should maintain different types of message recipients, where each type can belong to one of four groups. In other words, the user has five attributes to define each recipient group. So we have decided to use different backends (one for police, one for fire brigade, one for army, etc). Also there was a need for the option to create a new backend database.

The main screen overall looks simple. It allows the user to select the user type, and using four filters choose a group of recipients. The user can select one or unlimited number of recipients and send the same SMS message to each one.

The SMS screen does not allow more than 160 characters to be entered (it has a counter of the number of typed characters), and it can schedule sending for any date/time in the future.

Sending generic messages is not always user friendly, so we thought we could use "smart tags" in the SMS message. Here is a sample message with "smart tags" in:

Dear <Name> we have a meeting at <Company> tomorrow at 9AM.

When the program generates the SMS messages it will replace <Name> with the real name and <Company> with the name of the company where the recipient works.

As well as being user friendly, "smart tags" appear to be useful in many other ways. "Smart tags" are managed in an option screen, where the user can create a limited number of new "smart tags".

The program checks for the number of SMS Gateway credits available, and if the number drops below a specified number, it generates an e-mail to the SMS Gateway provider asking for additional credits, providing all necessary payment details. Actually the program interacts with the SMS Gateway, pulling all the information needed: credits spent, credits remaining, number of messages sent, etc.

Finally, since we have lists of people in the database, we modified the program to be used as contact management as well, and I have added an option to send e-mails instead of SMS messages. In the end we have a program which can send message information to recipients in different ways.

Imagine if there is a large fire and they need to inform in shortest possible time as many off-duty fire fighters as possible? Using a mobile phone it can take some time, whereas using this Access program they can send one or hundreds of messages in just a couple of seconds.

02 June 2008

Shonky Operator

Beware of Roger Hamilton and XL Results Foundation

I recently received an invitation to a presentation in Wellington by Roger Hamilton from XL Results Foundation.

The topics of the meeting included personal profiling, wealth creation, and business success.  I figure I always have something to learn.

He does this all around the world.

I attended the evening event, and also the follow-up breakfast meeting the following morning.  What I witnessed was quite disturbing - to the extent that I am moved to comment on it, as well as to alert the organisation that promoted it to me.

Roger Hamilton is an interesting and entertaining presenter.  Give credit where credit is due.  He is a clever guy, he shared some good ideas, and I learnt something for sure.

However, his core purpose is not to inform.  The whole thing is a sales process.

Well, in business there's sales and there's sales.  I am not qualified to comment on legalities, but I am surprised that what he is doing does not cross over the boundary into being classified in New Zealand as an illegal pyramid scheme.

Either way, he certainly crosses the boundary of ethics and honesty, very skillfully using psychological techniques to deceive and manipulate.

As a result, I saw a large number of people part with a large amount of money, for a product which is not worth a small fraction of what they paid, in response to vague and misleading information and straight out lies.

Sure, they signed their names voluntarily, and people have a right to make their own impulsive decisions, and to pay money without doing due diligence if they so choose.  So that's all accepted.

But it's still a nasty scam.

In researching about it afterwards, I found a number of web sites and blogs where others have similar concerns.  On one of those, the author asks "How you feel when you hear about people being swindled in the same way - do you let it happen, ignore or speak out?"  I think I will speak out at any opportunity.

Having said that, I need to try and be succinct.  So, what was for sale? Life Membership of Mr Hamilton's little club.  What is the price? $NZ14,500 per person if paid on the spot, or $NZ17,500 if paid in instalments over 12 months.  Is there an opportunity to review any hard information before making a commitment?  No.

Here's a brief overview of the sales process:

  • The man with the gift of the gab gets everyone real hyped up.
  • Those who "resonate" with the hype have to fill in the application form.
  • After that you get told the price.
  • After that, you compete to be one of the 5 who will be accepted (except that after the first 5, they keep accepting people anyway - there were 10 who took the plunge when I was there).
  • After that, you have to give your credit card details, and sign the form which states no refunds.
  • After that, you get some specific details about what you get for the money.

Well, that last point is a tad unfair, I admit.  During the course of the talk, you do get some snippets of information, in very emotive and general terms, about Life Membership.  But certainly not enough to base a rational decision on.

Pretty much what it comes down to is:

  • Subscription to a monthly magazine - lots of advertising and the occasional interesting article.
  • Potential benefits of social networking with other members. Sort of like a private LinkedIn.
  • The opportunity to contribute to charities, in some undefined way.
  • An income opportunity by getting a percentage cut of the membership fee of people you refer (this was not mentioned at the meeting, I found out about it later).
  • Attendance at a whiz-bang function.
  • Access to life/business coaching.

$14,500??  C'mon!

On the face of it, the coaching aspect sounds like the most meaty of the offerings.  But then, if I'm going to get coaching, I need to find a coach I can "click" with.

I have no idea, of course, about any of the coaches within that organisation.  There was one of them at the meeting I attended, and I sure wouldn't have "clicked" with him.

But you would have to assume that the coaches are all people who at some stage have been through the same process I observed.  That means they are not representative.  It means they are people who are able to be swayed by excitement.  It means they are people who have demonstrated their willingness to invest large amounts of cash without proper consideration.  It means they do not have a well-developed ability to detect unethical behaviour.  It means they are not for me.

So that's the value for money aspect.  But in the end, it is primarily the snake-oil tactics that I am upset about.

Something just really got to me about this.  Because I saw it first-hand, I suppose.  It was certainly amazing to see the vulnerability of some folks, and to reinforce my belief in the concept of consumer protection.

Which is simply my point... Watch out!