Search This Blog

Sunday, April 10, 2016

No More Chili's...

Yesterday "Vape" and I went to the local Chili's restaurant.  "Vape" has been vaping in this particular restaurant for over five years along with others.

But things have apparently changed.

A manager approached us and asked that we no longer vape inside the facility.  A sign had been posted out front (see image).

The sign is patently ridiculous.  There is a road and another parking lot within 50ft of this door.

In protest I submitted the following comment:

"Yesterday we were told we may no longer use or carry our vaping products in or within 50ft of your Chili’s restaurant in Pittsburgh, PA. The sign out front says “No Smoking or vapor cigarettes within 50ft of Entrance.”

Vaping uses these exact ingredients (propylene glycol, vegetable glycerin, food flavorings and nicotine) found virtually all food (nicotine, for example, is found in tomatoes).

Further, in your kitchens these same ingredients are heated, just like in “vapor cigarettes,” to create the smells which fill your facilities.

We are not smoking.  “Vapor cigarettes” are fully legal here and not restricted by law in any way here.  You cannot ban us from doing what you do utilizing these same ingredients similarly (by heating).

This is discrimination and an attack on our Constitutional rights of “liberty” and the “pursuit of happiness.”

We have been weekly customers for more than 30 years and spent $50,000 in that time for business and pleasure.  We will lose our rewards points.

I am very sad that your company has chosen this route and I plan to challenge what you have done and to make a public matter of this issue."

I generally don't even vape nicotine which makes this even more frustrating.

Sadly, we are no longer going to return.  We have many friends there including on the staff but there is little we can do.

We have noticed a disturbing pattern in other "chain" restaurants lately along these same lines.

I plan on pursuing the matter as best I can...

Thursday, April 7, 2016

Happy Birthday Honey, You’ve Been Sued!

(Why this is no longer the Facebook Page you thought it was…)

More than five years ago my wife Donna quit smoking and began vaping exclusively.  Soon after people started asking her what that “thing” was she was putting in her mouth and, not long after that, Donna started selling the old 808-style e-cigarettes out of her purse in bars.  Not to make money but to help other people stop smoking as well.

A few years later a company was born, a company which many thousands of you used to stop or keep from smoking cigarettes. During these same years I spent an enormous amount of time working on what was to become Vaping Advocacy - writing articles, blogging, attending meetings, and so on.  Many of you still see these things on Facebook today.

Donna and I invested a fortune in time and money.

Why?  My entire household (children, children’s spouses, friends, family) no longer smoked cigarettes: where there had been five or six smokers at the table for Sunday night dinner every week now there were none.

Thousands of customers stopped smoking, too.

Why invest a fortune?  Wouldn’t you to save the lives of the people you loved?

What’s the price of not seeing someone you love die of cancer?

In early January of this year, though, everything changed and the company our customers came to rely on was irrevocably changed…  We were closed for several days, products dwindled, things tumbled out of control.

And finally, as something you came to rely on that kept you from smoking was down for the count, came a lawsuit.  

We all know lawsuits are about one thing and one thing only: money.

Not about saving lives, not about seeing family members smoke free, not about any of that.

But Donna never gives up and from the ashes of what had gone before her new company has risen like a Phoenix from the ashes of the old.

This time around things are much, much harder, though.  The market has changed, the products have changed, the world has changed, we’ve lost inertia, regulations loom.

I don’t know what will happen or what the future will be.

We will struggle…

Maybe the FDA will win, or the State of Pennsylvania will tax vaping to death.

We’ll have to invest more to keep things going so I hope that you out there will come to Donna’s new shop and buy some of her products like her new e-juice.

As for me, I’ve been somewhat AWOL from the vaping and advocacy scenes for the last several months - mostly to take on a job to keep things going.

Now I am back and I hope to contribute much more on the Vaping Advocacy front.

Perhaps to release a Primus II.

In any case and whatever happens, Happy Birthday dear… I’m still here and I still love you!


Sunday, March 13, 2016

Sedol vs. AlphaGo - Is this really "fair" or an "AI"...?

Sedol is beaten multiple times by AlphaGo.

Is this really a fair contest?

Looking here we see that twenty or more people worked on AlphaGo (or at least got their name on the paper).

Sedol is an early-thirties profession Go player with a wife and child.  Even if he spent full time on Go for twenty years that would only be 40,000 or so hours of "learning" to become the (or one of the) best Go players in the world.

If each person on the AlphaGo paper spent two years working on the project (which has been around for at least three years) the would have at least as much time into it.  Plus they have presumably a nearly unlimited amount of compute and historical Go information to work from.

Despite all the hype AlphaGo can't do anything else.  Much like a mechanical baseball throwing device you find at a batting cage.  Neither can really do anything but what they were designed for.

Are they "intelligent?"

I don't think so... I recently got a new dog from the pet store perhaps nine months ago.  The dog has learned a lot: like how to go in and out the dog door, run around the property and come home, where and from whence the food comes from, many things.

While you could argue this is merely "mimicry" of what the other dogs do I think you'd be wrong.

The dog only consumes about 1/2 cup of food per day - no team of scientists to shepherd her along, no giant bay of cheap PC clones to process what other dogs have done over the years.  Nothing like that.

Then there is the question of "insight."  If we attached a logger to the AlphaGo processor we can record every single step in the processing it used to beat Sedol (except if the Monte Carlo sampling choice were truly random).  While there might be many computations involved its certainly a finite, closed list of steps.

Will we find "insight" there?

Nope!

Perhaps there is insight on the part of the people who wrote the code - but the code is not writing itself.  AlphaGo is a simple machine programmed by clever individuals to accomplish one thing - beating the best human Go player.

The human coders also have decades of research to build upon - DeepBlue, Watson, and so forth.

Today Google and its might search engines are still fundamentally flawed: If I spend a lot of time searching for things I find dangerous or that I hate or never want to see again Google Ads happily displays these items to me every there is an opportunity.

On the other hand the dog generally knows if I am mad at her or just mad in general.

I think this is all really about sales: make it sound impressive and mysterious and people will buy it.

About thirty years ago I came up with the ultimate test for "AI."

At the time there was a program called "Prospector" often touted as "AI."

My thought was "ProctSpector" - an "AI" based proctologist that would perform a colonoscopy.

My gold standard of "turing test equivalent AI" was an AI researcher allowing him or her self to be examined (given a colonoscopy) by "ProctSpector."

(Of course, that would not necessarily really be "AI" either - but its certainly a lot more interesting than Go or chess.)

EDIT: QuantaMagazine: https://www.quantamagazine.org/20160329-why-alphago-is-really-such-a-big-deal/

Sunday, February 28, 2016

Debugging... (Part 1)

For a long time I have wondered why no one gives the process of debugging any serious academic credence.  Sure, there are lots of "proof" types around trying to prove that programs might be correct (if in fact the criteria for designing the program has no bugs), but really nothing I have seen in the last decade comes close to addressing "debugging."

By "debugging" I mean the process of correcting a program which performs in some way incorrectly.

So let's break this down:

For something to debug let's consider a basic Turing machine (see this for the Wikipedia description which works well for what I am about to describe).

The details, I think, are really not very important so long as the machine is logically consistent.

The key for this is the representation of a program (in this case a Turing machine program) as a set of tuples.  We can use the Wikipedia state table as an example (from Wikipedia):
Example: state table for the 3-state 2-symbol busy beaver reduced to 5-tuples
Current stateScanned symbolPrint symbolMove tapeFinal (i.e. next) state5-tuples
A01RB(A, 0, 1, R, B)
A11LC(A, 1, 1, L, C)
B01LA(B, 0, 1, L, A)
B11RB(B, 1, 1, R, B)
C01LB(C, 0, 1, L, B)
C11NH(C, 1, 1, N, H)
So what does this give us?

Really a simple set of data representing the operation of the Busy Beaver program (I don't think, at least for the moment, we really even care here what the program actually does):

{ S1, A, 0, 1, R, B }
{ S2, A, 1, 1, L, C}
{ S3, B, 0, 1, L , A }
{ S4, B, 1, 1, R, B }
{ S5, C, 0, 1, L, B }
{ S6, C, 1, 1, N, H }

S here uniquely identifies the row as a state.  Of course, we still need more:

Some kind of tape and head, for example.  Here we can consider a simple, infinitely extensible (in both directions) array of tuples:

{ H, Header n }
{ T1, Vn-1 }
{ T2, Vn }
{ T3, Vn + 1 }
...

In this case the location of the Turing machine head (tagged with H) is represented by tuple n (T tags tuple rows, V is the specific tape value).  We can insert new tuples as needed or move the "Header" by changing its value.  I think we really only care that the implementation is logically consistent with what Turing machines are supposed to do.

We also need to know the current state:

{ S, s }

Where s is the current state.

So given a description as above we can construct a representation of the operation of the Turing machine:

The Program part does not change:

Program = {
  { S1, A, 0, 1, R, B },
  { S2, A, 1, 1, L, C},
  { S3, B, 0, 1, L , A },
  { S4, B, 1, 1, R, B },
  { S5, C, 0, 1, L, B },
  { S6, C, 1, 1, N, H },
}

Operationally we only care about what things look like at each given step, or cycle.  So we can imagine a representation that looks something like this:

Operation = {
  { Cycle, 1,
    { S, s },
    { H, n },
    { T1, Vn-1 },
    { T2, Vn },
    { T3, Vn + 1 } },
  { Cycle, 2,
    { S, s },
    ... }
  }
}

Each cycle of the machine appends new information to Operation.

Again, exactly how we represent this is unimportant.

So finally, when I say we are going to talk about debugging I am going to represent the problem of "debugging" as follows:

First, I have the expectation that there is some agreed and correct representation of Operation.  I may only be interested in some specific Cycle or Cycles that represent an "answer", I may be interested in an entire set of Operation Cycles, or I may be interested in whatever the pattern is so long as the machine does not Halt.

I require that I can represent the Cycle or Cycles with specific patterns, e.g., something like the following if I have a specific structure in mind.

 { Cycle, c,
    { S, s },
    { H, n },
    { T1, Vn-1 },
    { T2, Vn },
    { T3, Vn + 1 } },
   ... }

In this case I have an expected answer, say adding 2 + 2 so I would expect to see a specific pattern representing 4.  What that pattern is is not important.  What is important is that I can describe the resultant pattern unambiguously.

The pattern might represent all the Cycles, or only a subset (for example a program that repeats an answer over and over could potentially also be correct if I am only looking for the specific value represented by a pattern of Cycles.  The pattern might also be Operation = ∅.  Here we use ∅ to represent unknown content, in this case Cycles, i.e., we don't know what the output of the program will be.

If I don't have a representation for Operation then I will say that instead of debugging a program I am writing (or creating a program).

We can think of writing a program as "debugging"  an empty Program = (equal to) ∅ if Operation =/= (not equal to)  ∅.  For Program we use ∅ to represent an unknown set states.

So to summarize there are four cases:

Program = ∅, Operation =  ∅ - We don't know what we are doing.

Program = ∅, Operation =/=  ∅ - We know what we want to see as output (at least at some point) but don't have a means to get there, i.e., we are writing a program from scratch.

Program =/= ∅, Operation =  ∅ - We don't know what the program we have will do.  We can likely enter the next case (below) by operating the program to create the situation where Operation =/=  ∅.

Program =/= ∅, Operation =/=  ∅ - We have a program and some data but we don't know if the two are coherent.  We use coherent to describe a state where we must, if we can, perform or check the operations to determine if what we see in Operation is actually the result of the Program.

We define "debugging" as aligning Program with Operation such that there is coherence between the two.

Note that if Operation is invalid or inconsistent we are no longer debugging the program but instead constructing a description of a programming result, i.e., effectively creating or repairing a specification for a Program.

Monday, December 28, 2015

Are Theranos and Holmes Really That "Out There?"


In the 1970's some quack from a company called RSI called me in my office at One Chase Manhattan Plaza.  I was involved in using Unix (from Bell Labs) for data and word processing work and we needed a database.

This "quack" had some "relational database" program for sale he'd written himself that ran under PDP-11 Unix that was based on a a document he had seen from IBM Research in San Jose about something called "System R."

Meanwhile I was taking a class in San Jose from two guys (Bob Epstein and Mark Hoffman) who worked for a company called Britton Lee that sold a relational database database machine.  I liked Hoffman and had some discussions about working with him and Epstein but I wasn't interested in living in California.

(In the 1970's IBM dominated the database world and there were only non-relational network "mainframe" databases.  They cost tens or hundreds of thousands of dollars and were intense, complex OS-360-based tools.  The database market was huge and totally non-relational.  No one, and I mean no one, believed that "relational" database operations could ever be as fast as network database operations.  It was considered heresy to even suggest it.)

The "quack" turned out to be Larry Elison.  

Hoffman and Epstein quit Britton Lee and started Sybase which contributed source code to Microsoft's (presumably for their SQL) and reached a billion in sales on its own.

Was this crew any different than Theranos and Holmes?

I think not... 

IBM was one of the biggest companies on the planet in the 1970's, network databases were all that there would ever be, OS 360 was the best operating system there ever would be (probably using CICS).

Would relational databases ever take over?

No way!!!!!

How would UNIX ever replace IBM?

We used to joke about it at Usenix conferences in Toronto Canada. 

"Ha ha, someday mainframes would run Unix" I remember joking with a guy named Mark Kreiger from a company called UniPress around 1978 or '79.  I eventually had a job working on fixing code Gosling had left behind at CMU.

But apparently some venture capitalists did believe.

And these companies where a great success.

How many failed along the way?  Probably too many to count.

How many billions of 2015 dollars were lost?

Plenty.

But in those days no one cried and blubbered like they do now.

The market decided who was a winner and who was not.

Instead the socialist WSJ tells us how bad Theranos is...

But, in fact, if their ideas are really good, they will win...

If not, someone will buy up the used junk, equipment and technology and use it for something else.