Small code with powerful results, the occasional opinion … and beer. 

02 Jun 2020
Government… Indirect to You!

You may have noticed a wave of channels removed recently by Google for violating content policies, and the screams from their owners about foul play–even outright censorship.  There are very important constitutional concerns about arbitrary removal of content. And viewed at its face value, it seems like targeted censorship.

And then today, there is the Facebook virtual protest over Mark Zuckerberg’s decision not to label or remove President Trump’s tweets as violence inciting.  And at a time when the President is preparing to release an executive order to regulate social media activity.

But what’s really going on… and all of a sudden?

There are some proposed changes in bills being worked through Congress, which are a big catalyst for this. The primary one is a change to the protections which internet media distributors have had for a number of years now. This includes social platforms, especially. Essentially, the current law provides legal protection to the distributor of material, as long as it was not the provider.  That means that if a social media account is used to post an article, commentary, instructions, etc… the company providing the social media account can not be held liable for that content because it is only a posting location (repository, if you will).  Only the content provider (or source of authorship) is liable.  In the real world, it is similar to suing a library for the choice of books it has in its selection.  The law would protect the library, but not the publisher/author who are responsible for the content.

So Alex Jones (of Infowars) and others have always been liable for their controversial content.  There is no change there.  But the protections for the social media companies from liability are now at risk to be watered down or virtually eliminated.  The threat from this change in the law is forcing social media platforms off of their neutral stance, and causing them to remove content from owners which put them at risk of being sued.  And it is very wise for a business to take these precautions, even when it is not law and only looks like the legislation will pass.  There’s targeted censorship here, but for motives other than what people attribute it to.

And as far as Trump’s tweets are concerned, I actually empathize with Mark Zuckerberg… something I don’t do often.  He (certainly with support from a knowledgeable staff) made the decision to not label them and not to censor them. Not an easy call with all the peer pressure behind that. By contrast, Twitter has chosen to be quite aggressive with banning content, removing posts and labeling content. But is that the right path? Twitter has (rightfully) drawn heavy criticism for doing that.

Twitter and Facebook have taken a passive stance as well on posts, labeling them as containing certain types of dangerous content.  I am neutral on this, except when it comes to political figures.  I am fine with a song being labeled as having potentially dangerous lyrics, just as I am fine with a health warning on food items and especially on dangerous items like tobacco.  It is not stopping me, but it is communicating a danger.

But applying these same warning idioms to political figures and their speech crosses the line between objective and subjective.  And subjective includes opinions, something which must be especially protected in the political arena.  It is the core of free speech protection.

Finally, there is also a political side of this which may not be immediately apparent. Trump’s tweets are provocative, and have been even since he was campaigning.  Obama tweeted in a more traditional way, as a press release. One of the things which I chuckle at (in a macabre way, I admit) is how Trump gets people mad who are dedicated trolls or just loud advocates on social media, because he is just as good on social media with stirring things up as they are.  And they are clearly aggravated by it.  For social media participants, it’s a rough way to get a wake up call on the real effects of receivers when just spouting out your thoughts.  But that is how it should be seen: a wake up call.

Part of a consideration in Facebook’s decision also has to be a concern about creating a dangerous Catch-22 situation.  On one hand, the legal protection of them as a distributor is at risk.  But if the President signs an executive order prohibiting alteration, removal or appending to original material, then the threat of lawsuits from that proposed law change gets far worse.  Social media would be sued by people who they are taking offline, as well as others for not taking people offline.  A really, really bad situation for social media companies.

The whole thing just highlights the real problem with social media.  It doesn’t really show who we are, it just amplifies what we want to see.

A pastor this past year gave a message celebrating mothers on Mother’s Day, which demonstrates what I mean.  In his message, he mentioned the list of traditional things a mother does for the family… and reminded everyone not to forget the newest important role mom’s play in the family: Family Social Media Marketer.


07 Apr 2020
“Pay No Attention To That Man Behind The Curtain”

That’s the famous line from the Wizard of Oz.  The Wizard is putting on quite a show for Dorothy, The Tin Man, The Scarecrow and The Lion, filled with smoke, lights, a large and scary projected picture of himself on the wall, while he is sternly shouting loud and bullying threats over a loudspeaker.  They get really scared and the masquerade continues, unrecognized, until …

A little innocent dog grabs the curtain in its teeth and pulls it back… revealing the simple old man working a set of levers and controls to put on the show which was mesmerizing… but it was all a show.

And this can be said about the COVID-19 pandemic as well.  Don’t make the mistake of reading this as COVID-19 is fake.  It is very real, and is more dangerous than a standard flu. But our perception of reality is so influenced by our source of information, we can not forget the need to step back and ask ourselves what have we been looking at.  AND DISINFORMATION IS A WAR TACTIC, so evaluating everything with a highly critical eye is important–especially looking for things not being shown.

Also remember that the term “false flag” does not mean fake.  It means that whatever flag is being waived (real or generated), it is being used to distract attention from something else.

This virus is a bio-hazard level 2.  The media has been showing people wearing level 3 and even Level 4 (Ebola-level) protection.

Vladimir Putin visiting a laboratory in Russia supposedly with Corona virus (from Rossiya 1), and Chinese police in an airport.

The Corona virus is nothing new.  It is simply a strain of virus which is normally found only in animals, but sometimes appears in humans.  Bird Flu, SARS and MERS are also from the same strain.  But look at what the media chooses to put in front of people.  Vladimir Putin (pictured during a visit to a laboratory above) is visiting in a level 3 protective suit.  Did you notice the others with him simply have standard masks, not a sealed suit with filters as Putin is wearing?  You could argue that Putin is being given extra precaution being a national leader, but I also find the yellow suit and red sign more likely placed there to grab people’s attention.  For those of you not in the marketing world, red and yellow are the two colors used for grabbing your attention.

This type of media-driven exposure is playing out everywhere, and worse… it is louder than ever before because of social media.  I have long pointed-out that one of the most poisonous things I have seen in news reporting (apart from the line between information and entertainment being ever more blurred), is that even reputable newspapers and television news have stooped to allowing National Enquire-like click-bait on the margins of their web pages to finance their operation. Those emotion triggering headlines make money, and with a hyped up situation like this, why wouldn’t they participate in the same type of rib-poking journalism as their click-bait ads do.  It obviously generates income.

The news media has traditionally only reported the facts, then shut up and let people evaluate and form their own opinions.  Nowadays, countless talking heads are interviewed to sway a person to an opinion–and not let the viewers form their own.  A perfect scenario for creating propaganda.

It is not called TV Programming by accident.

Ironically, at the peak of the virus epidemic in China, President Xi Jinping just wore a simple RM1 facemask to visit those effected areas.   That’s part of level 2 protection, and a common practice in Asia when the other strong flus (like SARS and MERS) broke out in that area.

The virus is constantly compared to itself.  No side-by-side numbers are compared against another virus outbreak.

Forerunner Church in Kansas City, Missouri, recently hosted a Q&A on the virus with Dr. Kenneth Lim, Harvard University Fellow (Forerunner Church COVID-19 Panel Discussion). There is a section of that discussion (from 52:45 to 1:11:04) where Dr Kim elaborates on the following:

  • How it impacts the body compared to a normal flu, and how it spreads.
  • Survivability of the COVID-19 virus in various environments.
  • The lessons learned by Hong Kong, Taiwan and Singapore from Bird Flu (SARS).
  • The lessons learned in Philadelphia and St Louis during the 1918 Influenza (the origin of the social distancing strategy).

COVID-19 is dangerous and has a higher mortality rate than a normal flu, but don’t make the mistake of thinking that’s lots of people don’t already die every year from a flu virus. As of Saturday, March 28, there have been 30,300 deaths caused by COVID-19 worldwide.  But during the 2018-2019 flu season, the CDC estimates that 61,099 people died from the various flu outbreaks.  Wow, that’s a lot…. and that number is just the flu cases in the United States (CDC 2017-2018 Flu numbers).  The worldwide fatalities were in the range of 290,000 to 650,000 (NIH site: “Global mortality associated with seasonal influenza epidemics” by the University of Edinburgh).

This is not any attempt to desensitize the value of life or downplay COVID-19, but to give some perspective.  Today, everyone puts everything on a graph–which is good to visualize data.  But a graph causes a loss of perspective if it not compared with the same graph of something else similar in nature.  John’s Hopkins University (and some others) have made very good graphs that would make someone in a War Room of the 1950’s jealous, because the information on those graphs is so much richer and more up-to-date.  But taken at face value without context or comparison, it is easy to become mesmerized. Something similar happened with the 24-hour coverage of Operation Desert Storm back in early 1991.  People were getting so wrapped up in it, many forgot to shut off the TV and go live their lives.

The constant focus on the media’s portrayal of the virus (and it is intentionally hyped, make no mistake about that) induces internal panic and disruption. And that is a recipe for abuse.  This is also the purpose of DISINFORMATION: it is to draw attention away from things which are supposed to be “under the radar”, and are thereby missed by the people who would oppose them.

So what’s going on behind the curtain?

One very real possibly is a direct, planned attack on the world economy by a number of players: China, Russia and their allies.

The reasons for this take some research, but look at how China arrested a whistle-blower in December for attempting to warn the press about the existence and spread of the COVID-19 virus.  Also look at how long China did not report it to other countries.  They still may not be reporting all the numbers.  But more importantly, look at how quickly the Chinese infection rate turned around compared to other countries.

China has huge tension with the United States because of the trade war, and the United States stands in the way of China’s goal of being the next world superpower. And what better time to launch an economic attack than during the year of a Presidential election in the United States.

Creating panic is critical to causing the fear, worry, doubt and panic necessary to disrupt the normal flow of money and productivity in our already very fragile economy.  The West is an open society, and with the free flow of information and disinformation through news and social media… creating confusion and panic is all too easy.

Also, if you missed it, Chinese investment firms swarmed the United States stock market when it took its dive, and bought a very large number of US Corporate stocks.  They’ve gained a larger influence and income stake (not just ownership) in our assets.

Several attempts have been made, and they won’t be the last, to attach bills to the economic relief packages which would not otherwise survive proper review.

Back in 2001, there was a bill which had been drafted months before the terror attacks of September 11th.  After the attacks, the bill was quickly formalized and named “The Patriot Act”, and was passed because of the panic and fear created by those attacks.  After all, who could stand out in public and decry a bill which overrode most Constitutional protections (allowing courts to be bypassed in the name of national security) when it had such a hallowed title of “Patriot” in its name, and Patriotism was enjoying a great resurgence.  Without the attacks, that bill would have had no chance of passing.  And with the passing of time, newer generations are only aware of it and not the damage it did to us as a country.  In my opinion, the bill did far more long-term damage than the attacks themselves.

So what is being passed now.  Well, the answer is to watch any bill being passed with “economic relief” in the title.  Attempts so far:

  • There was a recent Supreme Court decision which ruled against public funding of abortions, and the decision stopped millions of taxpayer dollars per year from going to Planned Parenthood.  An addition to the Corona Virus economic relief act was attempted by several members of Congress (Senator Nancy Pelosi was among them).  It was removed after a public outcry.
  • In addition, many items for funding the Green New Deal were also thwarted.  These items sought to channel a significant portion of the money into a project called the “… New Deal” which borrowed the term from President Franklin D. Roosevelt’s project to steer the economy out of the depression.  Remember what I said about using the term “Patriot”?
  • Many local governments are struggling to keep their executive orders at the level of “strongly recommended” without going to “mandatory”.  One of the biggest dangers of this virus isn’t the outbreak, but people trying to use people’s reactions as leverage to toughen the laws.  Some places, Vermont in particular, went to marshal law.  I completely disagree with their action: it was unwarranted, and should serve as a major warning of the true danger of letting ourselves be worked into a frenzy over this outbreak.

The strongest indication of how healthy a republic is, can be seen by the will and ability of its free people to self-govern.  President John F Kennedy phrased this as “ask not what your country can do for you, but what you can do for your country.” 

I want to leave you with a perspective on this.  In the early 1980s, the U.S. Federal Aviation Administration addressed the issue of ultralight aircraft (hang gliders, etc) due to a few reports of some near misses with private and commercial aircraft. The ultralight industry was gaining in popularity.

After numerous meetings and public comments, the FAA released Part 103 of its regulations for these aircraft.  It is an interesting regulation for two reasons.

First, there are numerous statements about understanding the needs of certain things (like pilot licensing, maintenance, aircraft certification. etc).  Almost all of them basically end with the statement that the agency does not see the reason to regulate this at this time.  The document is labeled as a regulation, but it actually only regulates the size of the aircraft and its use.  It’s rare to see a regulation which contains so many things which are only suggestions.

Second, an interesting statement came from the FAA administrator at the time they released the regulation. He stated the purpose of the regulation was actually “don’t get our attention.”  His statement truly reflects that content.  He was warning that while the FAA was trying to let the ultralight community self-regulate, any pattern of failing to self-regulate would require them to come back–and regulate.

Has it worked?  There has been no change to those rules in 37 years since they were released in July of 1982.

Keep this in mind as you navigate this pandemic. There are plenty of people at the top (or who like to think they are at the top) who will have an answer.  The more we can respond with “Thanks, but no thanks”, the more this situation will have a good ending.


02 Apr 2020
COVID-19: An simple exercise in evaluating information

I recently read this article discussing a possible cover-up in the number of deaths from COVID-19 in the town where it originated: the city of Wuhan in China, population around 11 million people.  This is a great article to expand upon, in doing some basic sanity checks to check the numbers.  There is another article from the NY Post which repeats some of the information in the first article here.

Warning: the thought of people’s loved ones being turned into a numerical body count is not pleasant, nor is it my intention to desensitize anyone to the value of life.  I have spent quite a bit of time keeping all of this in prayer, after all Jesus is the great comforter, nonetheless there has to be an unemotional evaluation of information.  And that is what I am doing here.

The article uses the following information to claim that the death toll is much higher than expected.  These are the facts stated in the article.

  1. A Radio Free Asia analysis, for example, found Wuhan’s official death toll of 2,535 may be understated by a factor of 20.
  2. It reported seven mortuaries were handing families 500 funeral urns a day for well over a week.
  3. One took shipment of 5,000 urns in just two days.
  4. People in Wuhan have reported that the crematoriums have been running non-stop day and night.

If #1 is correct, the assumption is that the number of deaths could actually be 20 x 2,535 or around 50,000+.  The article from business insider claims the factor is between 5 and 20, so the low end would be 12,500+.

Number 2 is either 7 x 500 urns (3,500) during a week if the seven mortuaries comprise the total number to together, or 7 x 7 x 500 (25,400) if each of the seven mortuaries handled 500. The context is not clear on this one.

Number 3 implies that a single mortuary took a shipment of 5,000 urns in a two-day period.  If all 7 are doing this, that’s 35,000 urns in two days among those seven mortuaries.

Number 4 is hard to qualify with numbers and is more hearsay, and for this exercise can be disregarded.

So how does this compare to a time when COVID-19 is not spreading?

Sometimes, the sheer volume of everyday things in the world eludes us.  The cycle of life is one of them.  We hear about the numbers of people dying from the virus, but what’s a typical count of people dying on any given day look like.  That’s important to know, to keep perspective.  And here is an easy way to calculate it:

  • Go to Google and enter “world population now”.  The result is 7.53 billion.
  • Go to Google and enter “average lifespan worldwide”.  The result is 72.6 years.
  • If you take population  and divide it by lifespan, you will come up with the average number of people born per year:  7,530,000,000 / 72.6 = 103,719,008 which is also the average number of people who die per year (although it will be lower than the birth rate, since population is growing).
  • If you take the number of people born in a year and divide it by 365.25 (365 days per year, and include the extra day per leap year), 103,719,008 / 365.25 = 283,967

So on any given day in the world, 283,967 people are born, and roughly the same number come to the end of their life.  Now a note about this number: 72.6 years is a median average.  There are a number of people who die at younger ages, but the average is what we will use for this example.

So the epicenter for the COVID-19 breakout is Wuhan China, a city of 11.08 million people (Google result again).  To calculate the average deaths per day in Wuhan, we first calculate the percentage of the world’s population which lives in Wuhan (11,080,000 / 7,530,000,000) or 0.0014714475431607 (0.14714475431607%).  Now multiply this by the average number of deaths per day in the world calculated above (283,967), and on any given day there should be roughly 418 people in Wuhan who die.  And this number is outside of any COVID-19 presence.

So does this make sense? And how do the numbers being talked about compare with this.

It’s hard to tell.  Looking at number 3, a shipment of 5,000 urns in a two-day period could just be a regular restocking event.  Assuming (and yes it is an assumption) that Wuhan has seven mortuaries, there would be 60 bodies delivered to each mortuary per day.  5,000 urns at a single mortuary would last 83 days, assuming all 60 per day were cremated and needed an urn.  The arrival of urns themselves doesn’t indicate a rise in deaths, although a 60+ day stock on hand would seem higher than normal.

There are also other pieces of information which are missing and needed to do an accurate assessment:

  • An accurate reporting of deaths, which does not seem to be forthcoming.
  • Is the number of mortuaries in Wuhan actually seven, or are only seven of a higher number being discussed.

Just using the 418 deaths per day says that 2,226 people die per week, and 12,540 die in a 30-day month.  So the numbers of urns being handed to families and the numbers of urns arriving, by themselves, are not out alignment with regular usage.


As much as I hate to say it, there are a lot of people who are saying that the impact of this disease is being hyped above what it is actually doing.  This type of article and its content actually argues for their point.  Why?

  • Accurate numbers of deaths would clearly show whether the disease is as dangerous as being reported, or not.

The article reports what people are reporting they have seen (second hand information), but makes no mention of whether any question was asked directly to the mortuaries themselves to see if they could provide any of:

    • What is the normal daily use of urns, compared to the number used during the pandemic?
    • What is the number of bodies your facility has processed in the pandemic, versus the same time last year?
    • Whether the answers would even be given, or whether the information would be refused.
  • Hearsay and unverifiable information only adds to speculation, and that gap of information only breeds fear and paranoia.

As much as I could borrow the Mythbusters rating system, I really can’t in this scenario.  There are just too many information gaps.  But looking at the scale of life and death I have shown, your challenge is now:

  • To evaluate the number of people succumbing to the effects of this disease, while
  • Keeping the value you put on life intact, and ever wondering
  • How big is our God, when he states that he knows his own people, and not one will slip from his grip unnoticed.



30 Jul 2019
Think Twice Before Escalating Anything

A few weeks ago, I read the new reports based on tweets made during the diversion of a flight, on which Keanu Reeves was travelling.  And it left me a little disturbed about our social media focused society.

The plane had a minor mechanical issue and had to divert to Victorville, CA, instead of continuing to its intended destination.  It was uneventful, and Keanu Reeves was photographed in a number of selfies and praised by everyone for the way he acted in response to the incident with his interaction and kindness.  That’s admirable.  But what was very disturbing was the reference by numerous people on the plane to Keanu Reeves as a “hero” on their  tweets.


Isn’t that the term we use for the police and fire personnel who risk the lives for life and justice?  Isn’t that the term we use for valor in military action that fights evil and saves lives? And more importantly, is that the only word that comes to people’s minds when they wish to praise someone publicly?  Seemingly, this is the way things are sadly headed… especially in social media.

To be clear, Keanu Reeves actions were indeed praiseworthy, but poorly mislabeled.  He did what would make a father or mother proud of their son.  He was the model of a gentleman.  If you’ve never seen the movie, I recommend you watch Blast From the Past (1998, Brendon Fraser).  Dave Foley’s character reads the definition of a gentleman he looks up in the dictionary: a man who goes out of his way to make sure that the people he is with feel comfortable around him.  Other than using the word woman, the definition is no different for a gentlewoman.  You won’t find the definition written like that in Google: it’s answer is in the context of a title, and is far too shallow.

This is a very ugly effect of the super-hero culture we live in today.  Since social media requires people to speak up to be heard (and usually loudly or using shock tactics), the superhero character appeals to the masses because 1) superheros do great and inspiring things, and 2) superheros get mass recognition.  But to label what Keanu Reeves did as “superhero” shows how this escalation has gotten out of control.  The Romans documented hundreds of years ago something called the seven traps in logical arguments.  They basically list seven traps which begin with “argument based on  …” with names like “unverifiable authority”, “emotion”, etc.  Labeling an act of kindness as if it is an act of heroism is “argument based on emotion”, and in this case… destructive hyperbole.

It is important to realize that escalating anything beyond what it requires, raises (or lowers) a standard which should not have changed.  If you feel the need to post something on Facebook, leave out the temptation to give it an emotional sales pitch.  Let the event or article speak for itself.

It is, in fact, a form of crying wolf… which can done with both complaining and praise.



16 Mar 2019
Unexpectedly Joining the Distributed Workforce

After an unusual set of circumstances, my company has shifted its IT and software development staff into a distributed workforce even though all of us are within a local drive of the office.  Previously other terms were used for this type of work, like working from home or working remotely.  But it is so much more than that.

The distributed workforce is becoming a common buzzword now, describing people who rarely or never come to a physical office.  It’s a new world for me, but not for my wife.  She worked for a company in Pittsburgh for a year, before we decided to move back to Florida.  She had proved herself to be quite an asset, and the company allowed her to take the company laptop and other equipment with her and give it a try.  It has worked quite well for her.

Matt Mullenweg, the co-creator of WordPress blogging/content management software, has produced a video on the distributed workforce here. His new company is 100% distributed workforce.  Ironically, my wife has been working for over 18 months in Florida and there were 14 people in the office when she left Pittsburgh for Florida.  There is now only one person in Pittsburgh who goes into the office, so the idea has even caught on with her company.

So after about two months in the distributed workforce, here’s what I have found:

The Good

You get a certain part of your life back by losing the commute to the workplace. Another part of this is lowering the stress from rush hours, overly assertive drivers (aggressive is a label), accident delays and other negatives to a regular commute.  There is also a savings in fuel costs, toll road costs, and maintenance (less wear and tear), although those costs won’t totally go away.

You can choose where you work, at pretty much anytime.  The terms “working from home” and “working remotely” are too narrow, so the distributed workplace implies any place other than a fixed location:

  • You can decide to spend sometime in another location and just work from there.  My wife and I recently went to Kansas City, where our daughter goes to school, to have some time with her and take care of some chores at the house.  Some of my coworkers have or will shortly be working from out of country–just to have a change of pace.  I often see distributed workers just hanging out for an hour or two at a Starbucks or other place with free WiFi.
  • A group of your co-workers can decide to work in a public area for several hours to collaborate in person. I recently did this with some coworkers to coordinate the final stages of a project for deployment.  It was a newer marketplace with a microbrewery and food shops, and we went in the middle of the week when the volume of shoppers was low.  The merchants were happy to see us and others with laptops showed up in the marketplace.  This gave me a fresh perspective on the value of the buy local movement.
  • Your home office is your own environment, which gives you a lot of control. Being a software developer, immersion is a key aspect of developing code.  I worked for 8 years in a Microsoft-like environment, which was private offices with a door.  Closing the door was only done to block out the rest of the office for some immersion time.  This gets really good in a home office, because people can’t just walk up to you and disrupt you when you are immersing.  Also, in areas where there is no office, it is amusing to see the 50/50 split among the workers who want overhead lights on or off while working at their workstations.  The home office eliminates that debate.

The Bad

Initializing social contact becomes a proactive effort.  In the office environment, people often initiate conversations by simply coming into contact with another by chance. Because the distributed environment eliminates this chance contact, there has to be some initiative to create some chance contact.  At a minimum, companies generally plan some kind of team activity when everyone can relax together.  This is a good reason to set up a permanent video conference called “the water cooler” so that people can just check-in outside of scheduled meetings, say hi and chat with whoever is there.

It requires diligence to keep up with all the things happening on the team, and to report all the things through more formal channels in the team. Similar to chance conversations, being distributed also eliminates hearing about something from another conversation nearby which should have been communicated.  The “water cooler” open video conference can sometimes help with this, and can be a good measure of where documentation or communication is lacking.

It requires a high level of self-discipline.  While I list this under the bad part, it is only the adjusting or re-adjusting to the lack of immediate personal feedback.  It is not too difficult if you’ve worked independently before, but leaving the office environment where your team is physically present will require this shift.

If you are not in the habit of exercising, get started as soon as possible.  For some people who are not involved in regular exercising, working in the distributed workforce can actually remove the only form of exercise they have: walking to the office.  Where we live, we have a community pool and a nice 1.5 mile walk we can take daily.  Find whatever works for you and do it.  It helps to avoid feeling isolated when you are not often around your work team, and the exercise is always good for your health.

The Good or The Bad … Depending upon your situation

The home life can not interfere with the office time.  My wife and I are now empty-nesters in middle-age, so this is not a problem for us.  She has her office in the front of the house, I have mine in the back.  The only time we see each other when we are working is when we take a cappuccino break, or sometimes even lunch.  If my kids were still living at home (especially under the age of 5 or 6), this could be a challenge to manage.  Still, I’ve seen some people manage it amazingly well.

Some final thoughts on why this is growing into the norm for a lot of companies

The idea of work following the sun (as Electronic Data Systems used to refer to work transferring from one team to a team on the next continent on a near constant basis) has been around in some valid form since the 1990’s.  Remote working is not new.  But there have been several events in technology and culture which have made wide adoption of this work phenomena possible:

The switch to SaaS (Software as a Service) and the extensive adoption of the cloud.

As a software developer, it was difficult to envision, even just 5 to 10 years ago, being able to write code and manage build processes while outside of a secure office environment.  The build servers were generally in some restricted part of the company, and the development and testing process stayed on corporate owned and managed servers–often in the corporate facility itself.  The production servers, where the product was deployed and served the public, was the first place the code was operated outside of the corporate IT department.  Usually, this was on hosted servers in one or more data centers.

With the advent of the cloud, and Software as a Service impacting even the coding and build tools (Azure, Amazon S3, GitHub), source code and build processes now exist outside the company’s IT department hardware.  The IT and DevOps folks are just tenants of a larger system in the cloud.  In fact, in my current position, I don’t use a VPN except on rare occasions to directly access a server on Azure or a corporate server with legacy info which has not yet been transferred to a SaaS service.

So while distributed work was enabled by the tools software developers built, now even the development process itself is distributed work.

The incredible growth of high speed internet between continents

Back when the United States began military action in Afghanistan after the September 2001 attacks, I remember the almost comical transmission delays when a news agency (CNN, etc) did a live report from the scene.  Since the primary signal transmission went over a few satellites to transit over the continents, the delay was often 2-3 seconds.  Most inter-continental internet traffic still traveled over satellites at the time as well.  The delays were annoying, but I do remember it being fodder for a Saturday Night Live skit about two comics separated in Afghanistan and the United States were trying to do their routine over the “live” link.  It was more irony for me, in that the same timing disruptions they experienced in trying to do their routine in the skit, was something I was experiencing when talking to overseas teams in India at the time.

A signal travelling to a (geosynchronous) satellite has to travel 22,236 miles, and the round trip is 44,472 miles.  When you consider that the speed of electricity is 182,000 miles/sec, that’s almost a quarter of a second travel time.  If it has to travel over multiple satellites, it’s roughly 1/4 of a second per satellite.  And in a phone call or video call, that’s just the delay from the microphone on the far end to the speaker on your end.  That same delay occurs when you answer back.

About four months ago, the company I now work for contracted with a company in India to do some coding.  And as we did work with them over video links using Zoom, it was immediately clear that something had radically changed.  The timing delays were gone… all of them.  I was so pleased with how much the absence of timing delays made the conversations more natural.

Curious to what had caused this, I did some quick research.  The reason it has improved so much is that today 97% of all intercontinental internet traffic is carried by an undersea fiber optic cable.  97 percent !  How far we have come in just over a decade.  Undersea cables (copper) have been around for many decades, and were designed for telegraph and telephonic transmission across continents.  There has been a substantial amount of effort to lay undersea fiber optic cable to increase the speed and capacity between land masses.

When the undersea fiber optic cable is used, the travel distance from Florida to India is about 10,000 miles.  In addition, when the signal changes cables during its route, it does so at a junction box right in the cable. This increases the travel distance only by yards or feet–not by multiples of the entire distance.  This cuts the one-way time for the signal to travel down to between 5/100ths to 10/100ths of a second, making the response time difference very noticeable.

To get an idea of the extent of underwater intercontinental fiber-optic connections, check out this map. The cables represented by a grey color are not yet operational and have the planned date of launch next to their name.

In conclusion

The distributed workforce is one of the gems of the global village envisioned long ago, and should be embraced.  It opens up a world of possibilities.  And I really like it.

A side note: My wife and I worked (not distributed) for the same company from 2007-2015.  We are now both distributed workers working from home, but for different companies.  We’ve kinda come full-circle.


29 Aug 2018
Real Password Security, Using the KISS Principle

Keep It Simple and Stupid!

If you hate those extremely over-complicated password requirements which paranoid corporations are embracing, you will love the changes that NIST issued about a year ago.  The problem is, corporations aren’t really showing any interest in it.

It is time to point them the the new guidelines, because the current ones are making life with a computer unbelievably complicated.  The exact opposite of what computers are supposed to do for us.

NIST changed the guidelines because, not only do the strict requirements of character patterns cause confusion among users, but those same guidelines actually make guessing the password easier rather than harder.  Part of the problem with the initial guidelines in 2003 was that it violated a very simple principle:

“The danger is not that computers will think like men, but that men will think like computers.”

NIST realizes their mistake from 2003, and have now issued guidance that is more realistic… and actually might return the ease of computing that was originally promised.  You can read about it here.

Ironically, the math teacher who introduced me to computer programming in my teens had a very simple method for making his passwords:  take a foreign word, and either spell it backwards or throw some random digits in… or both.  Easy to remember because it was personal to him. Tom Lehrer, the Harvard professor who had a cult following int the 1950s and 1960s for his comedy acts on piano, clued us into this.  In one of his acts, he referred to his eccentric friend Henry, who spelled his name Hen3ry… with the “3” being silent.  You get the idea.

The safest passwords are something personal to you, which others don’t know.  Not secret desires, not old nicknames, … or other things you think are secret but you probably did share with a friend or two.  It is just some things that got stuck in your mind that no one else knew or cared about.  Some examples:

  • Defunct ID numbers you had in your youth.  Defunct meaning they have not been used for so long, that the government destroyed the records.  Nowadays, that’s usually 10 years .
  • A personal acronym: a phrase made from a personal statement only known to you.  E.g.  “Have you had your fill of the day” becomes HYHyfoTD, with any variation on capitalization you want.

…and, of course, intentionally misspelled with maybe some extra characters thrown in (as my wise math teacher once said).  The idea is to not make your password verbatim to the thing stuck in your head, but it is the root… and the rest is triggered by muscle memory (or, the memory you develop from doing a thing over and over again).

So at least point out this change to your employer, vendors with whom you do online business, etc, and urge them to follow the new guidelines.

06 Aug 2018
Use Meaningful Method Names in WebAPI (.NET)


I don’t know if it comes from laziness in changing a default name from a template, or a misunderstanding of the attributes HttpGet, HttpPut, HttpPost, HttpDelete or HttpHead.  Regardless, having a WebAPI method name in code called Get() for a single method with an HttpGet attribute, Put() for HttpPut, etc… is bad practice.

Use method names which reflect the true functionality of the method.  E.g.


public async Task<User> GetUser(…)


public async Task<User> UpdateUser(…)


public async Task<User> CreateUser(…)   // or AddUser(…)


public async Task<User> RemoveUser(…)   // or DeleteUser(…)



This is not so much for the server code, although it will be useful when you have more than one, HttpGet, HttpPost, etc method on the controller.  It is actually for the client code.

What’s easier to read in client code you see for the first time:

var x = ctl.Get();


var x = ctl.GetUsers();

var x = ctl.GetUser(string name);

The intended functionality can be traced with argument patterns, and “Go To Definition” jumps.  But changing method names to match specific intent makes code read like a book.

Food for thought: hopefully you will see the value of leaving good, well-formed code to the inheriting developers of your code.


23 Jan 2018
Paper currency… its final countdown has begun

You might think I am writing about Cryptocurrency… but that would miss a much bigger picture.

Back in 1999, as the Y2K scare approached, I spent a lot of time diffusing potential panic from people who not only did not understand technology, but also did not understand the book of Revelation and what it actually says about the end times prior to Christ’s return.  It was a big challenge, because of lack of knowledge or misperception.  But the argument was actually quite easy and simple: cash was the major method of payment and would be for quite some time.  Why?  Because there were too many gaps in electronic commerce which only cash could fulfill.  You can read about them here, in a post I wrote about Square the year it made its debut (2012).

Two major developments have occurred since that article.  First, device apps for payment have multiplied and improved, even to the point of making a credit card reader obsolete. Second, the amazing rise of crytpocurrency enabling a true form of electronic cash.

To understand a new third event which just occurred, I have to go back to 1999 again for an argument I made on how the switch to a cashless society would occur.  It is based on a 4-step program, similar to how a manufacturer or service company gets a new product or service into the market.

Step 1: Introduction and adoption … I have this great and convenient new thing, which is better than the thing you currently use… try it for free or a ridiculously low cost.

Step 2: Tap rooot … You like my product or service so much, and it benefits you so much, now you start paying something for it.  It’s too valuable and convenient to go back to the old thing.  This step can occur after the new thing has proven itself to the buyer/user, and the old thing is no longer needed or is now too inconvenient to go back to.

Step 3: Deprecation of the old… You holdouts using the thing which my thing replaces, you now get a disincentive or penalty if you refuse to make the change to my new thing.

Step 4: Elimination of the old… You hard-core holdouts now no longer have access to the old thing (grandfathering ends), and must switch over to the new thing.

A great example of this is paper checks switching to electronic checks, which began over three decades ago in the 1980’s:

  • Step 1: Direct-depost began to appear mostly for government employees and some large corporations.  People who adopted it loved saving a trip every payday to the bank.
  • Step 2: Not completely following Step 2, banks began to actually reduce fees for customers who used direct deposit.  The cost savings compared to paper processing were so great, that they needed to provide a strong incentive for direct deposits to become widely accepted.  It is the B-side of step 2 (exceptionally strong incentive for the new), but accomplishes the same goal.
  • Step 3: The holdouts for checks have generally seen a rise in the cost per check or, when not willing to accept the fee per check model, the minimum balance in the checking account was raised substantially to offset the processing cost.  In the 1980’s, you could get free checks and no service fee for as low as a $100 minimum average monthly balance.  Today, that number is easily $1,000 at most banks.  Note: I am excepting Credit Unions for this, since their rules are different than banks.
  • Step 4 will be arriving soon for checks.  The number of checks processed has dropped dramatically over the years.  I’ve seen only one thing which is truly blocking it.  Certain companies (mostly utility companies) try to charge a convenience fee of about $5.00 for processing a credit card or ACH payment electronically instead of check.  This is mostly motivated by protectionism, and sometimes there are laws preventing the company from rolling a processing charge into the bill, but the days of these practices are numbered as well..due solely to basic economics.

So what about cash?  If anyone paid any attention to the value of the US Dollar in 2017, the next two paragraphs will make sense.  We hit step 3 for cash during this decade, due to the increasing use of credit cards and online payments for regular, everyday commerce.  In fact, there are quite a lot of stores I have seen that either add a charge for using cash, or provide a discount for using a credit or debit card. The predominate payment method at the local farmer’s market here is credit card via a Square reader in an iOS device.  That’s quite a change from only five years ago.

So what is the transition  to Step 4?  It will be driven by a factor that will soon make its way into the United States: hyper-inflation.  Last year, the United States Dollar lost about 10% of its value.  While that measurement is from comparing it to the values of a set of dominate currencies, you can easily see the effect in the prices of the meals you are eating out as well as the prices on the grocery shelves.  And there are other economic impacts about to make it even worse.  All in all, the stage is ripe for hyperinflation.  One of the driving factors of cryptocurrency, besides removing the middleman between the buyer and seller, is to store liquid assets in a vehicle that is more stable than fiat paper currency.  And the US dollar, one of many fiat currencies, is becoming a vulnerable currency.

So once the amount of denomination increases and volume of currency printed to meet basic demands can no longer be economically sustained, the need to eliminate paper currency to keep up with hyper-inflation will be unavoidable… and step 4 will be completed.  After all, increasing the money supply in the digital world involves updating some bytes.  In the paper world, it involves endless printing and transportation costs that are prohibitive.  Just ask anyone (if they are still around) who lived in the Weimar Republic in Germany in the 1920’s, and anyone in modern day Zimbabwe.. of which plenty are still around.

Brace yourselves… it’s ugly, and it is not very long before it arrives.

UPDATE (Feb 25, 2018): The IMF late last year published “The Macro Economics of De-Cashing”, which provides good detail of the motivations and challenges to remove cash from a society. Currently two countries are aggressively working to eliminate cash (Sweden and India), and the reasons they quote are listed in the document.

Don’t be deceived by the apparently benign nature of this document. The truth is, the world government system being manifested for its role in the near future, requires that cash be eliminated to enforce its agenda through economic “incentive”. Read this document with Revelation chapter 13 in mind.

26 Nov 2017
The Call for a Constitutional Convention

It’s time. The United States Constitution, in Article V, has a clause describing a Constitutional Convention which the states may invoke with 3/4 of the State Legislatures requesting it. It is a safety valve for an out of control federal government, and the time to pull that valve is now.

The constitutional convention is initiated by the States and Congress is only notified that it will occur, and the outcome: new Amendments to the Constitution proposed and voted on by the States themselves.  Congress has no say or authority over the process.  Whatever Amendments pass in the convention itself, go back to the States themselves for ratification.  If you are not familiar with it, watch this video for a summary.

The old adage of not letting the fox guard the chicken coop applies here: you can’t ask the Federal Government to fix itself.  It will never work.  Everyone who strongly sides with one political party or another to force change needs to let that go.  The parties have been playing their constituents off on each other for decades: they know how to manipulate the masses to centralize their power.

So what Amendments should be proposed to the Convention? There are several key ones which need to go first:

First: Prohibit Congress and the Senate from passing laws, to which they are exempt or otherwise unaccountable to.

This is one which is badly needed. There is strong precedent for this: the Magna Carta of 1215. This document has an interesting history, but it is the basis of legal principals we take for granted today like “habeas corpus”. It was also a motivation for the American revolution: King George was passing laws targeted at the colonists, which did not apply to him or his government. As much as people love or hate the Affordable (ha!) Healthcare Act, the fact remains that members of the Senate and House of Representatives members have their own healthcare plan separate from it.  And there are plenty of other things which Congress passes and isolates itself from.

This is elected officials creating an unaccountable class for themselves, which makes them less in contact and responsive to real needs of people.  This we have witnessed for generations, and it is time to pull them out of their bubble of isolation.  We pay the penalty when they get stuck in it, unaware or not.

The precedent set by the Magna Carta is the King is bound to his own laws. Even Jesus is bound to his own laws.

Second: As the office of the President and Vice-President currently has from the 22nd Amendment, impose term-limits on members of Congress.

The value of this can only be seen in light of lobbyist money, which enables entrenchment by long-term (sell-out) Senators and Representatives.  It also addresses an ugly reality of the governed: they get too comfortable with the incumbent (fear of change), exacerbating the problem.  As the first proposal above says, Congress has a bad habit of exempting itself from laws it passes.  So it should not be a surprise that the 22nd Amendment targeted the President and Vice-President positions, but changed nothing about unlimited Congressional term lengths.

Third: Explicitly declare that corporations or other legal entities are not to be interpreted as individuals, when determining the rights of individuals as described in the Constitution.

This resulted from a horrible decision by the Supreme Court.  It has been used by companies to sway its employees into supporting causes which they would not, and has been abused by companies like Verizon to declare that Net Neutrality violates their free speech (at the expense of everyone else’s free speech).  Most people who protest on the street accuse American corporations of having undue influence on politics.  This ruling is one of the primary reasons it has become so bad.

I recommend reading this NPR article on the Supreme Court decision which describes how the scales tipped way too far in favor of corporations and opened the door for abuse.

A side note: An organization was formed out of the Occupy Wall Street movement called the Wolf PAC, which has advocated prohibiting outside campaign contributions other than publicly provided funding for campaigning.  It’s a good idea, even a great idea… but a word to the people in that movement.  Good ideas can easily get diluted and lost, when people see the narcissism, disrespect, insensitivity and ultimately… the physical mess and squalor you leave behind spreading your message.

Fourth: Require a timely vote of 2/3 of the State Legislatures to approve an annual Federal budget which has a deficit.

This restraint has become critical. There is an argument that deficits are sometimes needed (especially during times of war), but the almost $20 trillion deficit has put the US economy in a dangerous position. Budget matters shouldn’t just be a tug of war between Congress and the President.  The States need to have the ability to say no, and have that be the final say.

Fifth: Don’t allow verbiage regarding a time-limit to be contained in an Amendment for its ratification, and also provide a way for the States to rescind an Amendment which has not been ratified after a certain number of years–regardless of whether Congress or the States at a convention passed the proposed Amendment.

The value of this takes a little explanation.  The Equal Rights Amendment, which was passed by Congress in 1972 and forwarded to the States for ratification, contained a line item in it which required it to be ratified by the States within seven years.  Even after voting for an extension of time to ratify it, it still failed to be ratified.  My question is why the time limit was imposed in the first place?

Now let’s look at what became the 27th Amendment in 1992.  The Bill of Rights is what we refer to as the first 10 Amendments to the Constitution.  But what many people don’t know is that 12 amendments were originally approved and forwarded to the States for ratification.  Up until 1991, those extra two Amendments were in a non-ratified limbo.  One was related to stricter redistricting rules for Congressional districts, and the other applied a restriction to Congress collecting a pay increase for itself (since they vote on their own pay increase).

And the catalyst for the 27th Amendment: In 1991, Congress pulled its usual sneaky trick of quickly and quietly voting itself a large pay increase just before its Christmas break, at a time when the US economy was struggling.  This time, it backfired on them publicly in a big way.  People were so outraged, it motivated the states to move towards ratifying the latter of those two non-ratified Amendments… now the 27th Amendment.  Basically what the Amendment says is: “Congress, if you want to vote yourself a pay raise, go right ahead… you’ll just have to survive the next election to collect it.”  Instantly, some balance to power was restored.

A side note: If you have a souvenir parchment of the original Bill Of Rights, sold in places like the national archives and the Liberty Bell display, odds are it is the full 12 proposed amendments on it.  The two (at that time) un-ratified amendments are #1 and #2 on the document.

This Amendment was in limbo for 202 years.  And it solved a problem 202 years later, which couldn’t be solved without calling a Constitutional Convention.  Congress was certainly not going to pass a law which denied itself more money, right?

So what has this got to do with the Equal Rights Amendment? Simply put, there was a lot of resistance to it at the time because of its broad scope.  Would it have eventually passed?  Who knows.  Maybe it needed different verbiage to pass, or something else.  But I see the 7-year time limit for ratification (or any time limit) as a problem.  If a time limit had been imposed on the now 27th Amendment, we would not have had a quick fix to a problem that has grown over the decades.  Our founding fathers had, indeed, provided a solution to the problem they foresaw even 200 years ago.

Basically, the time limit suppresses the value of an Amendment in terms of “an idea ahead of its time”.  The Equal Rights Amendment may have been one of those (wait another few decades to know for sure).  By not limiting the time for an Amendment  to be ratified, and providing a way to explicitly revoke a proposed Amendment, we gain two things.  An idea ahead of its time is protected, while an amendment which becomes potentially dangerous and flawed over time can still be taken off the table.

So What Else Should Be Made An Amendment?

That’s a good question.  One that I think should be considered is returning the election of United States Senators to the legislatures in their own state, which is who they are supposed to represent.  But, as any historian can tell you, the vote was originally changed by an amendment to a popular vote because of abuse.  So the pendulum would have to swing pretty far the other way to change it back.  It may not be quite there, but it is close.

The best lesson about constitutional amendments (and the constitution itself) is to remember two things:

  • A Constitution is focused on establishing structure and scope of authority, with only the amount of procedure necessary described in it.
  • It’s not the place for social issues (as the 18th amendment and 21st amendment clearly demonstrate).

Net Neutrality was for me, the final straw.  If you really want to take back America, which all sides do, the Constitutional Convention is the RIGHT step.  The only abuses we have in Government are the ones we have allowed.

19 Jun 2017
A Common Template Approach to Iterative Tests in NUnit 3.0 and Microsoft Unit Tests

NUnit and Microsoft Unit Tests use an approach of attributes on a method to identify a test which is expected to throw an exception, to differentiate tests which are expected to not throw an exception and just report success or failure based on Assertions (AreEqual, IsFalse, IsTrue, etc).  For individual tests, this approach is very effective.

Recently, I wrote two complex classes which required iterative testing on sets of parameters.  One project at work used some complex logic to evaluate arguments.  This required over 80 lines of parameter combinations to be validated.  This project used the Microsoft Unit Test architecture.

The other project was a personal project for a Url parser which was designed to validate patterns used by the HttpListener object and be less restrictive on content in the host name and other items.  This project uses NUnit 3.0.  Both of these projects needed iterative testing to cover the many variations in behavior from combinations of parameters.  And the results could be either assertions, or expected exceptions.

The example here is for NUnit.  Microsoft Unit Tests use attributes for similar iteration.  The CSV parsing in the NUnit tester is handled by a handy assembly named CsvReader available via NuGet.  And the CSV or TSV file defining the iteration tests is copied to the output folder, where the test assembly expects it.

This file contains the test data definition. There are some key columns in this file which makes it a good template:

  • The DataRow column: similar to the Microsoft Unit Test architecture, this column marks the row of the test for use in output to identify any row with problems.
  • Any column containing {empty} represents an empty string to reduce ambiguity.
  • The column ThrowsException is either {empty} to identify tests expected to be exception-free and verified with Assert.*(), or contains the class name of the Exception expected.
  • ExceptionContains is a further test of an an exception: it can be {empty}, or be a string expected to be contained in the exception message text to further qualify the exception expected.
  • Notes is a column not used in the test: it is to help the poor developer who can’t decrypt your specific intent from the test properties.

All other columns are properties for the test.  Columns containing expected results will sometimes appear as “n/a” because an exception is expected, so the “n/a” is a semaphore that an exception occurs in test.

This file contains the test class for the UrlTest, which uses the TSV file as its source.

Line 16 Contains the TestData class which provides the test properties to the iterative test method at line 59.  The properties are loaded into a StringDictionary object, which uses the column name (or property name) as the key for its value.

The test method at line 59 converts the content to local variables, then uses an if() statement to determine how to call the work method: expecting an error, or not.  In case there is a need to debug a single line of the TSV (i.e. a specific test case), the commented code in lines 86-89 can be used, by adjusting the targeted line’s DataRow value to the test parameters to debug.

That’s about it.  This method can be easily adjusted for other iterative tests.  The beauty of it is that is can used to test many arguments/one answer, or many arguments/many answers, and also handle exceptions thrown regardless of expectation.