Blockchain is essentially a signature

Blockchain is essentially a signature.

You need to think about the value of a signature. What is the trust value of of a pen on paper signature? At the local grocery store, they don’t accept checks anymore. That should tell you that. Although it’s not just the quality of the signature, but the cost to verify, and the quality of the verifying authority in this case.

What about a PGP signature? From 512-4096 bits — pretty much verifiable, as long as you can keep your key secret — but there isn’t a good trusted authority, and no standard acceptable interchange. You can put on your tinfoil hat about this.

How about TLS? HTTPS with 2mB is good enough for most transactions, usually with a tolerance of a few hundred dollars. Browser manufacturers and SSL certificate authorities are good enough here for almost everyone. You can get that for around $50 but some people pay thousands of dollars for greater peace of mind. There’s no accounting for psychology.

So now we have blockchain currencies — which try to solve both the problem of the trust of banks, and the monopolies of browser CAs. But do both poorly. And they don’t solve the fundamental problem — that of a clearinghouse for exchange. You still need a trusted central source of exchange. Mt Gox proves that. And using the blockchain to clear a blockchain is a obvious mobius strip paradox.

What you need to do is figure out the tolerance for risk at certain value. Or stated another way, the cost of “breaking” the security of a certain signature. For personal checks, that used to be around $200, before banks became ineffective at both security and clearing funds.

For cash, the risk value is about $100. If you’re at a gas station that says “we don’t accept $100 bills”, you’ve experienced this.

In truth, a simple public MD5 sum should be approximately equivalent in risk to a paper signature or money. It’s not worth trying to break — or counterfeit for less than about $100-200. But since there’s no medium of exchange, maybe half that value — MD5 should be safe for up to $50.

A SHA1 signature should probably double that. With an additional byte count checksum, it should double again. So call it $200.

PGP should be as good as SSL — sufficient for transactions up to $1000. What’s missing is a CA. PGP with a CA should be good for several times that. Maybe $10K transactions.

Obviously something more is needed for large sum transactions — bank accounts, vehicles, property. But all we have in place currently for these sorts of things are contract paperwork, wire transfers — and here’s the barrier to entry — government enforcement. Try lending money over $100K without being a part of the system and see where you get.

The force of law includes both your lifetime earnings, and your freedom. That’s the collateral. This is what enables transactions over $10K. And you have to have control over the law to enforce that. You have to be a “bank”.

For smaller amounts though, below $100, possession of a cell phone is sufficient. Think venmo, uber. With paypal, they have your identity, so you can get larger amounts, gradually increasing as your trust — and stake in paypal increases. Up to where you need a merchant account — where you are back to providing collateral for the powers that be.

So it comes down to three things:

1 – trust
2 – risk
3 – collateral

Blockchain cryptocurrencies only address #1, and do much more inefficently, and only marginally more securely than a simple cryptographic hash. And the real show stopper, is that there is no means of exhange, to enter or exit the system. It requires total buy in from everyone — in other words, to be declared FIAT, for it to even succeed as a medium of exchange. While still not solving the obstacles of risk or collateral.

Advertisements

Alternatives to Wordpress?

I’d like to find an alternative to WordPress.  But I want a CMS, not a hosted WYSIWYG website builder (like Wix), and not a static site generator (like Ghost).

Here are some of the features of WordPress that I see as most valuable:

  1. Editing pages / posts — for convenient content delivery
  2. Admin interface — for management by non-developers
  3. Themes — for consistent and changeable layout and appearance
  4. Plugins — for added functionality
  5. Analytics — for tracking visitors and conversion
  6. SEO — for improved search engine results

Here are some things that I think WordPress is lacking or weak:

  1. Development — WordPress is spaghetti code and developing themes and modules is clunky
  2. Customization — Because it’s so clunky, it’s difficult to customize layout and functionality.  A WordPress theme / module developer is a special niche.
  3. Backups & Versioning — WordPress still doesn’t have a reasonable solution here.  The root of the problem is that all content is stored as blogs in a (poorly designed) MySQL database.  Keep content out of the DB and put it back in files.
  4. Static — WordPress is always run on PHP with MySQL.  You should be able to export your site, and it should still work (with graceful degradation) if either your database or your CGI module goes down.

I would like a tool that is good for building documentation heavy websites, blogs, business sites, marketing landing pages, and some e-commerce capabilities.  You should be able to connect to APIs, build modules with templates that connect to those APIs and embed components on pages easily.  A plugin architecture for sharing modules / components is also desirable.

The site should consist of static HTML pages that can be generated from templates / markdown / other tools etc.  So having a route / map is important — but the site should be able to function using file / directory structure from a static webserver at it’s most basic.  Some functionality, some data, and some layout and dynamic content may not work, but your site should still be up, you should still be able to navigate and access content even if everything except static web serving is down.

Then there should be a front controller that is injected before each page that can add additional functionality such as analytics, dynamic routing & content, etc.  This controller would also enable not just modules but the admin interface.  Ideally, as much as possible is handled via javascript added to the pages (optionally even to the static pages) to handle things like analytics, dynamic interaction, fetching content / data via services, etc.

Then there should be the tools that manage compiling templates, incorporating modules, etc.  This should be able to be done offline, or on demand while the server is running — for instance while editing a page / layout / content / plugin via the admin UI.

Is this too much to ask?

 

 

 

What do LinkedIn and Github have in Common

Microsoft has been making some unexpected acquisitions, far outside their core of Windows, Office apps, or even mobile. With the purchase of LinkedIn, and now Github, they’re definitely trying to build a network of technology related services that live outside the traditional Microsoft ecosystem.

Skype was the first of these, and it was killed off in an profitable arrangement with the telcos. But still sort of lives on as a weird collaboration tool. I take that back, Hotmail was a much earlier, external web-based service that was bought, and slowly, over several years, subsumed, until now it’s just a web front end for Outlook, and occasionally used for throwaway emails accounts.

And these sorts of acquisitions have one thing in common, user data. Skype and Hotmail were general end user apps, and have been inadvertently suffocated. But LinkedIn and Github are focused specifically on business users, specifically technology users, and both are the core platforms for gaining access to software developers. I can think of one other platform where someone might go to collect developer information…Stack Overflow.

Whether it’s driven by Nadella or not, I think Microsoft is trying to turn itself into a general IT services company, ala IBM. They know they’re legacy. Windows is dead (or will be once the hardware running the last Windows 7 PC dies) but there will still be a need for the applications run on it for a long time. (Just like IBM 360 mainframes.) But in order to keep developers thinking about Microsoft (so managers keep buying Microsoft support contracts) they need to own the toolchain that developers use.

I wouldn’t be surprised if the main goal of the acquisition is mining data for recruiter purposes. Microsoft alreay has a very close relationship with contract shops, having created the industry to get around full time employment laws in the 1980s, and many big recruiting/contractor firms are (or were) headquartered in the Seattle are and started by Microsoft employees.

Whether Microsoft will be able to capitalize on this is yet to be see. They have a track record of driving away users and rendering the data collection useless (see Hotmail & Skype). But I expect eventually to see recruiter spam through Github soon.

I love a good conspiracy theory. (Ask me about chemtrails and the moon landing sometime.)

Five Stars – What Customer Reviews Tell You About Your Business

I love to read negative reviews. My wife will tell you it’s because I’m a pessimist. I say because it’s where people tell the truth. Maybe I am a pessimist.

Here’s what I think each rating indicates:

*  Anger
** Frustration
***  Apathy
**** Dissatisfaction
***** Attachment

* ONE STAR

No question, one star reviews are the most damaging. Someone is upset, and they’re here to vent, and will probably bring in their personal problems. I’ve been there. And there’s not much you can do beyond damage control. Either you didn’t deliver at all what was promised, or this is just an angry person.

** TWO STARS

This is where I always jump to when reading customer reviews (on Amazon for instance.) These people wanted something and are frustrated you didn’t live up to their expectations. Here’s where you can learn what you did wrong and how you can do it better.

*** THREE STARS

Almost never find anything useful. Either it’s someone frustrated being generous or someone content but pessimistic.

**** FOUR STARS

This is where I go next after two star reviews. Here, you have people who are generally satisfied, but there is something they didn’t quite like. Often it’s a personal preference, but maybe you’re 90% there. This is where good ideas come from.

***** FIVE STARS

Skip this entirely. These reviews are either true believers, or shills. Mind you, I’m not saying you don’t want 5 star reviews, just that they’re not going to tell you anything useful.

Sales and Marketing Software Frustrations

I have some experience with with sales & marketing software, and have done technical consulting for clients around email campaigns and Adwords. I’ve worked on e-commerce and CRM systems too. But that’s not my main focus. I’m a software developer and my specialty is testing & automation.

In the work I’ve done, I’ve been impressed by slick user interfaces and big promises (often illustrated by colorful charts), but I’ve always come away from those engagments frustrated, not just with technical complexity, but with an appreciation for the people who need to use these systems to do their work — which is primarily with people.

For instance, a salesperson who has to change the way he works into Salesforce for forecasting, a writer & SEO expert trying smoothly coordinate her marketing message across blog, social media, email and ad campaigns, or a fulfillment division trying to customize their order & support systems to handle their products that don’t fit a cookie-cutter mold.

I don’t think a single monolithic system that solves all these problems is the right way to go. For one thing, only a huge organization could afford something like this. Also, it’s bound to be as clunky and one-size-fits-all as any other existing system. And it would never get finished.

I think of how software is being made simpler with microservices and adaptive user interfaces. Let the users control their data and shape it the way they need it. Let the software provide the integration. Let domain experts define how they deal with it — the salesperson, the marketer, the writer, the SEO expert, the division manager, the CEO.

I think of how I write automation. First I understand the manual process, and then I try to understand the actual business requirements. Then I try to reconcile them and start with automating the parts that make the most sense, and provide the most value.

Sometimes it’s a combination of automated & manual steps that are more successful than either a fully automated or completely manual approach. And then, if you’re lucky, processes can change to make it even easier to automate once you have the confidence in your software — and the time freed from making it work for you — to think about what’s really important in your business.

I’d love to talk with people in these different roles and hear their frustrations and ideas for how sales & marketing software could be better — or even better, how doing their jobs could be easier — in spite of the software they currently have to use.

How to access elements when you get ElementNotInteractableException

My answer to this question on Quora:

How do I resolve the ElementNotInteractableException in Selenium WebDriver?

ElementNotInteractableException is caused when an element is found, but you can not interact with it. For instance, you may not be able to click or send keys.

There could be several reasons for this:

  1. The element is not visible / not displayed
  2. The element is off screen
  3. The element is behind another element
  4. Some other action needs performed (by the user) to enable it.

Strategies that may work to make it interactable (depending on the circumstance.)

  1. Wait until an element is visible / clickable
    WebDriverWait wait = new WebDriverWait(driver, timeout);
    wait.until(ExpectedConditions.visibilityOf(element));
    wait.until(ExpectedConditions.elementToBeClickable(element));
  2. Scroll until the element is within view
    Actions action = new Actions(driver);
    action.moveToElement(element);
  3. Use javascript to interact directly with the DOM
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("document.querySelector('locator');
                      element.value = 'whatever';")
  4. Perform whatever other action is necessary and possibly wait until after that.

Viewing or converting .flv video to .mp4

ffmpeg is a command line tool that can convert .flv videos to .mp4 (or another format).

ffmpeg -i video.flv -codec copy video.mp4

Ffmpeg is easy to script, but the number of command line options can be daunting.

Screen Shot 2018-01-09 at 4.42.52 PM.png

handbrake is a GUI application that can also convert .flv to .mp4.

Handbrake is actually a wrapper around ffmpeg that offers sensible defaults but still allows you access to many options.

Screen Shot 2018-01-09 at 4.38.41 PM.pngVLC is an app that can view .flv videos directly.  The VLC Player is free to use.

Screen Shot 2018-01-09 at 4.42.41 PM.png