Warning: A non-numeric value encountered in /home/ingenui5/public_html/wp-content/themes/Builder-Cohen/lib/builder-core/lib/layout-engine/modules/class-layout-module.php on line 505

Author Archive for srmalpass

Is Google trying to sell you a bill of goods?

Sometimes I use Google Chrome because a website tells me their content displays better in that browser.

When you need to download a file using Google Chrome, the default is to show a link to the download on the bottom of the browser window.  Clicking on that link does not take you directly to the file, but passes you through code in the browser that checks to see if you have software installed on your computer to handle the file type.  If it happens to be a zip file, you may be out of luck, because there are still proprietary programs out there to handle zip files, although Windows is perfectly able to open them for you.  Google chrome may very well tell you that the file cannot be handled and you need to buy a software package.  Don’t be discouraged.  You can circumvent this behavior by changing the settings on your Chrome browser.

Look for the menu which is symbolized by three dots on the upper right hand corner of your browser.  Scroll down to Settings.  Click on that, then scroll down to “Advanced”.  When you click on the Advanced settings, scroll down to the Downloads option.  Downloads lets you turn on an option for you to specify the location of where to store your downloads.  When you turn this option ON, you should be able to use your Windows File explorer to find your downloaded zip file and Windows will open it for you

It’s faster if you write the code

I am often faced with a decision to make:  Should I modify the spreadsheet to separate out merged fields or should I leave the spreadsheet as-is and write the code to do the separation?

Here’s an example:  The Need Date is already separated; now I need to separate the number in parentheses from the full name of the client.     *Names have been changed to protect the innocent.

If I use the Text to Columns tool of Excel, look what happens to Chuck.  His name spills into the next column!

And Chuck isn’t the only person with right parentheses in his name.  The numbers in the first column will all have to be stripped of the left paren, and the names that got split will have to be re-merged. With over 500 names in the file, this isn’t really something I want to do every time I get a new copy of the file.

Instead I use the file as-is and write code to separate the number and name.  This data will be input to a program that matches names from a custom report of another database with names in this file.

This is easy using the string module of Python. I separate the number by finding the index of the first right paren then slice the field starting at the index of the first digit (1) to the index of the first right paren. What remains is the name which is sliced from the index of the first right paren plus 2 (skipping the blank) all the way to the end of the string.  The name is converted to all lowercase and stored, and the match indicator is set to ‘no’

And here’s what I end up with.  Note that I convert the names to all lower-case, and will do the same with the names in the custom report so a match won’t fail because of mis-matched case.

If you’re still struggling with excel tools to manage your data, contact me to discuss the time-saving advantages of using custom software instead.


Are your quarterly reports ready to shine?

Your database is more than a storage closet.  Properly maintained, it can be a treasure trove for your business. It not only records what you have done In the past, but can be an invaluable aid in demonstrating the value of the work you have done and are capable of doing.  Hopefully your database offers reports that fulfill this purpose.

If you’re dissatisfied with the reports you are able to produce from your database, chances are some combination of reports will more clearly describe what it is you want to demonstrate.

Maybe you need to compute a data point that is not stored in your database, but can be derived from that data.  Do you find yourself with an open spreadsheet and a calculator adding data points to that spreadsheet?

But combining reports and computing extra data points often requires hours of tinkering with two or more sets of data.  You don’t have time to do this every time that report is due, and you know that you’re not always satisfied that you came up with accurate results.  Should you get somebody else to do the work?  Can’t afford to pay someone for all those hours?  Can’t trust volunteers to do it right?

What if you could get your computer to do all the tinkering, so all you have to do is extract the base data sets, and your computer does the rest?  A computer program could process the data and produce a final report in the proverbial “wink of an eye”.  Well, that’s why some experts would say everybody needs to know how to code.

My studied opinion is that: no, not everybody should learn how to code.  Once trained, it’s easy to write code, but also easy to make mistakes if your attention span is less than infinite or undivided attention to details is not your forte’.

Everybody who needs to produce reports from raw data should know someone who knows how to code.  That’s why I’m introducing myself as a person who has been intimately familiar with computers and programming for many years.  Ingenuity Computer Consultants will refine your data to create the enhanced reports that will improve your business performance.   We can deliver custom programs that generate accurate and timely reports using multiple data sources.  We can study your available resources and come up with solutions to the reporting problems that keep you up at night.

Contact me

How can I demonstrate the progress of my clients?

You want to show the success you have had with the work you do for your clients, but your CMS doesn’t have a place to store a history of the measuring points which would demonstrate this progress.

For example, if you are a Housing counseling agency, you must submit quarterly client data to HUD.  HUD has expressed interest in knowing how a client’s credit score has improved because of counseling.  You have saved the beginning credit score in your CMS.  If you pull another credit report and save the new credit score, replacing the first one, the history is lost—OR IS IT?  Probably not.

Quarterly submission of client data to HUD (which includes the client’s credit score) is saved by your CMS.  That means the history of your client’s measurable progress in quarterly steps is available for your analysis.  Other parameters of interest available in HUD submission history are:  Monthly Household Debt, Monthly Household Income, Total counseling sessions duration and AMI level.

You need to analyze identical spreadsheet data from multiple time periods

What’s the easiest way to analyze data from multiple spreadsheets?  MERGE THE DATA (concatenate the files), sort the merged data on the date of service, then sort the new file on Last Name , or Client ID.  (Using Client ID will eliminate errors arising from a name change or multiple clients with the same last name during the time periods.)  You can now observe changes in parameters over time for each client.  If you can identify what constitutes a positive change, communicate this to your resident programmer so the merged file can be used as source data for a report which can demonstrate positive outcomes (numbers of, dimensions of, cost of, savings of…).  Imagine the usefulness of such a data-backed report as ammunition for your upcoming grant-writing efforts.

You need to merge data from diverse spreadsheets

Find a common key (such as Name), then call the Programmer.  A custom program can be written in about the same amount of time it would take to manually merge the desired data into one spreadsheet.  The program runs in a fraction of the time and is then available to run every time the merge operation is required, making a tedious, time-consuming task unnecessary.  This type of merged information is invaluable when you find you need to synchronize information from multiple databases (e.g. for audit purposes), or using multiple reports from a single database (e.g. for time-based billing vouchers).

You don’t have a resident programmer?
Contact Me
.  I’m available to examine the types of data you need for your reports, the data that’s available in your database(s), and come up with a solution that satisfies.

The fastest way to rearrange columns on a spreadsheet

It isn’t cut and paste. It isn’t even drag and drop.  And here’s one that Microsoft tutorials won’t tell you:  insert a blank row above the headers of your spreadsheet and assign each column a number representing the order the columns need to appear on the revised spreadsheet, and then sort the entire spreadsheet by row (left to right).  Finally, delete the row you inserted. Depending on the number of columns you’re sorting, this may be the easiest.  However, if you have a 40-column spreadsheet, and they’re all out of order, and you have to do the same sorting task once a month, you should consider getting a custom program that reads the spreadsheet of the month, and then rewrites it in the correct order.  After the custom program has been written and tested, this is the fastest solution.

This is What I can Do – some examples of problems I have solved

  1. IBM Federal Systems Division


As a Senior Associate Programmer working on a secret spy satellite program (long since declassified), I was assigned the task of taking over the program which processed telemetry from the Star Sensor (Orientation of the satellite was determined using navigation by the stars).  I was told there were two main problems with the program which had been coded in the Fortran Language.  1. It was taking too long to achieve “lock” (identify a known sequence of “bright” stars based on date and time of day, and 2. It lost “lock” whenever the sun was in view of the star sensor.  The first problem was easy.  Management thought that by recoding the program in Assembler Language it would run faster.  Actually, the Fortran compiler produces code which is optimized for speed.

What I immediately saw was that a simple iterative process of adding a set of brightness values together until the sum matched the brightness of the brightest star in the field of interest was executed over and over again, bumping the starting index by one then adding all the subsequent readings until the reading just past the previous set was added.  Obviously (to me, anyway), the new sum could be achieved simply by subtracting the value at the previous first index from the previous sum, then adding the value at the next end index.  This would reduce the number of additions required to process one telemetry buffer by a factor of 25 to 1.  I recoded this part of the program in Assembler Language using the revised logic, and lo, the problem with taking too long to achieve “lock” went away.

The managers were still scratching their heads about the problem with losing lock every day when the Sun came into view.  Rumor had it that there was a “sun filter” which would supposedly handle the problem, but nobody could figure out why it wasn’t working.  I took the initiative to research the documentation provided by the Hardware Engineering Group, and although this reading can be very dry and non-interesting, I came across an appendix which listed all the possible commands which could be sent to the satellite.  Listed among these commands was one called “deploy sun filter”.

Following the sage advice of Grace Hopper1, I found the place in the Star program where it was recognized that the Sun was in view of the star sensor.  I coded the instructions which would cause the magic command to be sent to the Satellite, three days later, I was hunted down by the Program’s Chief Scientist who exclaimed that the satellite had been in continuous lock for three days, now, and he just had to meet the person who had ingeniously solved the problem with the Sun causing the satellite to lose lock.

  1. Grace Hopper famously advised her programmers: “it’s always easier to apologize than to ask permission”.
  2. Community Housing Resource Center (CHRC)


CHRC is a HUD-certified non-profit housing counseling center which relies on government grants and donations from private enterprises (banks, real estate businesses) which can profit from their services.  In order to be eligible for government grant money, the center must have HUD-Certified counselors to do the counseling. In order to collect the government funds, reporting of counseling activities and detailed information about each client case must be provided in a timely manner.

The counselors record information in the HUD-approved Client Management System (CMS) each time they meet a client or do work on behalf of the client.  The collection (extraction) and reporting of this data takes time away from the counselors.  The reporting is done via computer records, which requires a technically-educated person with the ability to speak Computer.

When I started at CHRC, I observed that the current state of the Housing Counselor Online (HCO) CMS admin account indicated a need for closer attention being paid to program updates, and data reporting requirements.  The counselors had been tasked with copying information about each Foreclosure Prevention client onto a 40-column spreadsheet whenever a new case was opened, then again when the case was closed.  At the end of each month, this spreadsheet was sent to the parent organization Washington State Housing Finance Commission (WSHFC) as a billing voucher.  WSHFC, in turn, uploaded the spreadsheet to the Neighborworks organization which was in charge of administering the National Foreclosure Mitigation Counseling (NFMC) program financed by HUD

I was astounded that no effort had been made to simply extract the information from the database, observing that a subset of the information was not currently recordable in that database.  I also noted that the HCO introductory log-in page referred to an update which would include the extra data, but it requested a modification to the set-up portion of the administrator’s account.  I took the initiative to make the required modification, then proceeded to fill in the extra data using the client’s paper files.

The HCO program then made available every parameter needed for the spreadsheet through an extraction process.  The HCO development team did not, however, deem it necessary to present the extracted data in the order defined by the NFMC reporting requirements document, since the NFMC was expecting the data to be uploaded to them as a CSV (comma separated variables) file, which does not require column-specific placement of the data.  CHRC was required by WSHFC to use the column-specific format.  My experience with programming told me that this problem was solvable through software.  I researched the currently available open-source programming languages for a solution, and came up with using the Python programming language, which has a well-defined module available for handling of CSV files, allowing the program to define the order in which the columns should be presented.  I then wrote a program to read the file extracted from HCO, make a few modifications to the extracted data, and write out the data in the column order required by WSHFC.  Monthly production of the billing voucher thus turned from a time-consuming task which had eaten literally hours of counselor time to a 15-minute exercise.

3. Oregon Opportunity Network (Oregon ON)

Oregon ON is a non-profit organization based in Portland, Oregon which serves as support for their member non-profits in the State of Oregon.  The State of Oregon Housing and Community Services (HCS) in Salem had asked all the Housing Counseling agencies in the state to provide a quarterly report detailing information they collected about all their clients who were being counseled as Pre-purchase Homebuyers.  Most of the agencies were using the CMS named Counselor Max which is accessible by monthly subscription.  Three of the agencies were using the free HCO program.  Oregon ON arranged for the Counselor Max users to be trained for identifying the data items to be presented on the report.  Since HCO is a free program, the parent company does not offer in-person training.

As a recognized expert in the use of HCO (Home Counselor Online), I was asked to present a training session for the agencies in Oregon who use this database. The object was to identify parameters needed for the new report required by the State of Oregon: (HCS), where to save the parameters in HCO, and how to extract the data. The HCO database is capable of storing most of the required data, but manipulation is necessary to convert some of the values to the requested format (e.g. The report asks for the Age of the client at intake, but this information is stored in HCO as two parameters (Date of Intake and Date of Birth.), and of course, when extracting data from a data management system, it is not possible to specify the order in which to present the data.
Using the csv module of Python, I wrote a program to generate the Oregon HCS report which uses the custom data file extracted from HCO, converts data which is not stored exactly in HCO to the requested format, and rewrites the data in the order specified by the Oregon HCS report data template, thus being able to match the data points to the Headers specified by HCS. This operation is commonly described as “Custom Report Enhancement”. The conversion of data from the HCO format to the HCS format could have been done by hand, but by using the computer program, the time to effect this operation is reduced to milliseconds rather than hours.


This is Who I Am

I’m one of the post-rocket girls: A young lady of the ‘60s who wanted to experience life outside the environment of a farming community and use her talent for math (earned a B.A. from the University of Oregon), working with the scientists that were defining the parameters for entry into and exploration of the space age.  I got my chance when I was hired by IBM Federal Systems Division in Los Angeles to work on the ‘Manned Orbiting Laboratory’ (MOL) – a precursor to today’s Space Station.

At IBM, I learned everything about computers; how they work, what they can do, how to make them do what you want them to do.  I learned and mastered many programming languages.  I learned how to read and write design documents.  I learned how to design programs and databases.