Sunday, September 28, 2014

Some thoughts on test drives

Back in the 1990's I sold new cars for two months. Worked at a major dealership that sold for one of the major Japanese carmakers in the Atlanta metro area. (Kind of funny NOT to give out free advertising for any of those parties by giving names.) And one of the more fascinating things when selling new cars is the test drive.

Consider, you go to a car dealership in the United States, talk to some person doing sales, and if you like a vehicle, they may let you drive it around for a while! And I say may as don't take test drives for granted, like if you go to a Ferrari dealership--had to give them free advertising for it to make sense, like it matters.

If you go to a top of the line dealership for a very expensive vehicle they may want to make sure you can pay for it first, if you decide you want it. I remember when I was in San Francisco there was this bus stop in front of a luxury car dealership. And I'd stare in the window at these high priced cars with price tags well into the hundred thousand dollars US. But I digress.

Now then, people who come to a dealership know what an automobile is, right? They've probably driven one many times as we weren't in the business of giving driving lessons. So why do they need to drive a car to decide if they wish to buy it or not?

When you talk about letting people test out software, I have typically seen a limited version model, where you give someone something that can't do everything in the hopes that will be enough.

I liken it to having people take a test drive in a go-cart that looks a lot like the vehicle they want.

What I would like to be able to do as a developer is something I talked about in a prior post, where you let people take the equivalent of a real test drive, by just having the software on their system before they pay for it.

The idea is that a person downloads the software with a promise to pay only if they keep it, where they can use it for a while until they decide if it fits their needs or not, and then voluntarily delete it off, if it does not.

If they decide to keep it, then they'd be expected to pay at that time, which is what I call the Pay Back Value model.

So what's wrong with this idea?

Some might ask, who would pay for the software if they already had it on their systems and were being asked to voluntarily pay?

And the answer is: people who are not thieves.

The idea that all human beings are thieves is pervasive in the software industry. It may be one of the single most drivers of hostility between the tech industry and regular folks, especially when companies sue the crap out of as many people as they can get on a list.

I don't agree with the idea that most people are thieves.

And I actually sold cars for two whole months at a major dealership in Atlanta metro area! Trying to be a bit humorous there, but to me there is an awful lot of supposed knowledge about human buying behavior from people who have never sold anything at all.

Most human beings aren't thieves. Look in the mirror, would you steal everything you have if you could?

If the answer is yes, look around you at all the areas where people do not steal. And maybe grow a bit as a human being.

However, there are practical realities with this idea that may be missed. For instance, what about service and upgrades?

If a person downloads your software and never pays, what do you know if they call you later asking for help with the software?

You know they stole it.

When you do newer versions, and a person who had the original version but never pays tries to get the newer version where we'll assume there is a full installation and an upgrade where they pick the upgrade, then yup, you know they stole it.

You now can identify thieves, yet again with software.

Now if you never upgrade the software and people never need support, yeah, they can just walk way with it, but then again, do you really believe ALL human beings are thieves?

If you think all humans are thieves, I ask, what's wrong with you? And what turned you into such a cynical person?

One thing with software is you can develop something, give it away, and have billions of people using it, without making any money. But like with open source you gave it away. Like I've given away my Class Viewer app.

To get paid you need a transaction where people know upfront they are to pay for something!

And I worked it all out in a post for my own clarity. Before you think people stole something, you might want to learn the rules of transactions.

James Harris

Saturday, September 27, 2014

Image licensing validator?

Here's another free idea: some company that licenses images should offer a free app for people who want to know if images on a website they visit are licensed for use there.

One thing I find happening to me a LOT when I surf the web is coming across a website where I wonder if images are being used legally. That helps me to form an opinion about that site!

So from that perspective if I had a way to check then I'd appreciate it so I'd feel more confident about the site in general. So why don't companies like say Getty Images offer such an app?

Just checked at their site and if they have such an app I didn't see it.

My guess is some might wonder what would be the point with so much rampant and uncontrolled sharing of images. Well the point is more information about that website you're on. And there are people who care about such things.

But right now, how are we supposed to know? And why don't companies with that information figure out a way to share it where it matters? That actually can be a big deal, like when I'm debating whether or not to share a site. Right now I start a bit of detective work, trying to figure out from what information is available how decent the site is.

One of the things that really irritates me is when I have to notice later there is something wrong with some website I've shared, so I break the link. As the web matures I think it will be increasingly important to know which people are following the rules, and who are not.

James Harris

Tuesday, September 23, 2014

Problem with stealth transactions

Years ago I found myself contemplating an open source application I had been using. Had thought it was ok, not great, but ok, and now it was telling me that I should donate to the developers. I contemplated that for a bit, and then deleted it off my system.

Business is about transactions. I state that without worrying about justifying it and in an earlier post where I talk about what other people want I said:

Businesses try to find out what people want, and they don't just give it to you. They try to get transactions, where there is a buying decision made. Where it's agreed to ahead of time that you will get something, and then give some amount of money in return.
To me if you want money from me, let me know upfront. Don't wait until later and surprise me. I call leaning on people to make a buying decision later than normal an attempt at a stealth transaction.

I think it's sneaky.

One of the ideas I've considered as I continue my contemplation about money, is a stated social contract for users of my work or ideas. But essentially it'd say things like free is free. If I give an idea away, it's given. Don't worry about me coming back later to squeeze you for something.

Not that I haven't considered it at times. But it gives me a queasy feeling. Just doesn't feel right.

My own view with stealth transactions should be clear from my example above: is a great way for me to not do business with you.

Business should be upfront. If you want someone to buy something from you, let them know upfront. Don't try to obligate them and then squeeze them into some kind of contract after the fact.

Thinking out loud a bit. Wondering if I should talk more about a social contract, but then again, I don't think there is really one if people are just sharing things. It's like, here you go! Take it or leave it. I don't care.

And don't worry, not going to bug you about it later. Ah, such a relief. No social contract necessary.

James Harris

Monday, September 15, 2014

Building a Java 8 JavaDocs link

One of those features I definitely prize in my open source app for Java developers called Class Viewer is the ability to go to JavaDocs to the method. And for that to happen the app has to build the link for you, like here's an example that I just did with it:

And that works for Java 8, where you can see the '8' in the link, where that is in the base which is set in ClassViewerConfig.xml--where you can edit with a text editor so easy to make changes--and the app builds out the rest of the link where I picked a method from the String class for demonstration purposes:

static String format(Locale,String,Object[])

Putting in italics so it stands out. And with that as a reference you can see what the app has to do, which is just loop through that, which it gets from Java Reflections and is what it has after it strips off package information, and switch that to the format that was just implemented for getting to that method in JavaDocs.

So yeah, I kind of had a bit of a freak out a few months ago as I knew Java 8 was coming out and had changes but didn't really dig into them, which I guess was a mistake, as I made some changes to Class Viewer, and thought that was it, until I checked going to JavaDocs and it just didn't work! Then I realized there had been a change.

For the curious you can go to JavaDocs before Java 8 and see the old format. What I'll say is that I like this new format as it's MUCH easier to code, which is what matters to me.

Oh yeah, it had some quirky stuff and maybe I missed something so if anyone finds something PLEASE let me know, as like Object arrays go to Object..., but check out how other arrays are handled with this example:

And that's from:

static String copyValueOf(char[],int,int)

So you can see that here the char[] turns into char:A, which I noticed immediately and coded up, only to thankfully try something with an Object array and notice it didn't work! So yeah, not completely sure I got everything, but...well it works for everything I've tried.

One of the best things with this new approach is it really is more fun to code and removes issues with handling spaces, where if you wonder you can go back to earlier versions.

At first I was going to go to the newer version without support for older JavaDocs and realized that was silly since the app could just check your Java version, which it does from the System. So if you have an older version before Java 8, it will use the old way to get to JavaDocs.

James Harris

Saturday, September 13, 2014

Where trust lies

Have spent some time figuring out what I think money is, and found myself focusing on monetary transactions, which is where there is consideration given in exchange for a favor.

When you do someone a favor there is at best a certain amount of goodwill. For instance you don't want to do a favor for someone you don't like I would think.

One of those signs that would often fascinate me when I went into an establishment would say:

"We reserve the right to refuse service to anyone."

The trust side of an exchange has to do with quality. And now I'm finding myself in a better position to talk about quality, as if you do some people a favor, and they give you some consideration in return for that favor you are trusting them.

Society gives us the framework for the trust system that we call the monetary system, as all money is, is a promise to pay later for something that was already done. So like if you mow someone's lawn, giving them an immediate benefit, you get some items made from scrap paper in the US which tell you that later you'll get a return on that action. That money has no intrinsic value. It's just a promise to pay.

Having other people obligated to you definitely has value. And can have a vast impact on the quality of your life. And there is a great value in doing things for others, and gaining an obligation back to you in return.

Some people, unfortunately, can see profit in betraying your trust by giving you less in the exchange. If they can get you to do them a favor, and give you less of a favor in return, to them that's "just business", but it's actually just a trust betrayal. In the past that type of behavior could be harder to track, but today the web is making it ever easier to find it, and keep up with it.

That is causing a sea change across the United States and greatly impacting businesses at all levels.

It also impacts individuals and how we relate to each other, especially when there is a long record in the public.

One of those things I found I felt I needed to do were disclosures that I don't have paid endorsements. And if I ever get any, I would disclose it, because people don't want to think they're reading something because you just feel a certain way, when in reality someone is paying you to say something.

And government is trying to regulate so-called 'native advertising' like when someone says something in a blog post which is being done for payment of some kind.

Trust and quality go together. Some people you can trust to give you quality because that's who they are. Doing quality work is a source of pride, and part of self-worth for them. They wouldn't betray your trust because you're not worth losing something of such value. And questioning them on the quality of their work can bring justified anger.

Businesses can be at the mercy of trust betrayers who come in for quick profits--shredding customer loyalty.

I think we're entering a new phase on the web which is the trust phase. As quality becomes more important to consumers and information about businesses becomes ever more accessible, as well as real life customer experience, it will be harder to betray people's trust and get away with it.

The best businesses can do an equal exchange--give equal value for value.

Maybe we'll see a reversal on that phrase "it's just business" in a world where that comes to mean you wouldn't betray the other person's trust because you know in business you can't get away with it.

There are many ways where people today have found their trust lay with the wrong people or institutions. And there have been HUGE consequences across the economic landscape. People without jobs. Struggling to find another, like me, where the biggest issue isn't ability. It's trust.

Quality matters. Where you get your money matters. How you got your money increasingly will matter in a world where people understand ever more the consequences of putting your trust in the wrong people.

Sitting at home trying to figure out how to pay your bills while reading about wealthy people in the news partying on ill-gotten gains is not what one would call fun.

But the good news is you can find value out there. And being skeptical, checking your sources, and figuring out which people to trust over time can lead to a great deal of personal satisfaction.

At our best we want to give at least as much as we get, and maybe more.

That some people are parasitic, hoping to suck more from others than they give in return, does not change the base reality that has given us human civilization and a world with lots of cool things.

Like computers that let us talk to each other like never before, share our point of view, and best of all, get that of others.

Earn your trust. And learn your trust. But never, ever take it for granted.

One of the things that's interesting to me, after reading what I wrote here a few times is the sense I have a better position when dealing with someone who thinks it's ok to emphasize being rich as if I care. It's like, they're saying: a lot of people owe me something so you should think I matter.

And I'm like, ok, so a bunch of people have an obligation to you according to some paper, so?

Reality is that even if you've done a bunch of favors for people so that they feel obligated to you, showing someone else a bunch of paper as if that obligation is what matters tells them you think people being obligated to you is important.

But if you do favors for people just to get them to feel obligated to you, and save up the return on those favors to hold that over their heads later, what really are they likely to think of you?

James Harris

Saturday, September 06, 2014

Class Viewer problem space

One of my posts covered my ideas about innovation and the problem space, which I see as the thing your application is handling. Wanted to have a post where I could quickly see what I thought the problem space was for my open source application Class Viewer, so copying from that post to put here:

Original Class Viewer problem space: how to get class information quickly, about public methods, fields, constructors and get to Javadocs.

And the reason to have that readily available is so I can evaluate where I think product direction should go, and maybe see if I want to expand that, which I think I have. So I'm going to update it.

Possible Class Viewer problem space: how to get class information quickly, about public methods, fields, constructors and get to Javadocs, open a Java file, and get basic system information like classpath and Java version. Works as a tireless assistant.

One of the things that's interesting to me is, did I really need to expand from the original problem space?

Turns out I felt that there was more information a developer readily needs, like classpath, where sometimes you do something and wonder, and Class Viewer gives a quick way to check. Same thing happens with the Java version, where I find I'd wonder while doing something, and now it's easy to check.

I'd prefer to not necessarily have all those things in there. And just went back to add the "tireless assistant" part which allows me to imagine a LOT more development paths.

So that's kind of important. Seeing Class Viewer in a more narrow way for the last decade worked out great and allowed me to do very few product iterations. But at times I've wondered if I wanted to do more. Then again, I could just create an entirely new product and leave the current one alone. However, so far it looks like things are in the same direction. But maybe it's too open ended now? How do I bound the space back to something more realistic? After all, it's unlikely that I'll do tons of new development though with that problem space I could go wild.

Class Viewer problem space: how to get well presented class information quickly, including getting to Javadocs, and other relevant information important for development that is available, like classpath, as well as open a Java file if possible, quickly. Using third party tools if available.

That might be more like what's been done and now I'm seeing a focus on quick access, presentation, and using other applications to do things. Back to a more narrow focus, so losing the "tireless assistant" thing.

Maybe I'll fiddle with all of these things later, but for now gives me something to think over.

James Harris

Starting Class Viewer with a class

One of the features now working with the current Class Viewer is the option to start with a class.

For instance the following will open Class Viewer with the String class:

java com.jstevh.viewer.ClassViewer String

The way that works is like if you typed that in yourself, so if it can't find the class you give Class Viewer will simply give you the same message it would give if you typed that in yourself.

One of the things I'd guess this option can allow you to do is push what you want on screens in a classroom. Or if you wish to start with a script, which I guess you could also do in a classroom.

Thursday, September 04, 2014

Our information

The web is an information zone, and more so than at any other time in human history, information can flow rapidly all over the globe. We all need to take published instances of security breaches very seriously as they give us a warning, and chance to work harder as it becomes ever more clear what our new reality truly represents.

There is a vast amount of information collected about many of us on a daily basis for many reasons, and private information should remain private no matter who it is. And for people confident they never put anything out there, how do you really know? Increasingly data is being stored about all of us, including very private information. And not always by choice, as in cases where people have exploited their positions like a recent infamous case of a doctor illegally taking pictures of patients.

The web has democratized lots of things, and those who look at celebrities as if distant cases from their own lives need to realize they're in the same boat. The only difference with a famous person is the possible levels of attention.

Security services of both the United States and the UK have reportedly been involved in victimizing people in their homes by spying on them through their computers.

It's not enough to think you're not putting private images of yourself online. Someone else may do it to you.

Theft of private information should not be looked at as a joke, or the fault of the victim any more than if anyone breaks into your house and steals something. Expectations of privacy have to be enforced for the information security of all of us.

The world has changed. As exciting as it may be to look at some seemingly distant figure dealing with information theft, there should be a local concern as you may be a victim as well without even knowing about it.

As someone watching the news I know my opinion of recent people who had private information stolen and tossed out there has not changed. They simply faced a theft. In our world information has become a thing along with all our other possessions and like them, something others may steal.

None of them were at fault. And if you think you're safe, then you're not paying attention.

James Harris