This morning I received an invitation from a colleague asking me to pickup some files from DropBox. I wasn’t expecting anything so I wrote a quick email asking whether the invitation was legitimate. It wasn’t and, worse, my colleague’s office computer had been compromised with disastrous results.

The Dropbox phishing scam has been around for a while. Symantec reported it in 2014 and more recently Denise Sullivan wrote about it on Cloudwards. The problem is pernicious and we recommend everyone review the DropBox Help Center article “How can I stay protected from phishing and malware”.dropbox company logo

Bottom line: be careful with incoming email. If you are not a “techie” call your local computer store or company “help desk” for assistance and advice.

Extreme weather with heavy rain across California is effecting many businesses. Mophilly is not exempt. While our critical services are unlikely to be affected, there is a chance that outages will occur.

If you encounter a problem connecting with any of our services over the next few days, please contact the office by telephone, +1 619 296 0114.

Current information is available at reports rain and snow in California

The FCC has proposed new so-called “net neutrality” rules for internet access that may drive the cost of access out of range for small businesses and entrepreneurs. Individuals and many active businesses are able to be competitive due to

Read More
San Diego, CA based Save-a-Life Educators called upon Mophilly Technology, Inc for the third time to re-engineer their online training and service offerings.
Vicki Igou, CEO of Save-A-Life Educators, Inc. has always been passionate about empowering people to feel confident to Save A Life. The company motto is “The Best CPR, AED, & First-Aid Training in San Diego”, which is backed up with Ms. Igou’s many years of experience as a fire fighter, first responder and exemplary customer service.
Save-A-Life delivers high quality health and safety education and training, while empowering students to deal with emergency situations with safety and confidence.
In 2002, Ms. Igou approached Mophilly when they needed custom software tailored to fit their business needs exactly. The result was a ground breaking online video training system for the web.
Read More

There’s a lot of debate out there on the “best” way to manage a custom software project. Just Google “Waterfall and Agile” – there are over 2.2 million search results. In case you aren’t savvy to Project Management (PM) lingo, and I wouldn’t blame you if you aren’t, Waterfall and Agile are two popular styles of PM.

Waterfall is the “old school” style where each phase of the project doesn’t start until the previous one has been signed off by the client – like water flowing downhill over a series of waterfalls.

Agile is the latest PM craze because it provides a lot more flexibility for gung-ho developers in a creative process by building in frequent build & review cycles with the client. Designing and building custom software is a creative process, even though it isn’t generally recognized as such, but that’s a post for another time.

Both methodologies have been successful. People want to know which method to use for their project, and the answer is… it depends.

The Method Isn’t Going To Manage The Project For You

However, even once you’ve evaluated how involved your client is willing to be, what your team’s preference and working styles are, the type and scope of the project, and defined your end goal, neither one of these PM methodologies will guarantee success.

waterfalls-5Even though WaterfallPM can provide tight control over your project, you can still get into trouble with scope changes. As time goes on, the client’s needs can change. Adding in features or making major direction changes mid-point can cause the project to nosedive.

One of two scenarios often happen with Waterfall PM.

  • The project leads follow the standard change request process and determine the changes are going to come with a new, often larger price tag. Because the entire project has been planned out in advance, these changes can have major impacts. Clients can balk at increased costs, and entire projects can be compromised or even killed.
  • The project leads agree to take on the new changes but don’t follow the standard change request process. This can happen in the hopes of preserving the client relationship and the project by avoiding the uncomfortable conversation of cost increases. This can lead to diminished profit margins – or even put the development team in the hole.

A highly skilled Project Manager knows how to navigate these pitfalls, and the best will be able to see these changes coming ahead of time, allowing for conversations earlier on (and with less expensive impact).

In contrast, the flexibility of Agile development is very appealing to many experienced developers. However, it isn’t well suited to every type of project.

  • Agile projects are notorious for a lack of solid documentation. The quick pace and frequent changes can lead to outdated process documents, user manuals, and even client communications. Adequate PM can require a tight control over information flow.
  • If the end product is already well defined with very small chances of the client’s needs changing, then the frequent client feedback cycles can be time consuming and unnecessary demands on the client’s time.


PM methodologies are intended to make your life easier, but you still have to do the work. An experienced Project Manager will craft the right balance of current documentation alongside short build & feedback cycles, and can identify ways to keep the client’s interaction to a minimum. An effective manager also communicates well with the development team, fostering a high level of understanding among team members and stakeholders.

Achieving Project Success

In short, success comes more from a competent, supportive, and proactive Project Manager who utilizes whatever method is chosen in an efficient and effective manner than from the methodology chosen.

That’s why utilizing the right PM person is still the most important approach to take.

Decatur, GA based Avondale Software has recently engaged Mophilly Technology, Inc to provide marketing, technical support and consulting, and management services.

Owned by Charles “Chuck” Martin, Avondale Software offers The Ombudsman, a Social Security and Disability Claims Case Management system.

When Chuck’s busy Social Security disability practice overwhelmed his paper systems in the late 1980s, he built his own software. Since then The Ombudsman has grown into a Practice Management solution for Mac, Windows, and mixed offices. Customers range from small offices to those with 100 or more analysts.

Why did Mr. Martin name it ‘The Ombudsman’? Chuck explains by saying “an Ombudsman is a troubleshooter who solves any kind of problem.” As a determined troubleshooter himself, the software design and workflow is perfectly matched to the demands claims processors face every day.

The services Mophilly is providing include Business Process Consulting & Management, plus advanced technical support for Cloud Services, Postgres database administration and management, and client support.

Mophilly is utilizing the best online services to improve Avondale’s business processes, with the goal of minimizing time spent managing business operations, increasing customer service and satisfaction, and build processes to support a scalable and sustainable solution.


Mophilly offers innovative solutions that will help you manage your business more effectively in less time, support your workforce, or use the latest technology to make your online or brick and mortar business more secure.

If you’d like to learn more about how moving your business into the cloud can benefit you, or if you’re interested in utilizing online services for business process management, contact Mophilly today.

Mophilly’s own Walter Venable founded the Asheville iOS Developers meetup group.

Walter created this group to meet others in the local iOS development community and to provide a forum to trade tips, tricks, and lessons learned.

Everyone is welcome to this meetup:

  • Experienced iOS programmers
  • Developers just sticking their toes into Xcode
  • Graphics folks doing interface design for apps
  • Those curious what it takes to develop an app for their business

At the September 10, 2013 meeting, Rob Banker will discuss how to conduct a successful Beta test of your iOS software using the TestFlight system.

While in-house QA testing is an absolute necessity, getting real time feedback from your customers can mean the difference between software that languishes in the App Store and high quality software that people want to buy.

Rob is a software industry veteran focusing his time these days as a freelance mobile software designer, architect, and developer.

Want to join us? Then come to Charlotte Street Computer at 3:00pm on Tuesday, September 10. Don’t forget to RSVP on the Meetup page. You’ll find location details there, too.

Part of every meeting will be set aside for discussion of individual projects, please bring your laptop and show us what you’re working on!

For mobile developers who want to stay in the industry long-term, it’s essential to look ahead at where new business will be coming from. Beyond just seeking out the next client, savvy developers will position themselves ahead of the market.

Enterprise is Going Mobile

A big trend for mobile developers is building mobile applications for enterprise solutions.

This may mean designing new solutions from the ground up, or it may just involve redesigning existing software to be accessible for mobile users.

There are new opportunities to bring companies’ products to the mobile space, but there are also many opportunities to focus on B2B (Biz2Biz) and B2E (Biz2Employee) mobile apps.

Bring It To The Tablet

New and existing smartphone apps are more commonly being adapted for optimal tablet use, as well.

With larger screens than a phone and more intuitive interfaces than laptops, designing for tablets has its own challenges. Creative and innovative designs are optimizing the user experience.


Mophilly offers innovative mobile solutions that will help you manage your business more effectively in less time, support your workforce, or use the latest technology to make your online or brick and mortar business more secure.

Contact us today to learn how you can improve your business by going mobile.

A colleague, Alain Stouder of Smartway, shared a link to an interesting article by Bret Victor, “A Brief Rant On the Future Of Interactive Design“. The article intends to make us think about our tools and what technology might become to better serve our needs. As I read I got to thinking about the work of Edward Tufte and Don Norman. Sure enough, the rant included links to other articles by Bret Victor that references Tufte in an article or two, and I have little doubt that Dr. Norman’s work is represented as well. Here are two more of Mr. Victor’s articles.

Magic Ink – Information Software and the Graphical Interface

Explorable Explanations

As we develop new solutions and extend older systems for mobile computing, questions about what goes where and how to get there loom large like dark foreboding clouds. Information needs to be dense and attractive to be useful. Tablets are clearly superior to small devices like phones but are still very constrained. This begs the question of what goes with a tablet to make it truly useful.

Samuel Beckett's Notebook
Samuel Beckett’s Notebook

There is a real challenge in designing the user experience in a small space. Putting a mobile device on a truck is old hat today. It works precisely because each delivery is neatly contained on single page, even when it is rather long. The format is well suited for the task. This application appears to translate well to other scenarios but as we all know the details are key. One critical threshold will be the amount of data the human needs to complete the task.

For example, software development would be difficult on a tablet. Not only the visual area but the interface. Hand gestures are very cool but can become tiresome. Building a sophisticated application requires a lot of typing. So much that the comparison to the author of literature is still valid. In my own engineering work I use two large monitors and have considered a third, not to mention the white board and paper notes. It is a challenge to conceive of better tools to describe logic for a machine… but there must be a way.

One could argue task decomposition will support smaller interfaces, but the big deal is the density of data and the need  to present trends and summations in context of more detailed data. The needs of an accountant may be more than a device the size of a Steno Pad can support.

Walter Venable noted that it is worth comparing the current Apple mobile device information displays to that of the original Macintosh.

iPad, iPhone and the Mac 128k
iPad, iPhone and the Mac 128k

The first Mac computers featured a one-bit black-and-white, 9 in (23 cm) CRT with a resolution of 512×342 (175k) pixels, displayed at 72 pixels/inch (nominal). Thus it renders 175k x 1 bit = 22kB of display information. The recently-released iPhone 5 has a full color 4 in (10 cm) LCD screen with a resolution of 1,136 × 640 (727k) pixels, displayed at 326 pixels/inch, rendering 21.9k x 24 bit = 2.2MB of display information. The 3rd-generation iPad has a has a full color 9.7 in (24.6 cm) LCD screen with a resolution of 2,048 by 1,536 (3,145k) pixels, displayed at 264 pixels/inch, rendering 3,145k x 24 bit = 9.4MB of display information.

So compared to the original Mac, the iPhone5 has 20% of the screen area, 4x the displayed pixels, and 100x the displayed information. Likewise, the 3rd-generation iPad has slightly more screen area, 20x the displayed pixels, and 400x the displayed information.

Now, you may say, just because you have more pixels and more color depth doesn’t mean you can display more text. There’s a limit to how small you can see and also color depth does not translate into more screen real estate. But this doesn’t mean the power to display information isn’t there, it just means that if you want to show properties of large data sets, you have to be more clever about it than just displaying text.

To get full use of the available information display for text, you can use two-finger zooming to quickly go to a place in the display of interest. But as any Mobile Safari user will know, this technique is much more useful in properly-designed graphical displays rather than a page of text, because it doesn’t zoom in on the sentence around the word in the center of the view field, but rather on the rectangular area of the display that would be represented by cutting a rectangle out of a printout of the screen. How 1980’s! The challenge is how to provide useful information about database contents while avoiding text-based presentations.

There is a PHP error message so common that the web-o-sphere is littered with literally thousands of posts asking what it means. Dozens of WordPress plugins are affected as well as untold numbers of other applications written in PHP. I encountered this error in PHP apps so often that I have avoided PHP with almost a religious fervor. Today I think I understand the problem.

The PHP user base is constantly asking what these error/alert/notices mean. By and large these questions go unanswered. That indicates an unhealthy state of affairs for the end user. I have read many posts in the PHP community that say turning off the error display is an acceptable way to deal with these errors. I disagree.

Suppression of known faults is not a wise development practice. It leads to obscure problems that are hard to diagnose. It is worthwhile to add a little bit of code that does away with the notices while in debug or system configuration mode. Proper operation with error display enabled confirms that the application code is correctly dealing with environment state.

Here is a simple way to handle the condition in a deterministic manner. For the non-technical reader, please accept my apologies for the geek speak. For the technoids, I have tested this here with success. Your mileage may vary so check with your mechanic if something is less than perfect when you try it.

The Setup
WordPress 3.4.1 running on Apache 2 and Centos 5.
Any and all other plugins are deactivated

By the way, deactivating everything except the new plugin, or whatever, is highly recommended for installing any third party components in anything anywhere.

The Problem
Install something new via WordPress “Add new plugin” install feature. When you activate it WordPress reports “The plugin generated XXX characters of unexpected output during activation. If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.
Now there is a truly beneficent message. I wish the US Congress came with a warning like that. In WordPress, this means the program code did not load properly.

If the web site has the PHP error display feature enabled you are treated to the ever popular “undefined index” error in the top part of the web page:
Notice: Undefined index: GoThinGee in .../wp-content/plugins/wp-asaet/wp_amazingly_simple_and_easy_thingee.php on line XXX

Take a peek at the line mentioned in the error message; you are likely to find a snippet of code that looks something like this: if($_POST['GoThinGee']). “$_POST” is an array inside an IF statement. In most cases, the array will have stuff in it, including the value named “GoThinGee”. In the case we are looking at today the array is utterly empty and the error is that the index “GoThinGee” is not part of the array.

It only happens when the application is loaded. This can be considered a “threshold” or “initial state” problem.

The Solution
Adding a bit of defensive code to create a known state in the app environment is all that is needed to avoid the “undefined index” condition. This accomplished by assuring that the array $_POST has a set of index names with reasonable values.

In most applications, it is best to use a human readable value such as the string literal “undefined” to initialize the array. However, the application we used for this article has a large body of existing code that assumes a valid array of empty strings. Using a human readable term such as “undefined” would require changing a great deal of the existing code. For this reason, the initialization value is a pair of single quotes.

This extra code must be added prior to any evaluation of the array $_POST.

// August 20, 2012, mophilly; set default values to stop undefined index errors.
$default_string = '';
$_POST['GoThinGee'] = $default_string;

What this bit of PHP code does is add an index named “GoThinGee” if it does not exist. The new index is initialized with the value of $default_string.

I hope this helps someone.

Jacques Zemron will demonstrate the Molu Software Update service to the French Omnis Developers meeting under way today and tomorrow. Molu Software Update is a web service that provides quick and timely updates of applications written in Omnis Studio from TigerLogic. The service enables the applications to add and update code, database and related files, as well as providing the developer with end user access control.

TigerLogic is presenting the newest tools and features of the Omnis Studio 5.2 application development suite to the group. A major feature of this presentation is the new jsClient tools, which allows developers to build new application for all HTML5 capable devices. jsClient opens the mobile world to Omnis-based applications and provides a competitive edge for new and current developers.

Here is a link to an interesting article about Code Inspections.

Basically, the idea behind it is that you would take a random subset of specifications (usually about 5%) and have a team of 2-5 inspectors that were qualified to review the article and that would give a figure of the overall errors in the document.

Agile SQC Process

Entry Conditions

• A group of two, or more, suitable people* to carry out Agile SQC is assembled in a meeting.

• The people have sufficient time to complete an Agile SQC. Total Elapsed Time: 30 to 60 minutes.

• There is a trained SQC team leader at the meeting to manage the process.


P1: Identify Checkers: Two people, maybe more, should be identified to carry out the checking.

P2: Select Rules: The group identifies about three rules to use for checking the specification. (My favorites are clarity (‘clear enough to test’), unambiguous (‘to the intended readership’) and completeness (‘compared to sources’). For requirements, I also use ‘no optional design’.)

P3: Choose Sample(s): The group then selects sample(s) of about one ‘logical’ page in length (300 non-commentary words). Choosing such a page at random can add credibility – so long as it is representative of the content that is subject to quality control. The group should decide whether all the checkers should use the same sample, or whether different samples are more appropriate.

P4: Instruct Checkers: The SQC team leader briefly instructs the checkers about the rules, the checking time, and how to document any defects, and then determine if they are major defects (majors).

P5: Check Sample: The checkers use between 10 and 30 minutes to check their sample against the selected rules. Each checker should ‘mark up’ their copy of the document as they check (underlining issues, and classifying them as ‘major’ or not). At the end of checking, each checker should count the number of ‘possible majors’ (spec defects, rule violations) they have found in their page.

P6: Report Results: The checkers each report to the group their number of ‘possible majors.’ Each checker determines their number of majors, and reports it.

P7: Analyze Results: The SQC team leader extrapolates from the findings the number of majors in a single page (about 6 times** the most majors found by a single person, or alternatively 3 times the unique majors found by a 2 to 4 person team). This gives the major-defect density estimate. If using more than one sample, you should average the densities found by the group in different pages. The SQC team leader then multiplies the ‘average major defects per page density’ by the ‘total number of pages’ to get the ‘total number of major defects in the specification’ (for dramatic effect!).

P8: Decide Action: If the number of majors per page found is a large one (ten majors or more), then there is little point in the group doing anything, except determining how they are going to get someone to write the specification ‘properly’, meaning to an acceptable exit level. There is no economic point in looking at the other pages to find ‘all the defects’, or correcting the majors already found. There are simply too many majors not found.

P9: Suggest Cause: The team then chooses any major defect and thinks for a minute why it happened. Then the team agrees a short sentence, or better still a few words, to capture their verdict.

Exit Conditions

Exit if less than 5 majors per page extrapolated total density, or if an action plan to ‘rewrite’ the specification has been agreed.


* A suitable person is anyone, who can correctly interpret the rules and the concept of ‘major’.

** Concerning the factor of multiplying by ‘6 ‘: We have found by experience (Gilb and Graham 1993: reported by Bernard) that the total unique defects found by a team is approximately twice that of the number found by the person who finds the most defects in the team. We also find that inexperienced teams using Agile SQC seem to have about one third effectiveness in identifying the major defects that are actually there. So 2 x 3 = 6 is the factor we use (Or 3 x the number of unique majors found by the entire team).


Alan has been working hard on upgrading his application to Omnis Studio v5, which is all unicode. Part of this effort is to update the Omnis Data Bridge Administration Tool to support Mac OS X Lion.

You can download the latest by logging onto the issue tracker. Once there, set the Project Selector to the ODB Admin Tool project, and click on Docs.

Add comments and questions to issue 2474. Add new issues for bugs and feature request.

This is a community project. If you use the ODB Admin Tool, please contribute fixes, features and documentation so everyone benefits.

The ODB Admin Tool is a software module for applications based on the Omnis Studio development kit. It provides a tidy user experience for those using the built-in Omnis database technology in a multi-user setting. The project is open source, but development is privately managed.

In the past we asked developers to pay US$300 if they deployed it. Over time it became clear that the requirement wasn’t adding value, so we have dropped that policy. We now encourage developers to find ways to contribute regardless of how you use it. This may be new code, a bug fix or two, documentation improvement, or even a donation of money to offset the server expenses.

Significant contributors include Alan Schmidt of Bottom Line Software, and Michael Mantowski of ClientTrax. Alan drove the initial development, and Michael recently added support for Windows platform.

Omnis developers are welcome to join the project. Please submit a request using our <a href=””>contact us</a> page.

Have a look at what our clients have to say.