Future Imperfect & Software Stream of Consciousness
The Future of Work?
One of the sad things about growing up, is work. I was dismayed to find out that if you worked one day, you had to do it again the next day and the next day. And at the end of it all, you die. And some jobs -well, the best thing about them, was the chair you sat in -it swiveled.
Work is inevitable & it might as well be efficient & free of frustration. So I modified my laptop.
I used to be a Microsoft zombie because I worked in Windoze. If I wanted to remember something, I'd jot it down in Notepad & save in it Documents. Documents was a vast collection of just about everything. Since I work on a few projects at once, that system became untenable. I modded my laptop & came to the conclusion that perhaps I've invented a new work paradigm & the tools to manage it.
I needed a personal database & it needed to work in a browser. Enter pouchdb. Then I needed a new browser, because Chrome won't let you work with local files unless you mod it & it opens you up to vulnerabilities. I use Midori locally for my db/files. And I usually have an IDE open (and many windows) so I have a bot run by Tomcat with AIML -a windows manager. I think that I may have something that doesn't give away my data to 3rd parties. All it needs now, is a bot that does the work for me.
(originally appeared as a LinkedIn post: https://www.linkedin.com/in/ken-bodnar-57b635133/ )
Hiring Teams Instead of Individuals
HR has it all wrong. They shouldn't be hiring a person -they should be hiring a team.
I was thinking about the future of work & emergent tech. When I visit companies, often I go into an IT shop that has a mix of C# programmers who learned their trade by cracking shrinkwrap, writing "Hello World" tutorials & kiddie scripters who barely know how to write SQL code. These people did an adequate job of filling the IT needs at a good price when the company needed it. When it comes time to stretch the tech muscles, they hire one new guy & expect him to make a silk purse out of a sow's ear. However, in the bunch there're gems who can perform well beyond their pay grade, but they're held back by a majority of folks who are afraid of what they don't know and the prospect of let go or marginalized.
So why don't companies hire an established team? These people are used to working together. They know their stuff. They get a job done. They take a percentage of the profits in lieu of benefits and regular employment and move on. Blockchain and tokenization can help in this paradigm of trusted records keeping.
A team can be productive because they are independent. They don't play politics. They don't take orders from just anyone. This is good, except for a sales team.
(originally appeared as a LinkedIn post: https://www.linkedin.com/in/ken-bodnar-57b635133/ )
Blockchain Development Environments
Your blockchain development environment has a virus. It's called Windows. Of course, if you are a blockchain developer, you already know this.
The first time that I did a Docker installation of a BigchainDB blockchain, there was a graceful implementation on Mac & a kludge requiring 3 more pieces of software for Windows and it was problematic. (Docker & its smarter cousin Kubernetes are small, custom-configured server deployment execution environments that run on a laptop & act as a blockchain servers).
Because Mac is Unix based, and if you know Linux, you can actually fix installations that don't work. When a Microsoft Installer does something, everything is opaque & unfixable unless you have a few months to trace things through.
Now don't get me wrong. Mac blockchain installs are weird. You need a pile of stuff like curl, git, brew, node, npm, nvm, lts, as well as a couple of C & C++ compilers. You feel like you are typing in a Bosnian dialect and you would like to buy a vowel. However, since you are issuing these commands separately, you knows what fails and what needs fixing. It isn't easier, but it is quicker to production.
Blockchains need crypto, hashing, peer networking and a database to make them blockchains. They ain't simple databases.
(originally appeared as a LinkedIn post: https://www.linkedin.com/in/ken-bodnar-57b635133/ )
Transcendence in Blockchain
Blockchain 1.0 is toast. Creating ERC20 tokens today for payments is just another form of butt-scratching. It seems that almost every new offering today is just digital effluvia from a duplicated singleton button that everyone seems to want to press to make magic. Newsflash - only 8% of ICOs ever hit the exchanges. Why? Because there is no transcendence.
New technology implies a transcendence of the stuff used to comprise it. Bitcoin transcended blockchain and became a crypto currency. Ethereum transcended Bitcoin by introducing smart contracts. Both Bitcoin and Ethereum have value as a crypto-currency arising from their unique transcendence of their constituent elements. If you are making crypto because you have a different way to spend it, you are just like the guy who says that he has invented a new word called 'plagiarism'.
Blockchain is secure, transparent, autonomous & outage resistant. You have to find a way to use those constituent elements in an enchanting way that goes beyond the mere attributes of blockchain, Bitcoin or Ethereum. It has to transcend all of that.
When you use blockchain & tokens in a new way that changes forever the old way, you are truly disruptive.
If I had a dollar for all ICOs that were truly disruptive, I'd be broke.
(originally appeared as a LinkedIn post: https://www.linkedin.com/in/ken-bodnar-57b635133/ )
Private Social Media
Folks are funny. They rant & rave about privacy & yet post the most intimate details of their lives on social media & bitch and complain when no one reads their posts.
The real funny bits, are the Youtube stars who make Cinéma Vérité videos & say "I'm not telling you where I live because all of the nuts out there", yet give enough meta-data about their lives, such that any reasonably logic monkey can figure out their town, if not their exact address. Case in point, a youtuber injured himself in an earlier video & posted the antibiotic bottle for the drugs to combat the infection. He was careful to hide the address, but if you googled the pharmacy number on the label (which I did) it gave you the exact address.
But there are those of us who don't want Facebook to mine our data or sell our meta-data. We don't want our data disseminated.
So I am thinking of a new type of social media platform where all of your posts are encrypted. You pull a reverse asymmetric encryption. All of your contacts have your private key for that social media platform. You publish your posts with a public key that you don't disclose. Only those with your key can read the posts. To pay for this platform, you agree to look at 10 ads a week. Makes sense to me.
(originally appeared as a Linked In post: https://www.linkedin.com/in/ken-bodnar-57b635133/ )
The Future of Crypto-Currency
I'm usually cleverly disguised as a rational adult. I have to come out of character when I confront an irrational world. The irrationality really shows through when you have an out-of-money experience & a client wants to buy your services, but wants you to sell them something that you don't believe in. You really have to think twice before saying nothing.
So I was evaluating algorithms to trade crypto. Do you do the DEX & smart contract route that can have consequences like front-running & bully-buying because someone else allotted a larger amount of gas that got the smart contract to execute their order before yours?
Then it dawned on me. What if the current crop of crypto-currency goes the way of the dodo bird? What if the Winkelvoss twins hire a Harvard drop-out to write new crypto-currency paradigms & the programmer goes off on his own and invents a brand new crytpo-currency that doesn't need a few minutes for proof of work, or who's virtual machine node fits on a mobile phone. Then the holders of all of the ERC20s will be fubarred - & broke, just like the hodlers who bought more BTC at $9100. What if you had a crypto that was chain-agnostic? Holy Crap - I was seeing the future. But the feeling passed. I think it was gas
(originally appeared as a Linked In post: https://www.linkedin.com/in/ken-bodnar-57b635133/ )
I'm going hunting a SNARK
... snark ...
noun ...
... an imaginary animal (used to refer to someone or something that is difficult to track down).
Lewis Carroll wrote this about SNARKS in 1874:
"If your Snark be a Snark, that is right:
Fetch it home by all means—you may serve it with greens,
And it’s handy for striking a light.
You may seek it with thimbles—and seek it with care;
You may hunt it with forks and hope;
You may threaten its life with a railway-share;
You may charm it with smiles and soap—”
However, he wasn't talking about a specific type of modern SNARK -- the zk-SNARK. zk-SNARK stands for “Zero-Knowledge Succinct Non-Interactive Argument of Knowledge,” and refers to a proof construction where one can prove possession of certain information, e.g. a secret key, without revealing that information, and without any interaction between the prover and verifier.
The possibilities of zk-SNARKs are impressive, you can verify the correctness of computations without having to execute them and you will not even learn what was executed - just that it was done correctly.
When you use zk-SNARKS with blockchain, you have virtual a limitless range of applications that can be exploited. I'd say more, but I have to stop at the patent office first.
(originally appeared as a Linked In post: https://www.linkedin.com/in/ken-bodnar-57b635133/ )
Local versus Global Optimality
Neural Nets & Evolutionary Algorithms can be pretty dumb & pretty smart at the same time. How? The same way that quantum physics works where we have local conditions that work for our immediate locale/environment & quantum or global conditions on a massive scale in the rest of the universe that may be invisible to us.
When you give an adaptive AI machine a learning set, it self-adjusts until it evolves to solve the problem. If it works perfectly with the data of the training set, it has local optimality. If it works universally beyond the training data, it has global optimality.
The normal algorithm of AI is to climb the closest hill it encounters, which is the best solution locally. That may not be the highest hill and the machine may be trapped at the top of a low hill. Once it reaches the summit, it doesn't know enough that it may have to climb down the hill to get to a higher better place.
This is true also in technical architecture. An application may be built that performs well locally, but fails when an attempt to scale it is made. The same is true for blockchain solutions. Some may have an ideal local application but won't fit for a variety or reasons on a global scale, and some of the factors may not be technical.
(originally appeared as a Linked In post: https://www.linkedin.com/in/ken-bodnar-57b635133/ )
The ICO Orgy Has Come And Gone. Long Live the ICO.
A ne'er-do-well with a spotty credit history and a shady business running out of a communal office-share with no employees decides to attend the ICO crypto buying orgy to make himself rich quickly. He shows up at the orgy palace. There're a few bodies passed out on the floor. The sawdust on the floor is what used to be the furniture. It is mopping up the vomitus. A weary bartender is cleaning up. Our shady joneser looks around and has a puzzled look on his face. He turns to the barkeep and says "I've come for the orgy".
The barkeep replies, "Sorry, it's over. Everybody has been screwed."
I tell this story because it's true. My best friend is a medical doctor - Chief of Radiology. He checked in with me last week & asked how I was doing. I told him that I had a few blockchain projects on the go. He replied: ICO=SCAM. My friend is a sophisticated investor with a 7 figure portfolio and that's his perception of ICOs. I had to create a long missive on how I do participate in ICOs, but my primary business is enterprise, data-centric blockchains.
To make an ICO work these days, you have to target real investors, with real value in the niche that you operate. You need business substance. The other orgy is dead.
(originally appeared as a Linked In post: https://www.linkedin.com/in/ken-bodnar-57b635133/ )
Time For Data DNA
I'm thinking of having my DNA tested because most days, I feel that I'm not me. Weird ideas keep popping into my head. Yesterday I was thinking about data & analytics.
As a data science aficionado, I like to keep every scrap of data. I like to find things that the data tells me. Most of the time it tells me that my life is boring & I should go outside for a walk or find a way to get a private jet or something. But a thought with more gravitas struck me. Mother Nature doesn't keep a database of every animal, plant or cognitively-impaired Trumpkin ever produced. The pattern is kept in DNA. Whenever she wants to play dice with the universe, Cupid sends an arrow thru the hearts of polar opposites in the fat tails of a population distribution, and interesting things happen -usually in a manner where interesting is like circus-interesting.
So back to databases. Other than keeping an entry of identifying things like name and address, why do we have to have multitudinous tables for metadata about a specific humanoid. Why can't be have a classifier that stores a short hand model like DNA? This would be helpful for merchants holding customer data. After all, any merchant has a finite number of customer types. There has to be a better data way.
(originally appeared as a Linked In post: https://www.linkedin.com/in/ken-bodnar-57b635133/ )
Blockchain Confusion
If confusion is the first step to knowledge, the world is full of geniuses. I am still regularly confused by many things, including supporters of the US President & why a round pizza comes in a square box with triangular slices.
There are still people out there who understand the basic tenets, benefits, disadvantages & potentials of blockchain without an intrinsic understanding of blockchain transactions. For simplicity, lets define transactions as an entry to the blockchain.
Do transactions get pooped out in neat, little, synchronous, linear blocks? Yes, No & Maybe. How's that for a quantum answer?
In many blockchains, there are blockweights or block size. Transactions go into a transaction pool & nodes start to pack them in blocks. Once the limit is reached, a block is emitted. When you expand the 2nd pic below, you will see that a Bitcoin block has between 750-2,700 transactions. Transactions may not be in order. If a transaction is stalled because of validity or any other reason, or arrives after the packing process starts & other later transactions in the pool get picked up first, then the transactions aren't in order. But there are also blockchains where a single transaction is a block. It depends on the guts of the blockchain.
(originally appeared as a Linked In post: https://www.linkedin.com/in/ken-bodnar-57b635133/ )
Excited About Tech
Excitement in Life is usually like your dog's experience of going to the vet. They get all excited about the car ride until they find out where they are going. Unlike the mundanities of life, I can get excited about applying new concepts to things like blockchain and coming up with neat stuff that could disrupt so many things. If I wasn't busy earning a living, I would build stuff in a skunkworks. If I had money, I'd be dangerous (and rich)!
So what is some of the stuff that is whetting my excitement (and wetting my pants)? How about concepts in secure multi-party computation? This is a hugely under-exploited field. I would find/build/buy the hardware for a blockchain mobile phone. I would do some applications in Oblivious Transfer Cryptography (google it). I would invent a small footprint blockchain for personal use (Ken Olson, founder of DEC said in 1977 that there is no reason that anyone would want a computer in their home. Blockchain is at the same stage.) And who wouldn't be excited by conceptualizing Utility Fog ( https://lnkd.in/dJfjVpg ). So much to do and so little time.
Of course, it wouldn't preclude me from fun. I'd also make a lot of fun stuff too, like the electric dog polisher, instant water powder (just add water), and a fur-lined sink.
(originally appeared as a Linked In post: https://www.linkedin.com/in/ken-bodnar-57b635133/)
Setting Up A Wordpress Website On A Centos Virtual Server Using Apache
OK, so the web developer sends you a Wordpress zipped directory. Over to you. You have to set it up on a clean virtual server with Centos 7 Linux, and Apache web server. Here is a quick walk-through with some problems to solve along the way.
Necessary Security
Most of my applications are fintech related and have to be hack proof,so the first objective was to get rid of username/password authentication and sign in with a private key. The instructions for doing that are found here: https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server
So once you log in with your key, you want to be root so in the terminal program. I use PUTTY ( https://www.putty.org/ ), Type in: sudo -i
Creating A Certificate Signing Request To Make Website HTTPS Secure
You want to make a website secure so you need a certificate to allow you to use https. The way you do that, is you type into the PUTTY terminal: openssl req -new -newkey rsa:2048 -nodes -keyout your_domain_name.key -out More details found here: https://www.digicert.com/easy-csr/openssl.htm
The output is a .csr or certificate signing request. A key is also created in the form of your_domain_name.key. The .csr is a text file with the key request. It is a bunch of numbers and letters - a big bunch. Go to your certificate authority (I use Godaddy) and request a Certificate (they cost around $60) and paste in the CSR file that you made when they ask for you. You then download a zip folder that has two certs or certificates. One is for the server. One is a certificate bundle for the Certificate Authority (in this case Godaddy who buys them from MacAfee), and you will also need your_domain_name.key that you made with the openssl command.
An Ordinary HTTP Website Without SSL or Certificate
For an ordinary website without the certificate, you will need to modify /etc/httpd/conf/httpd.conf. I like using the vi editor. It is vi /etc/httpd/conf/httpd.conf. Hit Shift + i to insert. Scroll down to the Listen directive and type in Listen 80 to listen on port 80. Hit escape, type a colon and enter wq for write, quit and you are done.
Then you need to go up a directory and go into conf.d and make a file called mydomain.conf that looks like this:
<VirtualHost *:80>
ServerAdmin yourname@yourmail.com
DocumentRoot "/var/www/html/nameOfWebStuffDirectory/"
ServerName myDomainName.com without the www.
ServerAlias www.myDomainName.com
ErrorLog "/var/log/httpd/domainName.com-error_log"
CustomLog "/var/log/httpd/domainName.com-access_log" combined
<Directory "/var/www/html/nameOfWebStuffDirectory/">
DirectoryIndex index.html index.php
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Save the file. Then go to /var/www/html and make a directory with the name as above nameOfWebStuffDirectory using the mkdir command. SFTP all your stuff to the server and move it the new directory in /var/www/html/. Now you want Apache to own the files so you type this in: chown apache:apache -R /var/www/html/nameOfWebStuffDirectory/
You should also check the permissions. All folders should have chmod 750 foldername and all files should have chmod 640 filename.
MySQL Database Setup
Generally the web developer will provide an sql script. You load it in the usual way. If the sql script doesn't have the "create database" directive, you have to do it manually:
mysql -uroot -pPASSWORD
create database database_name;
exit
Then you load the database:
mysql -uroot -pPASSWORD database_name < sqlfilefromDeveloper.sql
You have to go to /var/www/html/nameOfWebStuffDirectory and edit the wp-config.php Wordpress file to change the name of the database to that of what you created. You also have to enter a username and password for the database. Again, I use vi as an editor because what I am used to. As a final step you have to update the Wordpress siteurl and home in the database:
mysql -uroot -pPASSWORD database_name
update wp_options set option_value='http://myDomainName.com' where option_name='siteurl';
update wp_options set option_value='http://myDomainName.com' where option_name='home';
exit
If you are using https, you should use that for the domain names in the update statement.
Start Apache
Then you start Apache with apachectl start or you can use /sbin/service httpd start. Other possible commands are stop and restart with the same command syntax.
The Dreaded 403 Forbidden Error With Wordpress
After uploading your files and doing all of the correct things, I was hit with the website being unable to load and the browser displayed 403 Forbidden You don't have permission to access ... There are four possible things to fix. The first is a corrupt .htaccess file in the root directory. Change its name to something else. If you website works you have found the problem. The second is actual permissions problems. All folders should be chmod 750 and files should be chmod 640. The third possibility is corrupt plugins. Disable all of your plugins by renaming the plugins folder located in wp-content folder. If you website works, then put the name back on the plugins folder, go inside and rename them all. Then add one at a time until you find the corrupt one. If that is not your problem, then the last thing to do, is to type in the following two commands as root:
setsebool -P httpd_enable_homedirs true
chcon -R -t httpd_sys_content_t /var/www/html/nameOfYourWebRootFolder/
Using SSL And Certificates for HTTPS Secure Website
Find the certificates that you got when you bought them and uploaded them to the server. You should have a server certificate that is just a bunch of letters & numbers with a .crt. You have a CA bundle cert and it should have the word bundle in the title. And you need your mydomain.key from the CSR operation described above. Move them all using the mv command to /etc/ssl/certs/. Then you run the following command: restorecon -RvF /etc/ssl/certs/
Force Apache to Use HTTPS Pages & Files
To force the Apache to use HTTPS all the time, you must re-write each http url. Go to /etc/httpd/conf and edit /etc/httpd/conf/httpd.conf. Add the following lines at the end:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
Then you must create an ssl.conf file.
Create The ssl.conf File
Go to the /etc/httpd/conf.d directory and you should find a file named ssl.confrpm.new. Copy it and name the copy ssl.conf. Edit it. Here are the fields that you should edit (the comments are from the file and are reproduced here so you can find the fields):
# Enable/Disable SSL for this virtual host.
SSLEngine on
# General setup for the virtual host, inherited from global configuration
DocumentRoot "/var/www/html/nameofFolderWebStuff"
ServerName www.yourDomainName.com:443
# Use separate log files for the SSL virtual host; note that LogLevel
# is not inherited from httpd.conf.
ErrorLog logs/ssl_error_log
# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. A new
# certificate can be generated using the genkey(1) command.
SSLCertificateFile /etc/ssl/certs/serverCertname.crt
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /etc/ssl/certs/yourDomainName.key
# Certificate Authority (CA):
# Set the CA certificate verification path where to find CA
# certificates for client authentication or alternatively one
# huge file containing all of them (file must be PEM encoded)
SSLCACertificateFile /etc/ssl/certs/gd_bundle-g2-g1.crt
You may need to add this under the first directory section:
<Directory /var/www/html/webstuffDirectory>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Save the file. Then start the apache server: apachectl start.
Sending Mail And Apache Linux Will Not Send Mail Problem
First of all, let me state that if you are on a virtual server in the cloud, or you are with AWS Amazon, Google Cloud or Microsoft Azure, you cannot send or use Linux sendmail on Port 25. It is blocked. That's because unscrupulous pigs would create a virtual, send a million spam, tear it down and do it again. So lets deal with the issue first that sendmail doesn't work and you are on a non-cloud server or at least an ISP that lets you send Linux mail on port 25.
Most distributions do not have send mail. To find out if you have it: netstat -tnlp | grep sendmail
If you don't have it, install it: sudo yum install sendmail-cf
Then you have to edit your daemon options. Edit the /etc/mail/sendmail.mc file. Look for the entry:
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
Change it to:
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
Save the file, run: make
Then restart sendmail: sudo systemctl restart sendmail
If you still can't send mail, you have to make sure that port 25 is open on your machine. There are a couple of ways of doing this, either with the firewall daemon, or the iptables depending on what you have running, but that is beyond the scope of this post. Google is your friend.
But I did get around sending mail on a restricted server. You have to use a legitimate SMTP relay. I used SendGrid https://sendgrid.com/ The first month is free and allows you 40,000 emails, and each month is around $10 afterwards. They have various plans.
There you have it in a nutshell. If I had this before I started, I could have saved myself a day of heartache.
How Many Files And Folders Are There On A PC Laptop
Did you ever wonder how many files and folders that are on your PC ? I just ran a full scan over everything on one of my laptops. I was surprised to find out that I have over 6.5 million files in over 118,000 folders on my laptop. In the pre-internet days, I could never imagine all of my stuff in over 6 million file folders. Information explosion and Big Data !!!
Of course, my computer may have more files than the average person, because this computer is used to write software.
Superrationality And The Fact That Bitcoin Has Become A Religion
Superrationality
From Wikipedia, the free encyclopedia: In economics and game theory, a participant is considered to have superrationality (or renormalized rationality) if they have perfect rationality (& thus maximize their own utility) but assume that all other players are superrational too & that a superrational individual will always come up with the same strategy as any other superrational thinker when facing the same problem. It is the triumph of Reason over Dogma. When it comes to Blockchain and Bitcoin, Superrationality is very rare. In the case of Blockchain, a lot of "Blockchain consultants" are like a guy with a hammer where everything looks like a nail. ICOs are the same way -- they want to tokenize everything, not realizing that there is no one size fits all. Not everything benefits from tokenization. Some do not realize that blockchain has another intrinsic function that is highly overlooked. It can organize human activity in a way that it has never been organized before, either on a virtual or real plane. This area is highly unexploited (and profitable). And Bitcoin unfortunately has become a religion. Rabid believers buy and hold through amazing cyclical volatility, while superrationists buy low, sell high and repeat when necessary.
Subscribe to:
Posts (Atom)