Looking for a SAS job or wanting to promote your SAS recruitment agency?

I’ve recently opened up new opportunities for two groups of registered members:

  • Recruiters wanting to promote their agencies.
  • SAS programmers looking for their next SAS job.

All of the forums in [Holland Numerics: Blog and Forums] now allow messages to be sent by registered members directly and privately to anyone posting a topic in a forum. This means that, if you post a new topic in the SAS Skills Discussion Forum (which is accessible to all registered members) describing your recruitment agency, or your own SAS programming skills, other registered members will be able to send you messages. The facility also removes the necessity to reveal your phone number or email address to anyone you don’t need to, as the messages will be collected on the blog site, and you will be notified by email of new messages there, and any forum topic will display a list of your own messages at the bottom of the web page.

However, please think carefully about what you include in your topic, as your agency profile, or your SAS job prospects, could be positively or negatively affected by what you write!

Note that there may also be a delay in the topic appearing if you are writing your first topic in the forum, as I will have to approve it. This is intended to protect you from spam postings. But as soon as it is visible to all registered members, then a [Send a Message] link will be seen in the topic under your name.

New app updates available in Google Play and Amazon Appstore

Android 8.0 is coming very soon, so I have started preparing my apps for this new platform, while still maintaining the same functionality for Android versions back to 2.3.3 (Gingerbread). However, I will not be further updating my Chrome apps, as the Chrome Web Store has stopped accepting new apps, and is likely to stop hosting existing apps soon too.

The first paid-for app to be updated for Android 8.0, including 6 more questions, is:

and the 2 free apps, including samples from the other apps:

Update to more of my Android apps will follow shortly.

This is quick reminder that I still have the following apps available in Google Play:

  • Data Steps: Do This in SAS?
  • SQL: Do This in SAS?
  • Graphs: Do This in SAS?
  • Platforms: Do This in SAS?
  • EG: Do This in SAS?
  • Macros: Do This in SAS?
  • Efficiency: Do This in SAS?
  • Studio: Do This in SAS?

These apps are also available for Android users in the Amazon Appstore:

  • Data Steps: How Do You Do This in SAS?
  • SQL: How Do You Do This in SAS?
  • Graphs: How Do You Do This in SAS?
  • Platforms: How Do You Do This in SAS?
  • EG: How Do You Do This in SAS?
  • Macros: How Do You Do This in SAS?
  • Efficiency: How Do You Do This in SAS?
  • Studio: How Do You Do This in SAS?

There are also free apps, which you can find by searching in each app store:

  • How Do You Do This in SAS? (Google Play and Amazon Appstore)
  • Consulting: Do This in SAS? (Google Play)
  • Consulting: How Do You Do This in SAS? (Amazon Appstore)

All these apps are updated frequently, and the paid-for apps are priced at less than US$3 based on the number of questions that are answered, and within the apps you can ask new questions that can be added in future updates. It doesn’t matter which platform you use, as the same content is present in the corresponding Google Play and Amazon Appstore apps.

Non-SAS Debugging That Uses My Preferred SAS Debugging Techniques

The morale of this story is that, once you have proved all the likely reasons for the failure are incorrect, the only remaining reason, however improbable, is the cause!

Note that, as you are reading this post, the problem described below has definitely been resolved!

Over the last few weeks I have been trying to configure my new Linux server to include RAID1 (mirrored) drives, but, while it should only have caused brief service outages for reboots, some of the down times have been rather too long. I have now decided to implement regular copies of the drives instead.

The most recent outage was somewhat baffling, as my attempt to include the RAID1 drives had failed again, but I’d followed my well-practised back out procedure. Unfortunately the server hardware appeared to be up and running, I could access both servers on the device using local IP addresses, but only one, the Apache server and not the WordPress server, using the hollandnumerics.org.uk web address.

A systematic approach to resolving the problem would be needed:

  1. Check the server monitors to make sure the software was running:
    • Both servers were running.
      • The problem was not a failure to start the server software on reboot.
  2. Open the web pages for each server using their local IP addresses:
    • The web pages for both servers opened.
      • Both servers were up and accepting connections.
  3. Open the web pages for each server using their web addresses:
    • The Apache server pages opened, but the WordPress server pages timed out.
      • Maybe a problem with the WordPress port?
  4. Check the WordPress server access log for my attempts to open web pages:
    • Only local addresses were recorded as connecting to WordPress.
      • Maybe a problem with the WordPress port in the router?
  5. Check the event log on the router:
    • All connections to the WordPress port are being blocked.
      • Maybe a fault in the Port Forwarding configuration in the router?
  6. Check the Port Forwarding configuration in the router:
    • All expected entries present.
      • Maybe a fault has developed in the supplied entry used with the WordPress port?
  7. Replace the supplied WordPress entry with a user-modified copy of the working Apache entry, and then open web pages for the WordPress server using their web addresses:
    • The web pages for the WordPress server opened successfully.
      • Problem resolved!

The key actions used to resolve this problem have much in common with those actions listed in my post “How Do You Successfully Debug Your Program?“:

  • Work through the problem testing systematically:
    • Make changes one at a time to be certain you know which one fixes the problem, and also allows you to back out the update if it doesn’t.
    • Test after each change.
    • Review the results from every test.
  • Consider the likely and the unlikely causes of the problem.
  • Most importantly: Read the logs!