Monday, January 30, 2023


 How To Secure A Website

One Man's Opinion


The Philosophy

The following approach is top level and omits many concepts. It is intended only to suggest a more secure approach that sites can use if those sites actually want to protect their user's data.

If everything is only in the clear while a user is logged in, then only those users' data can be hacked The bulk of users, not currently logged in, are protected with good encryption. Also note that each user is encrypted with a unique public/private set of keys.

Any website that supports user accounts must take extraordinary steps to protect that user's data.

One reason, often given to reject this approach, is the need to make the user experience swift and convenient.  Another reason to reject this approach is to reduce the per-user cost of doing business.

I am certain there are many other reasons to run an insecure business, but none of them are good reasons.  If I were to run such a business, I would insist on the following:

1. The user's login credentials must never be exposed in the clear.

3. No user data should exist in any database unless it is encrypted.

3. The user's wallet must be encrypted and stored separate from the user's other data.

4. No encryption of user data can be briefly allowed only if that the session interaction needs to be livelier.


1. Login Credentials

When a user logs in, even when using two-part security, that user's login credentials must be immediately one-way hashed, and the hash used instead of the login credential parts themselves. Also, if possible, the credentials should be cleared from memory after the hash has been created.

For example, an internal machine (or machines) receives a SHA512 or better hash and returns a public key if successful or an ERROR if it fails. It can also return other information, such as the user's index number.

That machine is populated with a SHA512 or better hashes when an account is created.  The web interface collects the login name, a pin, and a password. The pin is computed to yield a number 0 through 9, where that number determines the order of the combination of name, pin and password are hashed. For example, a pin of 555 might modulo 9 yield 6 specifying for example the order of: "pin, password, name."

That hash is passed by the web interface into the internal machine which looks it up and returns a public key if successfully found. If the hash is not found, the internal machine returns an empty string or some other indication of failure.


2. Credentials Must Be Encrypted

Whenever the users data is changed (or a new user is added), that user data is transferred into that same (or a different) machine, which randomly selects a new public/private key pair; associates that new private key with the saved login hash; and returns the encrypted user data for storage in the encrypted-user database.

The key for the encrypted-user database should be an index number, but should never be the login hash, which can be used to fetch a public key to decrypt the encrypted-user data 


3. The User's Wallet

The user's wallet (which holds credit card and perhaps bank credentials) must only exist in an encrypted-wallet database.  That encryupted data can exist briefly in decrypted form for a purchase or to add or subtract a card or other financial information.  This data must only exist in the clear for the briefest interval and only as long as absolutely necessary.

There is an internal machine that receives the wallet data, and the user's ID number. It randomly selects a new public/private key pair, encrypts the wallet with that private key, and returns the encrypted data and the user' ID number on success.

If the web interface needs to use information from the encrypted-wallet, it passes that encrypted data and the user's ID index, and an SQL query to fetch that information. The internal wallet machine (or machines) uses the user's ID to select the appropriate public key, decrypts the wallet into a small one-item database, and runs the SQL query against that one-item database. Upon success, it returns the result of that query. A timeout is enforced. The one-item database is only allowed to exist for a small window of time.

If the web interface needs to update the wallet, it passes the encrypted data and the user's ID, and an SQL UPDATE command. The internal wallet machine (or machines) uses the user's ID to select the appropriate public key, decrypts the wallet into a small one-item database, and runs the SQL UPDATE against that one-item database. On success, the wallet machine randomly selects a new public-private key pair associated with a user ID, re-encrypts the wallet, removes the one-item database, and returns the newly encrypted wallet and the user's ID. The web interface than updates the encrypted-wallet database with this information.


4. No Encryption While User logged in

Instead the user data (except the wallet) is in the clear only for as long as the user remains logged in for swiffer interaction. For this reason only, a site should recommended that users log out, rather than relying on cookies to stay logged in (which can be copied and used by others) unless those cookies are also encrypted.


Sunday, February 27, 2022

Oregon Rail Plan


Oregon Passenger Rail
Bryan Costales

Rather than spending hundreds of million of dollars exclusively on expanding freeways and freeway interchanges, the state of Oregon should consider a more sustainable carbon free alternative.

One such alternative is to connect all the cities and towns of the state with electrified rail. This doesn't have to be high speed rail, because anything significantly faster than driving will lure people out of their cars. A class 7 track would work wonderfully, because trains could run up to 120 miles per hour. This is not high speed rail that achieves speeds over 250 miles per hour, but more affordable medium speed rail. The idea is to allow travel from any city or town in Oregon to any other city or town in Oregon in significantly less time than driving.

The state of Oregon already plans to spend millions of dollars to upgrade the track along the Amtrak corridor so that diesel trains can travel faster. However these trains must still share tracks with freight trains. And these existing diesel trains risk collision by crossing many streets. When a train crosses a street, that is called a "grade crossing." Automatic arms lower to stop traffic, but that can still risk a vehicle becoming stuck on the tracks, or people accidentally walking across the tracks to be hit. This becomes even a more likely scenario when trains travel at 120 m.p.h.

A state rail project could lay class 7 track along a private right of way, by building bridges or tunneling where necessary to avoid grade crossings. That right of way must be for the exclusive use of passenger travel, and would bar access to freight trains. In fact with this system using a wider gauge, would disallow all freight.

If only passenger trains were allowed, then stations could have safety gates and could be automated to avoid the cost of train operators.

Passenger trains could however haul baggage, mail, small packages, and other light freight in common with passengers. For example Fedex might want to purchase one or more electrically driven cars to be hauled along with passenger rail. There would have to be weight limits, otherwise bridges would become too expensive to build.

Although electrified track is twice as expensive per mile to construct than diesel track, it is also environmentally better. Electrified trains are lighter than diesel trains, so bridges may be built for a lighter load.

After 50 to 75 years of construction, the entire system might be complete, How should such a large system be paid for and constructed? Two sources make sense:

1. A statewide non-regressive sales tax. Perhaps only on related purchase such as gasoline, diesel, tires, car repairs, batteries, and parking. Or perhaps on all potentially unhealthy items, such as carbonated drinks, alcohol, and pot. Or perhaps a tax on all these and more.

2. Toll roads. Perhaps turn all on-ramps to interstate freeways into toll booths. Or perhaps toll on all parking places using property tax measures. Or perhaps a toll when automobile registration is renewed, based on miles driven.

It is not the purpose of this essay to recommend any form of rail construction funding over any other form. Only elected representatives could make this decision.

When envisioning this rail network, other than city centers stations, what other stations might be desirable? Other such places that could require stations might be:

1. Airports. Every airport that serves the public with regularly scheduled flights might host a rail station in close proximity to the airport's entry.

2. Population centers. Not all population centers are in the middle of a town or city. Often the actual peak of population is in some neighborhood well away from the city center. Such additional population centers might also be served by a rail station in addition to the downtown.

3. Universities and Colleges. Centers for learning can be large enough to be considered a unique population center. Such centers for learning might also be better served by rail stations.

4. Some may believe that commercial venues should also have train stations. Such venues as shopping centers or fairgrounds may seem desirable, but perhaps might be better served by local trolleys or buses?

Intra-State Freight

It might make sense to run rail freight to many of the same locations as passenger rail. The state might determine that instead of running two tracks of passenger service, it would make sense to run four tracks, two for passenger service, and two for freight.

Because freight is generally heavier than passenger cars, bridges and elevated sections of track will have to be constructed significantly stronger. Four tracks make the system more resilient, because a derailing on the freight line could allows freight on a section of passenger tract to bypass the outage. Similarly a derailing on the passenger line could allow passenger trains on a section of freight track to bypass the outage.

For such a dual system to work, both passenger and freight would need to be identically electrified, with the same gauge and class of track.

Below is one possible (of many) maps of suggested stations and routes. Naturally, no routes or stations should be planned without public input. This is more of a dream than an actual plan.


Tuesday, March 23, 2021

C Is The Best Language



The following text was extracted from my recently revised "C From A To Z" book. The tables and bulleted lists below look far better in that book.

Overview

 The C language has been called: "The only portable assembly language." Which means that C is available on all computers and can be used to write anything from operating systems to device drivers, from web servers to user interfaces. Correctly written C Language programs always run significantly faster than programs written in other languages. This speed and portability has distinct advantages, both economic and application specific:

  • C programs require fewer CPU cores to accomplish the same tasks compared to other languages. 
  • C programs manage their own memory so are not slowed by garbage collection. 
  • C programs are equally adept at handling strings and binary (ISO) data.
  • C programs, even when run by root, can give up special permissions to run more securely.
  • C programs run without the need for an enclosing environment. Ruby, for example, often requires Rails to start before the Ruby program can run. Java, for example, requires its Run Time Environment to be present to run the Java program.
  • C can be used to write operating systems. Unix and Linux, for example were written in C.
  • C can be used to write other languages. C++, Ruby, Python, Java and other languages are written in C.
  • C can be used to interact efficiently with the outside world. Apache is a popular web server that was written in C. Sendmail, postfix and qmail are all written in C and are used for the world-wide exchange of email.
  • C can be used to create databases. Posgres, mysql, and Oracle are all written in C.
  • A well written C program is extremely portable and can be easily built on any system. Sometimes, a built C program can be run on other related systems (such as flavors of Linux) without the need to rebuild it for each system.
C versus other languages
Why should you learn to program in C when there are so called modern languages available? After all, businesses practices often drive language adoption:
  • Many website businesses only hire programmers who can write using the Python, Ruby, Php, or Java languages. 
  • Other website businesses are only interested in object-oriented languages and programmers that use them, such as C++, Python, Ruby, Php, or Java.
So one must wonder, if there is any role for the C language in such a world of specialized languages?
Yes there is! Consider the following:
  • All of these modern languages are written in C: C++ is written in C. Python is written in C. Ruby is written in C. Php is written in C.
  • Programs run 10 to 1000 times faster when written in C than when written in one of these other modern languages.
  • C creates slimmer, more efficient code than these other languages.
  • C programs start up faster than programs written in these other languages.
  • C handles errors more adeptly than do these other languages, which typically use traps to handle errors.

To illustrate, we compare and contrast the speed of C to the speed of those other languages. Note that all of the following tests are available in Appendix B.

C runs faster

The problem with interpreted programs is that they run slower than compiled languages. This lethargy is because the interpreter must read and process the code a line at a time. Ruby, Python, Php, and Perl are interpreted languages. For example the php program, or a library in a web application, must interpret (run) your php code.

Compare the run time speed of these interpreted (script) programs against the run time speed for the C language program. All the programs and scripts did exactly the same thing, count up to ten-million with a loop inside another loop. In the following, the time command produces output in four fields of which we are interested in the third, the total run time:

% time php looptest.php

34.82u 0.07s 0:35.18 99.1%

% time ruby looptest.rb

45.19u 0.06s 0:45.47 99.1%

% time python looptest.py

65.24u 0.09s 1:05.97 99.2%

% time ./looptest

1.58u 0.00s 0:01.60 98.7%

Here, the compiled C program (looptest) ran in 1.6 seconds, whereas the interpreted Php program (looptest.php) ran in 35.18 seconds, which makes the C program 22 times faster. We summarize these results in the following:

Table 1: Interpreted Versus Compiled Loop Test Runtime Comparisons

Language Runtime C Faster By

C Language 0:01.60 1x

Php                 0:35.18 22x

Ruby         0:45.47 28x

Python         1:05.97 41x


Another test that looked at the speed of reading and processing files showed similar results. The same file was opened, read and closed in each step of the loop:

Table 2: Interpreted Versus Compiled Read File Runtime Comparisons

Language Runtime C Faster By

C Language 0:03.90 1x

Php                 2:01.04 31x

Ruby         0:37.60 10x

Python         4:57.01 76x

In the above, the file to read was /usr/dict/words, and its lines were counted 1,000 times.

And finally the comparison of results from a simple test to see if a string contains a valid integer. This test is executed in a loop 10,000,000 times:

Table 3: Interpreted Versus Compiled Integer Test Runtime Comparisons

Language       Runtime    C Faster By

C Language         0:02.00 1x

C++ Language 0:04.01 2x

Php                         0:20.80 10x

Ruby                 2:02.10 61x

The loop included a test to see if the check failed or succeeded.

Clearly the C language runs faster than these other languages by a significant amount. If you want to milk every bit of performance from your hardware, C is the obvious choice.

Consider the scalable cost of hardware versus your fixed cost of labor. Isn't it better to double the performance (code speed) on your existing hardware every six months rather than to double the cost of your hardware every six months? Such amazing efficiencies are only possible with C.


Tuesday, February 19, 2019

Socialism Is Good for Capitalism

Homeless Can Be Good for Capitalism

What would you say if I claimed that Socialism could increase the number of customers for almost any business by 14 percent?  You would probably laugh. But read on and be surprised.

Most capitalists oppose socialism because of a belief that the role of government is to maximize the use of capital, while reducing the size and expense of government For example, corporations desire lower corporate taxes so that they may return greater profits to their share holders. Lower taxes means a reduced government and results in, "A lessor boot heel on the neck of every struggling businessperson."

Most businesses achieve higher profits by attracting more and more customers. One way to attract more customers is to advertise. Another way is to reduce customer cost by cutting manufacturing costs by moving manufacturing overseas, or by reducing the number of employees.

But what if there was a better way to increase the number of customers?  Consider that the homeless contribute nothing to the economy and are not customers, yet draw funds from local government, and lower the quality of life for all. Consider that the poor are supported by government expense which minimizes their use as customers.  Consider that the disabled contribute little to the economy, yet draw disability funds from government. And consider that when jobs are scarce, the laid off rely on unemployment payments, far less than the prior income, and of a limited duration.

A Minimum Income

One way is to streamline and thusly reduce the size of government would be to combine the homeless, the poor, the disabled, and the unemployed.  A simple way to achieve this unification is with a "minimum income" or a negative income tax.  A "minimum income" would be administered by the social security administration. A negative tax would be administered by the Treasury Department by way of Income Tax.

I prefer a minimum income because it is administered monthly rather than annually. In its simplest form, everyone with a  social security number will receive the minimum income.

For example, a homeless man on a "minimum income" would be able to rent an apartment, pay for utilities and food, and would be in a much better position to find a job. As potentially solvent customer, he and those like him would increase spending on manufactured goods.

For example, a single mother on a "minimum income" could afford an apartment, utilities and food, and could afford to find child care so she could find a job.  She and those like her would become better customers.

Note that "minimum income" is greatest when all other income is zero.  Then for every $100 that all other income increases, "minimum income" would reduce by $50. This gradual reduction means that when a person gets a job his or her total income ("minimum income" plus other income) will increase to be more than "minimum income" alone.  It is important that minimum income not be cut off suddenly at some level, but rather tapers off so that the poor are encouraged to find employment and better their situations.

As other income increases, "minimum income" decreases at half the rate.

For example, if the minimum income was $1,000 per month, it would reduce to zero when the individual's other income reached $1,900. If a person on disability received $900 per month from the state, they would also receive $550 "minimum income." But if "minimum income" was the law, that same disabled person would receive $0 disability payment, and instead receive $1,000 "minimum income."

But if a state wanted to provide a disability payment over $1,000, they would be free to augment the "minimum income" but that augmentation would become other income and would reduce the "minimum income." For example, if a person qualified for $1,500 per month in disability, the state could pay an extra $500. $500 extra income would reduce the "minimum income" to $750, resulting in a net total disability income of $1,250.

For "minimum income" to work, it would need to be tax exempt. It must also belong to the individual and couldn't be given away, could not be used to settle a law suit nor any other property settlement, and couldn't be garnished or taken by any government nor by any corporation nor any company nor any private individual.  It could not be used to guaranty a loan, because the bank could not take it.

As you can imagine this "minimum income" could only benefit the poor directly. The population of the US is about 380 million, so if the poor represent only 14% of the population, then only 47 million people would be receive this "minimum income."

But what about dependent children of those receiving "minimum income"?  I propose that up to the age 18, such dependent children would receive 1/4 of the "minimum income" those funds to be administered by the legal guardian or parent.

And what about Social Security? It would not change, except that the minimum social security payment per month could never be less than the "minimum income."

How would we pay for the "minimum income"? One way would be to increase the social security tax rate from 6.2% to 7.2%, and to remove the wage ceiling of $132.900 at which social security taxes are cut off.

A 14% increase in the number of customers is nothing to sneeze at.  Would it be worth the cost? It depends on if the increase is permanent and can be counted on by the nation's businesses. If so, budgeting based on such a permanent fixed increase in the customer size will benefit all businesses here and abroad.

Naturally one would not want to implement a "minimum income" all at once. Instead, perhaps at the state level, one could introduce the concept using the disabled as a test, or the homeless as a test. And then track those people to see if the effect is as predicted.

Also note that $1,000 per month was a purely arbitrary guess for a "minimum income". Also note that the $50 drop in "minimum wage" per $100 increase in other income, was also a purely arbitrary guess.  Greater or lessor amounts would have to be decided by those actually implementing this or a similar proposal.

Tuesday, December 11, 2018

A Better Sales Tax





A Better Sales Tax Is Non-Regressive

One problem with the normal sales tax is that the rate is the same for the poor as it is for the rich. Consider a galvanizes pail used in gardening. Suppose it cost 10.00 to buy, and suppose the sales tax were 10%. The cost of that pail would be 10.00 in states like Oregon, that don't have a sales tax, or 11.00 in states that had the 10% rate. The rate in some cities is as high as 13.5% and in others as low as 4%. But all have the same problem. The difference between 10.00 and 11.00 may seem inconsequential to folks with a high income, but to folks with a low income, the difference might be enough to encourage purchase of a plastic bucket instead.

A progressive sales tax would would look much different. It would be tiny or zero for low priced items, but would grow higher as the cost increased. For example the tax on a 10.00 bucket might be zero, whereas a tax on a 200,000.00 boat might be 4%. And the tax on the sale of a 5,000.000 home might be 8%.

When a medium income person buys a home it us usually for less then 250,000. When a high income person buys a home, they usually pay less then 1,500,000. When a wealthy person buys a home they usually pay 3,000,000 or more. It makes sense that, when a wealthy person buys an expensive property, they are uniquely in a position to afford a higher sales tax.

One possible formula for such a non-regressive sales tax might look like this:

$0                -       $9.99       %0
$10              -      $99.99      %0.25 (1/4 percent)
$100            -     $999.99     %0.50 (1/2 percent)
$1,000         -   $9,999.99    %1
$10,000       -  $99,999.99   %2
$100,000     - $999,999.99  %4
$1,000,000  - and above      %8

If you were to buy a galvanized bucket for $9.99 you would owe no tax. If you were to buy $99.99 in groceries, you would pay three cents in tax ($100.02 total). If your were to pay 1,000.00 for a car repair, you would pay $10.00 in tax (1010.00 total). If you were to pay $10,000 to five trees removed and the stumps removed, you would pay $200.00 in tax ($10,200.00 total). If you were to pay $100,000.00 for a fully tricked out Range Rover Sport, you would pay $4,000.00 in tax ($104,000.00 total). If you were to pay $1,000,000 for a small studio condo in New York City, you would pay $80,000.00 in tax ($1,080,000.00 total).

Scaling up of the tax rate moves the bulk of the tax onto the rich.  For such a non-regressive tax to work, there must be no exemptions. Although it is tempting to exempt groceries or prescription drugs, one should resist that temptation. For if groceries are exempted, then similar logic might lead to the exemption of  real estate or car purchases. The choice must be to either scale the sales tax, or to apply the same tax to all and provide exemptions.

Policy will determine the rate that the tax increases. For example, instead of doubling the tax rate for each ten times the amount, perhaps triple the tax for each twenty times the amount.

Policy will also determine the amount below which no sales tax occurs. For example, you might want to benefit the poor and middle classes together. One way to do that might be to charge zero tax for all sales below one-thousand dollars.

One advantage of scaling by a formula is that formula, and starting and ending amounts, are all that are needed to find the tax. A later law might change the starting point or the ending point or the formula, but would likely change only one of the three at at time. This simplifies updates to cash registers.

The alternative is to chart the increments and rates in law. This has the disadvantage that the chart would look like a table and the entire table might have to be altered to change one amount or rate. Updates to cash registers would require a simultaneous update of them all with a new table.

Another requirement should be that sales tax never taxes a tax. For example, sales tax should only be applied to the untaxed portion of gasoline or to the untaxed portion of a hotel room.

This blog is not the end all or be all of a scaled sales tax. It is merely intended as a means to get others thinking about a non-regressive sales tax.

Monday, April 23, 2018

Right To Vote Ammendment


    States have reduced access to voting by various means over the years. Such laws seek to disenfranchise based on poverty, sex, or race. Some states require photo ID before a citizen may vote. Others reduce the number of voting places in low income areas. Convicted criminals are routinely denied the right to vote.
    The fundamental right to vote needs to be spelled out in the constitution once and for all to insure nobody is ever denied the right to vote.
    Also, in recent history, companies, corporations, and the very wealthy have sought to influence elections in ways that reduce effectiveness of the individual vote. Although corporations are people, they are not voting citizens and so should have no right to influence elections. Also the wealthy citizen can unfairly influence an elections more than a poor citizen can. Such behavior is unfair and should be discouraged.
    In support of these ends I propose a constitutional amendment something like the following:
  • Section 1. No Citizen shall be denied the right to vote, except for reason of too young an age.
  • Section 2. Only a Citizen may vote and only a Citizen may influence an election. Non-citizens are barred by law from influencing any election.
  • Section 3. Individual wealth shall not unfairly influence any election.
  • Section 4. The Congress shall have the power to enforce, by appropriate legislation, the provisions of this article.
    Let me know what you think. Should it be worded differently. Should it be reduced to solving one problem instead of three problems? Do you think such an amendment is foolish? Or do you think it may have a chance?

Tuesday, September 26, 2017

Eugene, Oregon's EMX (BRT) Line Versus

EMX Bus Approaches Eugene Station


The Lane Transit District (LTD) opened its EMX (Emerald Express) west 11th Street extension on Sunday last the 27th of September 2017. I rode it on that opening day and found it bumpy but otherwise comfortable.
The EMX system is a Bus Rapid Transit (BRT) system. So how does EMX compare to regular buses and to light rail?


  1. EMX is basically a bus. Its stations are called bus stops. It has many reserved lanes in the roadway where only it, and right turning cars, may drive. It stops at signals just like all traffic and regular buses do.
  2. Because stops are few and far between, you can think of it as more of a Limited bus route. Riding it reminded me of the 38L on Geary Boulevard in San Francisco. A bit faster perhaps, and less crowded then the 38L. But both only stop where they cross other bus routes. In this sense, EMX is a limited stop bus route.
  3. Bicyclists slow down loading because bicycles most be placed on a special rack a the front of the bus, a rack that can only hold two bicycles. Contrast that to the new EMX bus. It has an internal bike rack that can hold three to six bicycles. And because bikes roll easily onto and off of the bus, their loading/unloading does not slow down the EMX bus.
  4. All LTD buses stick to published arrival times posted at each bus stop. The EMX bus posts those arrival times on electronic screens at each stop. When any bus, including EMX buses, runs ahead of schedule, it must pause in a bus stop and wait to get back on schedule. This is perhaps the one most annoying part of riding the LTD system. Buses that pause to fall back into schedule are frustrating. Instead, LTD signs should show when to expect the next bus in minutes. "The next bus will arrive in 7 minutes." That way, even if the bus ran ahead of schedule, the arrival would be correctly predicted without the need to pause at a bus stop. This is easy to change on EMX because they run at 10 minute intervals. So missing a bus causes little harm. This would not work on other bus lines because they run at 1/2 hour and hourly intervals where missing the bus is a crisis.
  5. Despite having laid special concrete in its lanes, the EMX bus ride was bumpy. All buses are bumpy because they run over road intended for other traffic. The only systems that are smooth are rail systems. Portland's light trail system, for example, is smooth. Light rail costs twice as much as BRT to build. EMX could have built half the distance and put in light rail. Would half the distance of light rail have made sense? Subways cost 10 times more than BRT to build. Would on tenth the distance of subway light rail have made sense? Probably not, because BRT gives you more distance for the buck, but BRT runs a third as fast as a subway.
  6. The real advantage of EMX is its frequency. During weekdays, EMX buses run one every 10 minutes. Imagine if all bus routes ran one every 10 minutes. A rider wouldn't need plan on a scheduled bus, instead the rider could simply show up at a bus stop and a bus would arrive within 10 minutes. Would buses be vastly more popular if so frequent?
  7. As an experiment, LTD should run an express on some busy route to see if frequency is a better draw than BRT with it level boarding and scheduled stops. By way of example, consider a 50x that could run out River Road crossing the 51, 52, and 55 lines. If it ran once each 10 minutes, and only stopped at transit transfer intersections, would it be as popular as the existing EMX line?
How does BRT stack up in your town?


Sunday, July 9, 2017

My new favorite artist: Jeremy Geddes

Acedia 2000
Artist: Jeremy Geddes

It is not often I discover an artist whose art I just fall in love with. Jeremy Geddes has this way of visualizing the world that takes my breathe away. Whether floating astronauts, exploding buildings, or split up people, his art is intended to, and succeeds to evoke a strong emotion, good or bad.

I discovered Jeremy in the latest issue of High Fructose magazine. If you are interested in contemporary art, you should definitely subscribe to High Fructose magazine. However, if you are easily upset by surreal art, you should skip this magazine.

Thursday, July 6, 2017

Fake Stars


A backdrop on a stage can be perforated to create the feeling of night time stars. One might call this an artificial night, or one could use the more popular word, "fake." Fake stars imply that they have been created to deceive. Artificial stars imply that they have been created to set a mood. Normally one would not call the backdrop stars fake. But these are not normal times. When the leader of the free world uses the word fake, he does so with malice.

Does this trend imply that we too should adopt a posture of malice? Should we call a toy duck a fake duck? Should we call a Teddy bear a Fake bear? Should we call a model railroad a fake railroad? Should we call an actor in a role a fake person? Should we call a photograph fake art? Should we call store Santa a fake Santa? Should we call a veggie burger a fake burger?

Personally I don't think our leaders create the world in which we live, rather we create the world in which our leaders live.

Monday, July 3, 2017

Rest On Art


While on a trip to Spokane, Washington, I awoke early went for a walk to photograph art. The night before I had seen this bench on my way to have a nightcap and ice cream. It was an art bench created by artist Timothy Biggs using old scarp machine parts from the former Steam Plant. It is not often that a bench on a sidewalk can be art.

Unfortunately the seat was not comfortable to sit upon. It reminded me of sitting on a waffle iron. Not that I have ever sat on a waffle iron. ☺

You can see more shots of this bench here.

Friday, December 18, 2015

Edit Lesson: What's wrong with "here"


The word "here" is one of those unspecific words that can appear in fiction. I say unspecific because it tells the reader nothing about the location other than it is not someplace else.

The word "here" is also unnecessary word that can appear in fiction. I say unnecessary because it can be eliminated with no change in meaning. The default location in fiction is the present location (here) unless otherwise specified.

To illustrate, consider this paragraph from an actual published book.
And here I was, performing that same trick today.
What the author actually means is,
And I was present, performing that same trick today.
But of course that sounds worse. So lets remove the word "here" from the original sentence:
And I was, performing that same trick today.
We drop the "And" and the comma and get a declarative sentence:
I performed that same trick today.
The lesson is that "here" can, and should, be stricken from all fiction, unless used in dialog as part of a necessary jargon or accent.

When editing something you have written, make a pass through it looking for all occurrences of the word, "here." Remove each occurrence and rewrite so that its absence works better.

Perhaps another example will help. Consider:
He pushed open the door and shoved me into his office. What was I doing here again?
Eliminate "here" and rewrite to perhaps get:
He pushed open the door and shoved me through. What was I doing in his office again?
Search your manuscript for the word "here" and eliminate. Repeat until there are no "here" words left. Your manuscript will be better for the effort.

Wednesday, September 16, 2015

An Interesting Rejection





I got the following rejection from Mike Allen at Clockwork Phoenix magazine:

"Dear Bryan, thank you for sending this. Your story was reserved for me to read by one of my assistant editors, but though it's well written I'm afraid the story didn't hold me. Sorry about that! I do wish you luck placing this one elsewhere."

This got me wondering what failed to hold his interest. The story is fairly linear for being a time travel story.  A young married couple visited an old woman selling a condo. But the old woman appeared to be the younger woman only much older. An odd device causes the two women to fall as if the floor vanished. They land on dirt in 1946.  The old woman is killed and the young woman has broken a leg. The bulk of the story's middle is how the woman came to grips with the past and decided not to follow the steps of her prior self.

I would be interested in hearing from you it you have ideas how I might tighten and fix this story. I would be willing to email you a PDF of the story if you can convince me that you are a good critic. Please contact me if you have interest in helping.

Meanwhile I will reread it with an eye for how it slows.

Friday, September 11, 2015

Second Guessing A Penny

Take a moment to wander around your home. Look at all the clocks you have. You may already have looked in response to the recent change from Daylight Saving Time (called Summer Time in Europe). Notice first that clocks are everywhere --on the microwave, on the oven, on the telephone, on your cellphone, even on some refrigerators and toasters.  Notice also that all the modern digital clocks lack seconds.

While wandering did you also notice a penny jar on your dresser? Or at least a change jar somewhere in the house?

Almost all small stores in the States have adopted a penny tray by the register (Europe lags behind in this regard). You place into the tray any pennies you received in change. The next customer may need a penny or two to round out a purchase, and can take them from the tray.  (In some neighborhoods, I have noticed nickels and dimes in the penny tray too, but that is off topic.)

Pennies are becoming more and more worthless. A gum ball from a machine now costs a quarter ($US 0.25). Things that used to cost a penny each, no longer exist.

Pennies are beginning to seem like trash. Who wants to carry around pennies in a purse or pocket? Better to saddle the next person with your worthless trash.

Seconds are beginning to follow the example of the penny. When was the last time a second mattered to you?  Sure seconds matter in races and competitions, but that is why we have stop watches. Sure seconds matter when counting down to a launch, but how often do you launch rockets?

Have you noticed that children "dial" phones, but have never seen a phone with a dial? Have you noticed that children call CDs "records"?

Slowly and stealthily, digital clocks are eliminating seconds from our daily consciousness. What's going to happen when children never experience time passing in seconds. What's going to happen when the only clocks they ever see show only hours and minutes?  How long is a minute, you might ask.  Well, its... one, of course.

"How many pennies can you count in sixty seconds?" you ask your daughter.

"What's a penny?" she frowns. "What's a second?"

---

This essay was originally published on bcxnews.org.

Tuesday, September 8, 2015

A Puppet, a Dog, and a Historian

A trio of Pumpkins

My upcoming Science Fiction novel, "Puppet," is (on one layer) about the travels and adventures of an unusual trio: A patchwork man named Puppet; a large, talking, intelligent dog named Gypsy; and a tall, historian named Horace.

Puppet is a man killed in an airplane crash in the mid 1980's and who was resurrected 300 years later. He awoke to find himself composed of pieces of other bodies connected together into one. Much like Frankenstein's monster, but instead of a foot sewn to an ankle, his pieces were smoothly connected without thread, with skin just smooth surface from one body part to the next. Because his look was benign rather than monstrous, I refer to him as a patchwork man. But, he was a patchwork man with a purpose, where each part had a special significance or a use.

He was resurrected and awoke to find himself seated next to a large dog named Gypsy. Actually a normal looking short haired Vizsla, but with pointed ears. She was the size of a Great Dane, her back coming up to his waist.  This dog was intelligent and could speak.  Because she was a dog, she could function despite rules rules created by and applied to humans.  She alone could talk to ghosts and lower creatures, like the giant snufflers.

Horace was a tall man who liked to wear a long duster. He had a tattoo on his forehead that was reminiscent of the Cheshire Cat's smile. He began the story as a ghost. A man who was imperceptible to other humans. All historians became ghosts when one of them discovered something none of them should have discovered. As a ghost, the soul in his head could no longer contact other humans.

Fortunately Gypsy could see him because she was a dog. And Puppet could see him because he lacked a Soul in his brain and so was exempt from rules governing other humans.

This trio appeared in Chapter 1 and remained together through the last chapter and powerful ending.  Other characters appear at the start and come back a few times like the immortal woman named Windy3. Others come in later, like the large snake George and his five female snake companions who remained with him until the end.

Saturday, August 15, 2015

Should Parking Always Be Free?




Imagine you are one of those people who will drive to Safeway (or Albertsons or Cosco or Wallmart) to pick up just a quart of milk for the next morning's breakfast or coffee, or just a dozen eggs, or that bottle of whatever you forgot to get earlier in the week. There are probably at least three good reason to drive:
  1. The store is too far or unsafe to walk or bicycle.
  2. The drive is easy and the parking is plenty.
  3. The bus doesn't exist or doesn't run frequently enough to take.
Now imagine you are about to drive to buy eggs. But before you drive you look at the store's website and notice that the lot is full and parking is at its most expensive. Would you still make the trip?
Now imagine you don't mind parking at a parking meter. That is if there is sufficient time available and the cost is nominal. I know you would look for a meter with time already on it. I know you hate meters because the cost of a ticket is too high. But we both recognize that there are other common ways you already pay for parking. In large parking structures, you sometime take a token when you drive in and pay based on the time parked when you drive out. And at some special events, you pay a flat fee when you first park and nothing when you exit.
Next imagine you are about to drive to pick up those eggs. But this time you know ahead of time that the parking at the grocery store is not free. If the charge were 10 cents to park, you might become incensed that you have to pay anything at all to park. But, if the cost is low would you mind paying it to pick up eggs? So the question for this exercise is how much is fair to charge for parking to discourage frivolous driving? If you needed just eggs, you might do without rather than pay 50 cents, or 1 dollar, or 5 dollars to park. What is the correct number?
Before we go on with this exercise, recall that new parking meters are "smart". That means:
  • They can change the rate they charge based on parking demand.
  • They can be paid with charge cards and special discount cards for the disabled or poor.
  • They can automatically increase the cost the longer you stay parked.
  • They can be paid on your behalf as by a supermarket or other business.
  • They can be looked up on a website to see if any parking is available. 
But what if the store's website said the lot was half-full and parking was $1.00 per hour. Would you drive there figuring you'd only need to park for 15 minutes. What if the cost is $2.00 per hour? $5.00 per hour? What if the website allowed you to reserve a parking space at a given time for a given number of minutes? Would you pay more for that ability?

Why Are We Doing This Exercise?

Before you ask that, consider once again the three reasons to drive:
  1. The store is too far or unsafe to walk, or too far or unsafe to bicycle. This will be the case in low density areas. Suburbs rather than cities. In cities, stores are more often than not within easy access to many who don't need to drive. In Suburbs, it is not that unusual for a grocery store to be four or five miles away. Much too far to walk, and almost too far to ride a bike.
  2. The drive is easy and the parking is plenty. Now we need to add that the parking must also be free. That cost is critical to understanding why people drive so much to shop. Yet we have all driven to a store just before a holiday or before some event or after some disaster and not been able to park because the parking lot was full with other cars prowling it to find a space. So sufficient parking is also necessary.
  3. The bus doesn't exist or doesn't run frequently enough to take.The lack of a bus, or low frequency buses is caused by lack of funds. If parking fees were not used to improve parks and not used to build new schools, and were instead used to improve public transit, well then parking fees could help to solve this last problem.
The lack of a bus, or low frequency buses is caused by lack of funds. If parking fees were not used to improve parks and not used to build new schools, and were instead used to improve public transit, well then parking fees could help to solve this last problem.

How Would Parking Meters Help?

If a suburban area had 100 stores and those stores averaged 50 parking spaces each and if each space charged an average of 10 cents per hour and each space were only occupied 4 hours per day on average, then that would create $60,000 a month for public transit. Now consider that a small town may have only 100 stores, whereas a medium sized town might have 500 stores. That would create $600,000 per month for public transit. And if the rate were $1.00 instead of 10 cents, that would create $6,000,000 per month for public transit.
Now to be fair, it would not help to meter private parking lots if there was no charge to park on its neighboring streets. If parking lots were not free and surrounding street parking was free, the average driver would look for street parking whenever shopping, searching residential streets for free parking along with other cars and frustrated drivers, all creating risk to children, bicyclists, and the elderly.
So you would have to put smart meters on streets bordering stores. Perhaps for a few blocks out from each store.

But why stop there? Why should parking anywhere be free?

When you park in your own garage or driveway that seems free, but it is not. Your driveway and garage are not free because its cost is computed into your mortgage and property taxes.
So what are the considerations surrounding parking meters to regulate all on-street and business parking?
  1. Should it be cheaper to park the nearer a parking meter is to a transit stop?
  2. Should parking be more expensive the closer it is to an on-demand location like a store, or tavern, or theater?
  3. Should the disabled be given free parking always, or just discounted parking?
  4. Should the poor be given discounted parking or perhaps free parking for special circumstances?
  5. Should fire, police and ambulances park for free anywhere they need to when in service?
  6. Should city officials (the mayor perhaps) park for free?
  7. Should street fairs have to reserve and pay for all the parking revenue that would be lost to close a street?
  8. Should public off-street parking also have parking meters, such as parks and beach parking and city owned parking lots?
  9. Should church parking lots be free? Should all not-for-profit business parking lots be free?
  10. Should state and county owned roads be exempt?
  11. Should it be a crime to over park? Or should over parking be just a civil matter? Perhaps a mixture of the two? A civil matter until it becomes habitual?
  12. Should the city issue parking cards? Smart cards for use in smart meters, that you can refill on-line? Should those smart cards also be good on public transit?
  13. Should coin meters be used because they are 1/4th the cost of smart meters? But, on the down side, their hourly rate must be manually reset, making them less attractive for intelligently designed parking.
  14. Transit buses at bus stops should stop for free, but should other third-party buses pay for using those same stops?
  15. Should there be free taxi-zones, or free Uber-zones? Or should taxi's get discounted parking?
As you can see, installing universal parking meters is not something to be taken lightly, but contains within it the promise of lots of money to add or improve frequent, convenient public transit, thereby removing more drivers from the roads.

This post was originally published on Linkedin.com

Saturday, July 18, 2015

Public Transit Rider's Bill Of Rights


 
Mother And Child On A Bus
 
  1. The public transit rider shall be defined as anyone who requires or desires access to public transportation for mobility. The public transit rider is not limited to the poor and elderly. It shall be defined as all people, whether or not they currently need public transportation for mobility.
  2. The public transit rider must never have to wait more than 15 minutes (one quarter hour) for the next public transit vehicle for the selected route to arrive. This is similar to the maximum amount of time a driver will circle waiting for a parking place to become available.  Fifteen minutes is pretty universally the maximum time any reasonable person should be expected to wait for anything.
  3. The public transit rider must have access to public transit 24 hours per day and 7 days per week. A town would never close all streets, bridges or sidewalks at night. So why should a transportation district shut down at night?
  4. A town would never reduce the number of lanes on a major road on Sunday, nor should public transit service be reduced on Sunday.
  5. The public transit rider must never need to walk a distance greater than 1/8th mile (201 meters or roughly two football fields lengthwise) to access a transit stop. Imagine that garages were forbidden. How far would a driver be willing to walk to to access an automobile? As a corollary, if an 1/8th mile circle were drawn around every transit stop in a system, there should be no area without access.
  6. The public transit rider must not be required to pay extra to transfer from one route to another for any of a given transit agency's routes. It is impossible for one route to uniformly cover and entire city. When there are multiple routes, some riders must transfer. Barriers to transfer shall be prohibited.
  7. The public transit rider must never be prohibited from boarding a public transit vehicle because of race, age, religion, nationality, gender, health, physical ability, or sexual orientation.  Bicycles must be accommodated except when they adversely effect passenger access, boarding, or safety.
  8. The public transit rider must never have health or safety threatened, and at all times must be protected from harm. This includes safety when approaching a transit stop. Such as: never having to cross a busy street to reach transport; never needing to run to catch infrequent transport; never being warned about a sudden stop.
  9. The public transit rider must be provided with clean, comfortable transport. No public transit vehicle shall become soiled, littered, or defaced in such a way as to cause transit rider discomfort or fear.
  10. There shall be no different rights between public transit and privately run public transit.

Wednesday, June 10, 2015

A Former Readewave Blog

A Dark And Stormy Night
 This essay first appeared as a blog entry on Readwave.com, the link to which no longer exists. So I am posting it here with a few minor edits.
Most beginning writers believe that the point of description is to create a mechanical scene, inside of which the story can take place.  A room decorated so that a character can have a door through which to enter and exit, and a chair to sit on, and objects to throw when annoyed.

But description is more. Much, much more.
Description creates the emotional tone that cannot otherwise be stated without telling.
All writers know that one should always show never tell.  So how do you show that a character is afraid, or unloved, or embarrassed?  The temptation, by the beginning writer, is to show those emotions by describing the responses of the character. The beginning writer shows fear by causing the character to back away, moaning, sweating, or physically unable to escape. They show that the character is unloved by having that character mope around, or read ads on an on-line dating site, or watching others kissing in a park.  They show embarrassment by having the character blush, or look away, or stand suddenly up, or fumble an apology.

1. The Beginner

Here is how a beginning writer might have described a living room:
He smelled soup cooking but didn't see his wife. The living room was had a big leather sofa in the center facing their wide-screen TV. Along the back wall were shelves holding all his bowing trophies. He shouted, "Honey! I'm home." When there was no answer, he began to sweat and became afraid.
When this character, "became afraid," did you feel that fear? Probably not because there was nothing in the description that helped you feel it.

2. Consider fear:

How do you describe a living room to evoke the feeling of fear?
The wind outside howled through leafless trees casting wild shadows across the living room walls. He hesitated at the light switch.  Something smelled off.  Was food beginning to rot in the kitchen? He touched the light switch. If felt sticky. "This is wrong," he muttered.  "Just plain wrong."
Here the plan was to have the reader hear, "Just plain wrong," and feel the character's fear. Ask yourself, was there enough of the right kind of description to make you feel fear when the character spoke. If not, how would you improve the description to achieve the desired effect?  Remember the objective here is to make the reader feel the character's fear without using the word fear.

3. Consider unloved:

How do you describe a living room to evoke the feeling a character is unloved?
The living room was quiet and was exactly as he had left it.  Nobody had broken in, nobody had visited. He hung his coat on the hook to the right by the door.  His wife had always used the left hook. Last night's pile of print-outs from date.com lay on the table next to the sofa, stained under the glass of whiskey he had spilled there. He stared at the glass on its side, now empty. He didn't want to move. He sighed.
Here the plan was to have the reader feel sorry for this unloved man when he sighed and to feel his loneliness.  Did the description guide your emotions into that desired direction. If not, how would you fix the description to achieve that effect? Note that the goal here is to have the reader feel that he is unloved and alone, but to do so without ever using those words.

4. Consider embarrassed:

How do you describe a living room to evoke a character's embarrassment?
He stood there, his back to the front door, now slammed hard closed and shivered.  He listened for his wife and kids but the house was empty.  "Thank god," he said.  His living room was normal. He had a wife and two kids. Normal too. Gold carpeting, slip-cover over the sofa, a big TV, yes all normal. Outside he heard the three teenage girls talking loudly to each other.  Making up names for him. He shivered again, naked against the door. "Oops," he said.
The plan here was to guide the reading into feeling the character's embarrassment when he said, "Oops." Is that what happened when you read the paragraph? If not, how would you revise the description to achieve the desired effect? Note that the goal here is to make the reader feel his embarrassment without using the word embarrassed.

5. Summary

Whenever you describe anything (be it setting, character appearance, relationship, or action) always ask yourself: What emotion your description is intended to evoke? How do you want the reader to feel?  When your reach the end of your description, what does the next paragraph or bit of dialog to mean? Did your description add impact to that meaning?

Once you have an emotion identified, you can compose description that is in support of that emotion.

Wednesday, May 6, 2015

Low Speed Rail

Engineer At Front Of Steam Engine

        Amtrak provides what I call "Low Speed Rail" (LSR) service between Portland, Oregon and Sacramento, California. I call it low speed because it takes 16 hours for a trip that takes only 9 hours by automobile.
        People will only leave their cars if the trip is more comfortable or significantly faster or both. The low speed Amtrak train does take people out of their cars because 9 hours of driving is too much for most folks who would rather take a break with a motel lay-over half way through the trip. Amtrak allows you to sleep on the train, so eight hours of that trip are used for what you would normally be doing anyway, sleeping.
        Also Amtrak has 110 volt power outlets by each seat so you can keep your laptop or tablet charged and watch movies or videos during your waking hours. Or you can do like I did, and catch up on those novels I have been reading --these days on my kindle.
        Finally Amtrak has two doors in each car so that boarding and off-boarding ware often very quick. You never have to wait behind anyone pulling down luggage. In fact you can make you way to the exit door while the train is still pulling into the station. Try doing that on an airplane.
        Of course, if you're in a hurry you would fly. But flying is more of a bother than you might realize. Not only do you have to drive to the airport and park there, but you also are required to arrive at least 45 minutes ahead of the flight time to check in and get through security. Once on the flight you are not allowed to use electronics until you are in the air and must shut them down before landing. Finally, you often have to wait to off-board while those ahead of your pull luggage off the overhead bins. Then you have to get from your arrival airport to downtown or your destination, usually by taxi or van, but sometimes by public transit.
        Just for a complete look a the alternatives, also consider "High Speed Rail," like that being constructed in California.  Just like Amtrak, boarding and off-boarding are easy and fast with no security check. You board already downtown, and off-board already downtown. You can read, use the Internet, and watch movies while on board, even while stopped at a station. Plus HSR is very, very fast.
        For example, consider a trip from Downtown Portland, Oregon to Downtown Sacramento, California. A trip of about 581 total miles. Low Speed Amtrak takes 16 hours. An automobile trip (driving straight through) takes 9 hours. A plane trip (including early arrival and transit to and from the airport) takes 3 hours. High Speed Rail would take 2 hours.
        In general, I would take LSR rather than drive, and only fly in an emergency. If HSR were available, I would never fly and would travel to Seattle or Portland or San Francisco or Los Angeles far more often.

Tuesday, April 28, 2015

Eugene Oregon Private vs Public Transit

 Car Oriented Neighborhoods

        Here in Eugene, Oregon, people refer to all trips in terms of time. One waitress said, "You can get anywhere in Eugene in less then 15 minutes." A sales clerk said, "Gas is cheap and you can park anywhere." What they fail to tell you is that the only way to get anywhere in a reasonable time is to drive a car there.
        Here in Eugene, Oregon, the average public transit trip can range from 15 minutes to over 1 hour. This in a town were it is possible to drive anywhere in less than 15 minutes.
        Even worse, several bus lines run only once per hour.
        Millions of dollars (if not billions in today's money) have been spent of roads in Eugene: Widening them, adding double left turn signals, reducing cross walks, and building a limited access belt line (two lanes each direction).
        The only real money now being spent on public transit is construction of the EMX bus rapid transit system. Here the numbers are better. These buses run once each 8 minutes mid day each weekday, and a trip downtown from the end of the line is only 16 minutes in-bound, but 55 minutes out-bound.
        To compete successfully with cars, the Lane Transit District should run all bus lines with a 10 minute or better frequency, and no trip, including transfers should take longer than 15 minutes from pickup to drop off. Anything less than these times and LTD will fail to compete with cars and fail to draw drivers from cars and onto buses.
        The only way to achieve such times would be to use limited access light rail with no grade crossings. Could such a system ever be built?  I doubt it, because Oregonians will never spend as mush money on public transit as they do on roads.

Monday, April 6, 2015

Ello Fails Email Change

Can't change his email address!

Ello is an alternative to Facebook. For authors who need to spread word about their publications. The more social sites the better, of course. But what happens when an author moves and needs to change his or her address, phone number and email address?

I will tell you. With Ello you cannot change your email address ever! Ello uses your email address and password together as your login credentials. Despite showing a green check mark when you type in a new email address, that change never takes. The only alternative that I see is to close the old account (lose all your followers) and create a new account with a new email address.

The programmers that created Ello focus too much on the interface and too little on understanding the changing needs of users. It is too bad there is no way to directly contact them :-(