Silicon Valley Ethics Theories

April 11, 2017

Reaction to the ACM blog by Robin K. Hill on “Ethical Theories Spotted in Silicon Valley”:
https://cacm.acm.org/blogs/blog-cacm/214615-ethical-theories-spotted-in-silicon-valley/fulltext#comments

When there is no “common consensus agreement” among interested parties on a standard for “ethics in the philosophy of computer science”, there will be confusion and uncertainty as to the application of same. Since there is so much diversity of general approaches to what society should do, “ethics in computing” will stay unclear, just as will ethics in anything.

Yours was a good categorization of various ethics theories. The worst I saw once, years ago, was a business ethics expert” in town (Miami, Florida) for a presentation, who said in an interview all kinds of things about how important it was for a business to have an ethics policy, that “it didn’t matter” what it was as much as having one. I hated reading that, because it logically allows for an “anything-goes” Machiavellian approach, and shows he didn’t really have much to offer on the subject.

Robin Hill’s approach in the linked article was much more serious.

I have a proposal as a beginning base for ethics that borrows from the following:

(1) the basic (small-l) libertarian principle known as the “non-aggression principle”;
(2) Similar to point #1, “Do no harm”.
(3) the “Golden Rule” of Christianity: “Do unto others as you would have them do unto you”. Most religions have something like this, and almost all of them incorporate it as part of their basic rules of conduct (except those involving human sacrifice of course and others with exceptions).

The best definition of #1 is found here:

“Principle of non-aggression”:
https://wiki.mises.org/wiki/Principle_of_non-aggression

The non-aggression principle (also called the non-aggression axiom, or the anti-coercion or zero aggression principle or non-initiation of force) is an ethical stance which asserts that “aggression” is inherently illegitimate. “Aggression” is defined as the “initiation” of physical force against persons or property, the threat of such, or fraud upon persons or their property. In contrast to pacifism, the non-aggression principle does not preclude violent self-defense. The principle is a deontological (or rule-based) ethical stance.

The only way to live peaceably in a society with other people is with people that follow a similar set of basic rules of conduct that fall under the scope of culture. (This is why suddenly throwing together of people of disparate and sometimes incompatible cultures results in so much turmoil.)

The first two principles above can be considered the minimum common denominator in most philosophies of society and government. Government is both a poor example and a poor enforcer of ethics rules, however, because it sets up an immediate conflict of interest. It is “against interest”, lawyers call it, for a government official to diminish his own authority or advantage in rule-setting; therefore, his rulings will always protect his own interests first.

Those three points should give us a good starting point.

My resume

March 5, 2017

ALAN CASSIDY
731 Oriole Avenue; Miami Springs, FL 33166 786-380-9236
http://www.linkedin.com/in/alancassidy cassidya@acm.org

SUMMARY

Analytical, diligent Software Engineer with extensive and broad technical and industry experience. Adept at creating and implementing effective improvements in applications and in development. Adaptable to small shops and large. Reputation as go-to guy among peers for technical questions, analytical puzzles, solving complex problems. Grasp small picture and big picture perspectives with equal ease. Establish quick rapport with users, peers, managers, clients, and always considering ROI. Make good use of object-oriented design principles. Completely bilingual in English and Spanish.

• Object oriented methodology
• Basic HTML, CSS, Javascript
• Performance inclusion
• Strong trouble-shooting skills
• Rational Developer for i
• Encapsulation, Redundancy Elimination
• Service Programs, ILE, Activation Groups,
• Creative at designing innovative algorithms

TECHNICAL SKILLS

Platforms: IBM_i, System I, iSeries, AS/400, System/38, System/36,
Windows 2000, Windows XP, Windows 7, iMac
Languages (Strongest): RPGLE, RPGIV, CLLE, SQL, CobolLE, COBOL, CL, RPGIII, RPG400, RPG, RPGII, OCL
Frameworks: WDSC (Websphere Development Server Client), Eclipse, PDM, SDA, Visual Studio Express
Technologies and Tools: Query, Interactive SQL, SDLC, HTML, HTTP, IP, Navigator, TN5250, FTP-API,
(lesser) Java, PHP
Debugging: ILE Debug, IBM Java debug tool
Change Management: Hawkeye, Turnover, Help Systems Abstract, ILE and OPM Debug, and others
Industries, General areas: Utility & medical billing, accounting, medical processes, distribution, transport, construction, rentals, travel & hospitality.

PROFESSIONAL EXPERIENCE

SCHUMACHER CLINICAL PARTNERS, 2013-January 2017
HOSPITAL PHYSICIAN PARTNERS 2013-January 2017
Emergency room and hospitalist doctors services
Software Engineer
(Hospital Physician Partners recently was acquired by Schumacher Group, rebranded as Schumacher Clinical Partners)
New projects for pre-processing claims, reconciliation of remits and deposits, and other programming assignments.
Implemented processing for reports that show the details of daily electronic payment remits, extracting the data relevant for matching the electronic payment remits to claims, and for reconciling to bank records of deposits.
• Created application to receive the remits, compare to file audit lists, extract the data out and track their processing by the third party “CPU” medical billing software. This has accelerated the cycle of making this match, and has reduced the time for handling exceptions, and therefore improving the cash flow situation.
• Now Implementing the process for reconciling the electronic remittances and balancing to actual bank deposits.

MIAMI LOGIC, INC., Miami, FL 2012-2013
(contracted to Hospital Management Systems)
Information Technology Consultants
Software Engineer Consultant
Completed assignment at community hospital management software company. Modified RPG programs and SQL stored procedures and wrote new ones, with an SQL approach to database processing, using Agile methodologies for development. Other duties to standardize the code base. Created functionality to support required clinical barcoding. Modified over a hundred programs for standard API time zone adjustment for dates and times.
Added processing for medical language standardization
• Created system-data processing to support barcoding requirement for medication administrations
• Modified over a hundred programs to use standard API for time zone adjustment
• Added processing for medical language standardization

RYDER TRUCK RENTALS, Miami, FL 2009 – 2012
Fortune 500 diversified transportation company with over $7B in annual revenues.
Senior Developer
New functionality, modifications and corrections in the central driving application for the company with a very large code base that includes CL, RPG, COBOL, some Java and dot-net running on external servers (such as Unix), -some activity on the mainframe, and communications applications.
• Introduced externalized database processing using sub-procedures (callable routines) in service programs to lock down I/O editing for business rules and retrieval accuracy in one place.
• Created service program for easy access to enhanced IFS functions.
• Implemented new rental driver security checks for branch counters.

ALAN CASSIDY Page Two

REPUBLIC SERVICES, Fort Lauderdale, FL 2006 – 2009
$6B company, after recent consummated merger with Allied Waste, second largest service provider within the solid waste industry with over 36,000 employees located in 40 states and Puerto Rico.
Senior Developer
Created new applications and modified customized accounting software.
• Improved code re-use with formalized use of service programs.
• Enhanced IFS-processes with standard callable routines.
• Researched LDAP interface to validate emails.
• Led use of Sequel report tool from Help Systems.
• Shortened project times with innovative use of APIs.
• Adapted general ledger reporting programs to Sarbanes-Oxley compliance.

COMPUTER SCIENCE CORP, Falls Church, VA 2005 – 2006
Business and technology services.
Programmer Analyst
Designed and coded enhancements to custom software at client ThyssenKrupp Elevators, Miami, Florida, on AS/400. Modified accounting modules, improved service and construction call tracking.
• Introduced service programs and APIs.

PIONEER METALS, Miami, FL 1995 – 2005
Industrial air-conditioning distributor.
Senior Developer, IT Manager
Maintained customized distribution software, including financials, warehouse inventory, EDI conversion, `billing, payables, receivables. Administered AS/400, configuration, settings, and 20 remote locations. Supervised system administrator and corporate accounting staff of five. Finished other projects for manufacturing subsidiary Air Guide, Hialeah, Florida, with JDE World.
• Improved sales order entry, receivables and payables batch runs’ performance dramatically.
• Welcomed Y2K without incident: modified over 200 tables, 600 indexes and views, 1,200 programs.
• Converted fiscal year end from September to December, affecting some 600 system objects.
• Completed more than one thousand non-Y2K projects.
• Implemented automatic update for electronic UPS shipping requests.
• Converted entire database to one accessible for history after acquisition by Goodman Mfg. of Houston, TX.

JACK RICHMAN & ASSOCIATES, Tamarac, FL 1995 – 1995
Consulting services.
Consultant
Provided systems and programming consulting support for clients.
• Modified COBOL and CL software base for restaurant franchise ownership company.
• Modified payroll application to interface electronically with bank.
• Wrote new process for electronic payroll deposit.

SIGN-ON COMPUTER SERVICES, Miami, FL 1994 – 1995
IT Consulting services.
Programmer / Consultant
Consulted for clients directly and maintained proprietary software.
• Prepared COBOL –based system at cemetery-funeral home for Y2K.
• Wrote code to enter data and tabulate vote results for county clerk office.
• Led conversion of proprietary food brokerage software package to AS/400.
ALAN CASSIDY Page Three

AMADEUS, Miami, FL 1992 – 1994
Travel reservations service and travel agency software, formerly System One.
Programming Consultant
New programs and modifications to Max travel-agency software.
• Worked with code parsing incoming reservation data to Max database.
• Became go-to guy in this shop with more than 25 programmers.

CONVERGYS, Miami, FL 1991 – 1992
Accounting software for Cable TV Companies.
Programmer
Modified Cable-Master application.
• Led conversion of numeric fields (columns) in CableMaster software for Korean market.
• Implemented new functionality for user editing of billing and collection letters.

PREVIOUS ENGAGEMENTS
• Modified JD Edwards World for Enviropact, a scientific environmental services company.
• Enhanced third-party software for Hialeah Hospital: significant performance improvements, adapted new medical code tables.
• Created, managed Miami-Dade Computer Institute courses: IBM midrange programming, systems. administration, operations, database design with retention rates virtually 100% and the highest possible student evaluations.
• Taught PC skills for other Computer Institute courses.
• Reduced billing job run time from three days to three hours at a medical accounting firm.
• Automated billing cycle at medical services firm, reduced run from three days to eight hours.
• Converted 25 programs from RPG to Basic for a medical billing software company.

EDUCATION / TRAINING

Mathematics
Washington University, St. Louis, MO
RPG programming, Independent study, IBM, Dominican Republic
Introduction to PHP, Skillsoft course

        ASSOCIATIONS

ACM – Association for Computing Machinery

Southern National Users Group, South Florida
Miami IBM Users Group, South Florida

        ADDENDUM
Perfect two-way fluency in written and spoken Spanish
Wrote for the Santo Domingo News, English-language weekly
Independent missionary work, Dominican Republic
Volunteer for Miami Family Mission, distributing food to seasonal workers and poor families

27 Things Only Developers Will Find Funny

July 25, 2013

http://www.buzzfeed.com/lukelewis/28-things-only-developers-will-find-funny

SQL and RLA – Record Level Access

January 1, 2013

For IBMi…. If you don’t have one you don’t know what you’re missing…

To get a unique record from any target database file that does or does not have a unique key field combination, there has to be a “where” clause involved somewhere, to update one record.s

The WHERE clause will have specific values for specific columns, but there are other columns in that record that might make it a logically different row. To my knowledge, SQL standards provides no exact way other than a unique key identifier to enforce that using the same values in a WHERE clause will get the same exact record.

So one alternative is to pick up the entire record with all columns when you fetch it, then when you go back either add them to the WHERE clause (cumbersome) or do a cursor and result set to read through all the rows that match and compare the values (also cumbersome). If all the non-key or non-WHERE values are the same then it makes no difference at all which one you get.

That’s life in SQL without being sure you can use the RRN(YourFile) function.

Of course for the database you control, you can always also use the Identity column function.

You can also add a sequencing column for a result set, I believe, that disappears later with the result set, when you’re just doing a query.

If you get real sophisticated and your budget approvers sign off, you could use the SQLCLI function also to automate the checking of all the values in a return set and using all the columns in a dynamically generated WHERE clause to update the record. I’ve been itching to write it, but it’s involved and will take time. One of these days….

The IBM i name (They don’t sell new AS/400’s anymore)

December 15, 2012
IBM i

IBM i (Photo credit: Wikipedia)

I have been to just one of Trevor’s presentations, an entertaining speaker.

Some in the audience actually did have a real “AS/400“, from before, and he said, “Well, yeah, you do have an AS/400″.

I can understand how he can be considered “caustic” in his conversations, and call it my opinion if you want, but he is right about the name. Man I wish they would have picked a better name, what with Apple having already called dibs on the letter “i”. But, hey, it is what it is…

It’s not the same machine it used to be, but it runs all the old stuff same as always –doesn’t break your existing applications– so people think it’s the same, and so techs of other lands still have the green screen idea when they think of our succession of machines, the “AS/400 family” of systems and servers.

Other systems they call “Mac”, “Windows“, but when they do, the brand is not held back by those names. People regard it as a general brand. They (we) stopped calling it Vista when Windows 7 came around. We don’t get confused with the names Linux, Fedora, Ubuntu. They sort out easily in our heads.

None of us has any problem at all calling an automobile by the name the manufacturer gives it. But the Rambler is no more. The Edsel is not coming back. Well, maybe after a generation they can bring the brand back for a new generation.

One well-known creator of a very much-used language, whose name slips my mind, gave a talk about branding at a conference, and gave a few examples.

Once upon a time, there was a phone company that accumulated one of the worst reputations for quality, overhauled it to get one of the best, but the consumer brand was irreparably damaged. So, they changed their name to Verizon.

Has anybody here ever used IBM Visual Age for Java? Or ever hear of it? How about Eclipse?

That’s branding.

The other day I went to a Java Users Group. Despite the fact that the IBM i can run all the java you ever want, PHP, Python, web servers, XML, and almost anything you can run on Unix, about half a dozen good GUI‘s, you can run just about any popular file system, including the one for Unix, the one for Windows, for the i.

There are knockout applications running web sites, and I’ve never heard of a virus doing damage in this system or its predecessors. There’s nothing ancient about the latest offerings for IBM i on Power.

They had never heard of the IBM i. So I explained that it was the modern replacement for the old AS/400. They immediately stopped listening and did the same thing when they heard “RPG“, and didn’t even seem to hear that RPG can do all this great stuff and is getting updated faster than any other standard language. But, it is a new system. It’s an IBM i, it’s not “it’s the new AS/400”, and it’s not “we used to call it AS/400”.

From now on I’m not even going to mention the AS/400, I’ll just talk about the IBM i.

RPG needs a re-branding too. IPG or iNext, or Power Language, or something. Maybe not to include the “i”, give it a name independent of the system itself. That’s another topic. I suspect that might be in the works too. But hey, not yet. First take it the rest of the way to a completely free-format syntax, including the file specs, the data definition specs, I-specs, and the rest.

IBM i

IBM i (Photo credit: Wikipedia)

On 12/12/12 2:00 AM, Norm Dennis wrote:

how to use quotes in an EBCDIC-based programming source file

June 24, 2012

To my fellow coders:
I’ve just come across a discussion of how to use quotes in an EBCDIC-based programming source file (or file member).

The strong suggestion, from someone on the Toronto Canada IBM midrange compiler team, was to avoid coding the hexadecimal version for the single-quote constant. That would be x’7D’ No-no. Because if you re-do the code to another language, or compile it for ASCII, it will be nonsense.The CCSID will not “translate” the hex.

That’s straight from the manager of the compiler team, Barbara Morris.

https://www.ibm.com/developerworks/mydeveloperworks/blogs/b542d3ac-0785-4b6f-8e53-f72051460822/entry/everyone_knows_what_x_7d_means_unfortunately?lang=en
Thanks Barbara!

The 6-year old IBM i community

June 24, 2012
IBM i

IBM i (Photo credit: Wikipedia)

In conversation nobody calls it “Windows XP“. Support asks me “Do you have XP or Windows 7?”

IBM i 7.1″ was released to general availability on April 23, 2010, according to http://wiki.midrange.com/index.php/History_of_OS/400

So:

IBM i, IBM p, IBM z, IBM x.  Try searching on the following:

“AS400 7.1” IBM gets “about” 6 results, “OS/400 7.1″ IBM gets about 126 results, “AS/400 7.1” IBM gets “about” 624 results. But “IBM i 7.1” IBM  gets about 156,500,000 results.

Here’s the latest of the greatest infocenter link for the latest great-grandchild of the OS/400:

http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Frzasd%2Fsc092508283.htm

Title line toward the top:

IBM i 7.1 Information Center

Lets’ allow Trevor to un-confuse us. http://blog.angustheitchap.com There has been no new AS/400 offered since 200. That’s 12 years. Yeah, right, that’s so fast, too fast, golly that’s barely long enough to start Kindergarten and graduate from high school!

1980 – System/38 runs CPF
1988 – AS/400 replaces S/38 and S/36, runs OS/400 – which runs CPF programs
2000 – iSeries is a renaming of the hardware, runs OS/400
2006 – System i is a renaming of the hardware, OS renamed to i5/OS
2008 – Power Systems replaces System i and System p, OS renamed to IBM i

or..
1988 – AS/400 brand
2000 – eServer brand
2006 – IBM Systems brand
2008 – IBM Power Systems brand

RPGIV: Cycle or not? In-line code or subroutines? Is anybody still asking this?

June 2, 2012

Midrange Computing recently featured an a short discussion that started as a question about whether it was better to write RPG-ILE as free format, or is it better to use the “RPG cycle”? A newbie’s kind of question because these are two different discussions.

http://www.mcpressonline.com/forum/showthread.php?21300-What-is-better-free-code-or-traditional-code

Dave@shireyllc.com replied:

  “It’s not about performance. Only one application in 300 needs to worry about performance. It’s about readability. It’s about me being able to go into your code and figure out what you did and how to change it – and that is where Free has it all over traditional code (especially if you are using the RPG cycle which should never be used). “

Then Sarge:

I have to agree with Dave.

I have seen traditional code that was “structured” in such a way that it was easily read, even with all of the indicator usage of RPG using fixed position coding.

I have also seen some very terribly hard to read code that was written in /free.

The bottom line is: code must be written, regardless of the language or formatting, so that it is easily readable. if you have a programmer who has not been able to make the move to /free (RPGIV), but writes good formatted code that has a solid foundation, requires little maintenance and is easily readable, you are better off (in my opinion) than someone who writes in /free, but has no idea how to write structured code.”

the bottom line is: code must be written, regardless of the language or formatting, so that it is easily readable. if you have a programmer who has not been able to make the move to /free (RPGIV), but writes good formatted code that has a solid foundation, requires little maintenance and is easily readable, you are better off (in my opinion) than someone who writes in /free, but has no idea how to write structured code.”
The fact is that the right answer has changed with time, with the colossal game-changing enhancements to RPG, and with the advancements in hardware.

SUBROUTINES IN RPG VERSUS IN-LINING CODE

A long, VERY long time ago, when RPG-II ruled, somebody from IBM apparently told code writers that subroutines slowed things down, that keeping everything in-line improved performance. Maybe the person that said this conditioned it, but if it was true it would be because the compiled code had to swap in and out of RAM from disk. When hardware was a real constraint on performance, then if your subroutine was only called once, maybe even twice, then yeah, you can drive it faster in-lining the code instead of using a subroutine.

But in one talk by John Sears, a great figure in RPG in the IBM midrange world, now retired, he answered the question by saying “If you have a problem with performance, subroutines are not your problem, you should look elsewhere”.

THE RPG CYCLE: USE THE CYCLE OR NOT?

Ask me today, I’ll tell you forget the cycle. At one time when I taught AS/400 programming (Note to Trevor: it was an AS/400 then), I taught the class about the RPG cycle, because out in the shops in business, they were going to find it all over the place in most of the programs they encountered and they would have to understand it if they were going to do code maintenance.

At one shop in my past, one developer told about a program that was using the cycle to read the one primary header file (for SQL guys, that would be the first appearance in your FROM clause), but then use a SETLL and READE to read through the detail records, say, for an invoice.

At that time, that equipment, it took a day and a half sometimes to run. Too long.

So he ripped up some of the code and converted the detail file into a secondary file in the specs, and used matching-record fields and indicators to synchronize the file inputs, and instead of taking one or two days the report finished in a couple of hours. (At this any veteran RPG programmers are groaning, glad all that’s over).

Now you can still program in the most recent version of RPG, but to get similar performance you can now use embedded SQL. Don’t look back. Even if you have to use the other method, (reset file pointers for the detail file for each input of the header file), I think we are all better off leaving the primary and secondary files out of the code. (For newbies, primary and secondary files are specs that “take advantage” of the compiler’s cycle).

Some of the COBOL programmers learning RPG were perplexed: “But where do you open the file? When do you read it”?

In fact it was fun to watch the evolution in code I came across about that time and afterward, and how a lot of programmers were abandoning the cycle but to write a report program they were jumping through all kinds of hoops and loops and conditions and temporary hold fields and the like. I found a way to simulate it, sort of, inside an RPG loop, even when using an SQL cursor to do it.

Now that I’m working these days with a lot of COBOL code, it’s interesting to see how the reports are handled. Stuff that was easy, fast coding in RPG using the cycle.

The cycle is one thing left over from the very beginnings and still supported in the most recent releases of the IBM compiler for RPG, now RPG-IV, RPG4, or RPG-ILE. Give IBM credit: For every release of the operating system and the of the RPG compiler, they have not broken the older stuff, like Microsoft always does.

With some of the more well-known names in IBM midrange development, I agree that some things they could have and should have broken. But in this IBM has respected business continuity considerations and don’t-break-it methods that business has not known enough to appreciate, in my opinion.

So here’s my bottom line for anybody still using it: DITCH THE CYCLE.

It won’t be too long before this admonition will look “quaint”, as in “antiquated”, but the question was posed rather recently. The compiler team has even provided a way to run a program without the cycle, and without having to use the ubiquitous *INLR indicator.

Next, or at some future time, I’ll write about some of my design and coding philosophies.

 

 

 

The Four Hundred–As I See It: Piling On

August 14, 2011

http://www.itjungle.com/tfh/tfh081511-story04.html

Victor Rozek talks rightly about persons who’ve been out of work for awhile in their professional careers having trouble finding a job when all the job offers she sees in job lists are restricted to people that already have jobs.

But there is another “piling on” here. Companies are affected by the economic doldrums too, are in trouble too, in this bad economy, unless they have especially specific circumstances or uncommon operating methodologies (like debt-free financing). Restricting their hiring to the currently employed is another checkbox and it isn’t completely unrelated to the goal of hiring the best possible applicants and keeping the number of resumes down.

I think it’s stupid in times of economic decline, but it’s not my call, not my company, not my money. If it were, you bet I would consider them all (which I did when I was briefly there). In fact, on the principles of the Golden Rule and “you reap what you sew” I gave a special look at them. But in the end, also, the responsibility of the person hiring is to the employer.

I have been on the wrong end of some of the checklist boxes of hiring managers in the past myself, and you could say I’ve walked more than a mile in those shoes.

We all know that in prosperous times and lean times a hiring manager or HR resume-filtering process has little checkboxes that sometimes result in stupid decisions that get them one of the worst possible hires out there.

Better to educate, or remind, the people that do the hiring, what they’re doing, and what they’re losing out on by such easy decision-making methods, and what they would gain by hiring a person grateful to get off unemployment numbers.

But another more useful way to help such folks is to make lemonade out of lemons, and help them learn how they can use their knowledge and experience as leverage, how to use their contacts in the business or re-develop them, get out and network, network.

I think we, and that’s myself included, have become too dependent on getting a job, but maybe we can look at doing other things in the areas of our careers.

Sea Urchins have eyes in the back of their heads..and on their feet

July 7, 2011

Sea Urchins See With Their Whole Body – Oddities News – redOrbit:
http://www.redorbit.com/news/oddities/2073325/sea_urchins_see_with_their_whole_body/