Introduction to DiMECASH: Why solutions like this one matter.

DimECASH (stylized with almost all capital letters) is a method of hacking readable text and off-chain references into cryptocurrency transactions. This is done with a system of interrelated hacks always involve simply sending specially formed transactions rather than relying on Operational-Return codes. The system can function on Base58Check based currencies and requires little programming knowledge or infrastructure (somethings can be done from a smart phone with generic wallet software).

What DiMECASH means in laymen’s terms is now people who use bitcoin can voluntarily add text to their transaction. Previous technology allowed programmers to add isolated transactions which could be interpreted as text, but were never quite the same as a financial transactions and were limited in length.

A race is underway between Corporate Sponsored blockchain service providers and cryptocurrencies such as Ethereum which have traditionally provided a Smart Contract feature. The DiMECASH system doesn’t concern itself with creating new software or competing to solve the challenges that these efforts face. Instead, the system focuses on readability, usability, and faster adoption by the general public.

It might be helpful to compare DiMECASH to a check register. Sure you could have learned to download all of your transaction from your bank into your Quicken program about 15 years ago, but you could have also simply bought checks that came with large notation fields (or even simply used multiple lines for each transaction), such as:

check no. 301 May 15th
Rib Shack $17.43
Lunch with Kevin from ABC-CORP
(empty line)
check no. 302 May 17th
Food Lion $2.17
milk and cheese for Pam K.
(empty line)
check no. 304 VOID—————–
(empty line)
check no. 305 May 18th
Rent for last month $662.50
ETC…..

So now if we apply this example to an opened and shared ledger, we can do something similar

DCxRiBxSHACKxMAYxFiFTEENTHzzYDy2ur 0.000001
DCxLUNCHxWiTHxKEViNxFRoMxABCvtDgVb 0.000001
DCxSoMExACTUALxADDRESSzzzzzzVjhx3d 5000.00039692

DCxFooDxLioNxMAYxSEVENTEENTHZz8qx8 0.000001
DCxMiLKxANDxCHEESEzzzzzzzzzzck2hKa 0.000001
DCxFoRxPAMxK1zzzzzzzzzzzzzzzZ9ye99 1753.35672352


Of course this is just an example. it would not make sense to public such mundane yet personal information into the blockchain.

The technology to do this is straightforward enough, the “obviously unspendable” will always show up in the same order and an auditor can always understand that each single multi-part transfer was send from one single entity.

Though this system might seem trivial at first, I would suggest that people think hard about how this practice could change the ecosystem of the currencies. Cryptocurrency Whales can now talk to each other via the currency and better collaborate. Charities and non-profits can now accept money in ways where the giver’s intentions for the money is world-readable and can then send the money to others in a way that is equally transparent and audit-able.

Anyway, if you want to visit a proof-of-concept, check out https://dime.cash

Here is an example transaction:
https://chain.so/tx/DOGE/13cba37ad839edf4ff5c33ec0eff4d00e2d53f868f2d101c99dbe2f05263d499

We are doing Crypto all wrong

I think that it is time to have a real discussion about Cryptocurrency. For years, bitcoin and its descendant coins have been used in a myriad of ways by people or computers that may or may not know each other. They did so without the help of smart contracts, AI, special mining rigs, hardware wallets, or any of the many other solutions which are on the market today or are just around the corner. We need to invest much less in complicated perceived software requirements and much more in actually using what is available.

This about it this way: Crypto is money just like Fiat money issues by a government. No one looks at a stack of $100 bills and wishes that the physical piece of paper could verify the identity of its recipient, that would be silly. Yet we seem to be focusing our interest in blockchain technology in the idea that it is lacking in some way. Paper money is produced in a special way that makes counterfeiting very difficult and thus has some fraud prevention added into it. Bitcoin and the alt-coins all already have certain traits and characteristics that make them uniquely well suited to certain tasks. Part of why paper money works is that people can verify its authenticity with some degree of certainty without the help of a third party. Yet when we begin to think about Cryptocurrencies, we are immediately bombarded with third-party solutions. Some of these will turn out to be incredible, but many of them will end up being a waste of money.

It seems to me that a better way to invest in Cryptocurrency is to stop worrying about the price of bitcoin, or EOS, or Ethereum, and find a quiet but stable currency and try to bring it into your actual life somehow. Many many more people need to actually come into possession of some small amount of currency and understand the basics of how the system works. I am not suggesting that the casual user need to deeply understand proof-of-work versus proof-of-stake, but simply how wallets and exchanges work.

Finally, I believe that I have discovered something that will make the process of using Cryptocurrency as actual money work even better– by making small changes to transaction amounts and sending other very small modifying transactions, we can attach meaning more directly into the ledger. I have been experimenting with a system of doing this for many months now and believe that it and other similar organic blockchain hacks are so open and so flexible that we are going to reach a tipping point where existing technology will form a fundamentally new and opened way for us to connect with each other and liberate our social media experience. My instinct tells me that we already today have 99% of the technology that we need for this and what needs to come next is simply training. The transaction becomes a communication of financial value, data, or both. While I have a few web solutions which can be used to reveal how this system works, it is not dependent on anything that I would produce or hold a claim to. In fact, the only way I could every be paid for people using the system that I devised is if they send me a tip. Someone could copy my ideas and without some effort I would not even know it. Others may have been doing very similar things for years, and again I may not even know. The ledger is like a radio station transmitting signals into space, but by calibrating our sensors, we can find all of the signals and can quite easily see that data.

Consider the monk, or the stenographer, or telegraph operator. These people created and transmitted messages in ways that seem crude to us today. In those cases, the need for greater technology pushed the creation of tools. But today, the technical landscape has changed so quickly that our push for innovation today is based on speculation, not need. The problem is that we are looking in all the wrong places. The really good solutions are elegant and simply and quite often are also stumbled upon because someone is trying to use one tool for a new purpose. Rather than relying on an expert class of thinkers, we need to simply try to solve problems.

I can’t say if the way that I do things will take off, or is best, or is even particularly good. For the most part, it doesn’t really matter. The system is good enough for me and any message that I would have written will be readable and verifiable as long as the very popular alt-coin that I use (Dogecoin) is around. I can’t say the same for a private blockchain solution. The messages that I send can be transmitted from any sort of wallet account, now I just need people to transmit the messages back to me, but that might not be so hard to do, as long as I focus on the general public instead of on experts. No need for complicated solutions, but rather very simple implementations, and a few small innovations.

John Rigler
john@rigler.org

You can learn about my system at https://dime.cash. Feel free to connect on Linked-In: https://www.linkedin.com/in/jrigler/

Hello WordPress, my old friend…I’ve come to type on you again…because it seemed to be the thing…that would really make my soul sing…etc.etc.etc.bridge.repeat…

I have forked a version of litecoin into something which I call DimeCash. It is not intended to function as a currency, and will be altered at the publicly shared source level to discourage monetization. DimeCash intends to act as a public message system that simply exploits oddities of the proof-of-work blockchain first realized as bitcoin. The system has three main parts:

  1. Obviously Unspendable Ledger Addresses are appropriated as Human-Readable Anchors
  2. Small Hashes and Coded Systems are transmitted as the least significant part of a transaction.
  3. Bash functions are used as a record format and may or may not change the systems state if executed.

    ———first angry comment (received by USPS mail)

This is a terrible idea. No no no. Don’t do it. Have you heard of Opt-Return Codes? They are so good. This is bad. This idea is so wrong that it caused me to:

Begin() {
: to.type.stuff funny;
: because it is not.good.like.Opt-Return-Codes
pwd
hostname
: see you can run commands too
}
————————————–from command line————
dime@dime.cash [~/www/Rude.Replies]# cat Begin-14878.1
Begin ()
{
: to.type.stuff funny;
: because it is not.good.like.Opt-Return-Codes;
pwd;
hostname;
: see you can run commands too
}
bash 4.2> declare -f Begin | sum
14878 1
dime@dime.cash [~/www/Rude.Replies]# declare -f Begin > Begin-14878.1
dime@dime.cash [~/www/Rude.Replies]# cat Begin-14878.1
———————————
Just kidding, I made up the angry comment above. Clever, yea. Anyhow…

We are left with a file called Begin-14878.1. I can now use my trusty python script to come with a Deadlycoffee Anchor…..

dime@dime.cash [~/www/Rude.Replies]# unspendable D DCxDEADLYxCoFFEExDoTxCoMxxxx 30
DCxDEADLYxCoFFEExDoTxCoMxxxxBYwAyV

Now I can go to my favorite Dogecoin Browser and enter the above Fake Unspendable (Warning Will Robins, send only pennies) Irretrievable Proof-of-Burn address.

https://dogechain.info/address/DCxDEADLYxCoFFEExDoTxCoMxxxxBYwAyV

If you follow the link, you will see a QR code. If you send 1.00014878 DogeCoin to the address with a DogeCoin App. on your phone then this blog post, plus the DogeCoin Blockchain, will create a record. The hash is used as a stub. The fact that the Address points back to this website creates a very strong contextual link. If asked why you send 1.00014878 to a readable Dogecoin address, and someone saw this blog post, then your only reply would be to affirm that you saw this or that you had no knowledge of any deeper meaning to your actions. In other words, while a strong link between the transaction above would point to this article, it does not implicate any particular person as the “author”.
Neither you nor anyone else could present an alternate explanation for 14878 that would be as compelling as the one presented above. A five-digit number would more likely be a hash reference or ZIP code than a sequential reference to a field in a database.
Check out DimeCash, the website: https://dime.cash


abcd-minded bash functions

Lately, I have been thinking deeply about blockchain. I have determined that we are doing this all wrong. It seems to me that the following four functions which I tweeted out are a blockchain. WordPress seems to have trouble with some of the letters and symbols that I used, but all four are visible on twitter.  In order to generate these, I used the terminal on my Macintosh laptop and vi (my favorite editor). Starting with å (Opt-a), I have each function as its own block. The triangle (opt-j) function is called at the end of each function and writes it to a local file which is hashed by the sum command into a filename. The next function will error out if that file is not present. Once all four files are on your computer, you can simply run each function in order: opt-a, opt-b, opt-c, opt-c. You will then see a mysterious gibberish language that any Joyce Scholar should love to unravel. This can also be seen (in these examples) by simply reading the functions below.
I think this represents a new approach to converging language and code and can be actually more accessible and definately more fun that traditional coding.More importantly, I do believe that I have created a blockchain that is both secure and accessible. So the act of trying to figure this out and creating your own additional or alternate functions would be worth the effort. This system has no specific backend, but could easily be dovetailed into another system. For example, I made sure that each function was under 240 characters and posted each individually into twitter. I challenge you guys to tweet back to me with your own versions at:j0hnrigler. I also challenge you to pick up a copy of Finnegans Wake and begin to explore its secrets yourself, and maybe even try to unravel what I am saying about the world around me. Have fun.

Thoughts about DevOps

I have had quite a few DevOps interviews lately, and it is just about to come off of my resume completely. I think that I genuinely confuse people, because I have a security patent from IBM, I seem to make little dashboard widgets, I talk in very abstract ways about agile thinking (functional scripting no less) but have not been a paid ‘developer’, but rather an Operations Person. Actually making code run consistently and streamlining processes, migrating from one solutions to the next, and then downloading, installing, and supporting all the fancy packages that you guys need has just always seemed more important to me. When I first started at IBM, there was so much work to do that was fulfilling that didn’t necessarily involve writing code.

I bring your legacy solutions directly to the door of Amazon and roll forward with a reasonable plan to get your entire infrastructure ported over to it, shut down your servers and pack them up to ship away, but I am not a developer. I am IT infrastructure, and if your team if of a certain size, then you really need a couple of guys like me. I live in the shell and code or learn new stuff like docker or aws because I enjoy it, but I really think that your dream Linux Admin/DBA/aws/Java coder is much rarer than you might imagine.

So maybe there are two very different sorts of DevOps people that need to be working together, like we always have.

http://insights.wired.com/profiles/blogs/what-is-devops#axzz4oca6v6Es

Exploring BlueMix

I just got a trial BlueMix account from IBM.  I will begin to play with it.  I like to map out such efforts in a special shell solution which I call sbshell.  Generally, I iterate between the shell and editor to begin to create a functional library.  In many cases, shell will not be part of the final solution, but it gives me a good place to start and allows me to quickly turn incidents and problems into working prototypes.

 

john@purple:/var/www/html$ sb.init
Reload web...
Reload site5...
Reload web...
Reload svg...
> sb.vi bluemix  

This creates an initial set of bash library files named ‘bluemix’, the first is local to my user, and the second is global. Both libraries are sourced into the environment after each save. I will then create a bluemix function that will run successfully, but will just ssh into my remote instance by default. In it I will store everything that I know about bluemix and begin to add functionality. It is like a scratchpad that becomes a launchpad.

#!/bin/bash

-() { return; }
---() { return; }

bluemix() {

--- bluemix
  - Image ID:c3432649-385b-4b7a-909d-80ba79d5e84b
  - flavor ID:1
  
ssh linux1@148.100.5.125
}

The build just finished a new instance that I created, so I grabbed a bit of information that might be useful later and set up my ssh keys.

john@purple:~/.ssh$ bluemix
Last login: Wed Jul 19 14:48:00 2017 from 173.175.254.4
==============================================================================
Welcome to LinuxONE Community Cloud!

This server is for authorized users only. All activity is logged and monitored. 
Individuals using this server must abide to the Terms and Conditions listed here: 
https://developer.ibm.com/linuxone/linuxone-community-cloud-terms-conditions/. 
Your access will be revoked for any non-compliance.
=============================================================================
[linux1@bleugren ~]$ 

So now I have a pretty basic Jailshell to begin working from and some rough documentation of what I did. If come back and structure the
lines that start with ‘-‘ a bit better, then I can overload the – function to act in certain ways, the following line could be caused to execute a curl against the api, if I were to be allowed access to imageId. What is nice is that I don’t have to fully define that functionality right now.

- bluemix.imageId c3432649-385b-4b7a-909d-80ba79d5e84b

This way of thinking and coding is to supplement work in other languages, such as Nodejs or python and make Enterprise level connections which can be, for instance, scripted in conjunction with an ansible hostlist.

Enterprise DevOps (like System Administration) is often done it tiny burst between meetings or incidents, and I may work on something one day and not look at it again for two weeks.  These conventions may seem trivial, but over time I am able to keep track of many different projects.

[ note: I recommend getting a free trial of bluemix, it was easy to configure and get to a point where docker was installed and available. ]

 

Functional Scripting tricks

As I code and work more and more in this field of Information Technology that is now begin called DevOps, I begin to develop certain tricks that I form into a style.

Here are a few to play with:

- () { return; }

Now you can use the ‘-‘ at the beginning of a line as way
to leave comments. You should probably use this for structured comments that you might want to grab via reflection.

color() {
# The next line is functionally a comment too.
- alp color white red green blue
# If you overload the '-' function, then
# the color comment will become a function call
 if [ -n $1 ]; then
     case $1 in
       white)  FG='00m' ;;
       red)    FG='31m' ;;
       green)  FG='32m' ;; 
       blue)   FG='34m' ;;
      esac;
      printf "\033[$FG";
  fi
}

You can experiment around with what symbols you can overload in this way. So far, I found:

, . - + @

In what my structured comment line, I begin with the word ‘alp’. I will now define what ‘alp’ does.

# alp creates a function for each option defined
alp ()
{
- alp $1 $2
T=/tmp/$$
echo "$1.$2() { $1 $2; }" > $T
source $T
rm $T
}
alp color red
alp color blue
alp color white
alp color green

Now you have four new functions, one for each color.

declare -f color.red
color.red ()
{
    color red
}

So this is how I play with bash. It is very similar to how one might approach golang, python, or other functional languages.

Dealing with the “Silicon Valley” tabs versus spaces argument

The whole issue, of tabs versus spaces, which was dealt with on “Silicon Valley” last week, is easily resolved. No need to lose your super-genius girlfriend. In the show, she is shown hitting the space bar over and over when she could just hit tab a few times.

Of course the issue is that tabs can be interpreted visually in very different ways. Microsoft Word seems to want you to reset your tab stops for each line, or some other foolishness that I can’t quite wrap my brain around.

The answer is that you can use whatever you want, and can use .vimrc to change tabs to spaces if necessary. Since I am not working on the Linux Kernel, and often work with YAML, I have expandtab and tabstop set to 2. This allows me to nest loops with 2 spaces and never create a YAML file with tabs (which throws an error).

set tabstop=2 softtabstop=0 expandtab shiftwidth=2
— from .vimrc
 

 http://tedlogan.com/techblog3.html

Realtime OOP PHP SVG coding

Today I am devoted a bit of time to object oriented laser cutter controls. Although the 3d printer is wildly useful, I find that the things that I can create with it are simply too small and too fragile. The laser cutter, on the other hand, allows me to create large and stable objects. By creating jigsaw pieces, large boxes can be made. The pathing is tricky because the width of the laser must to taken into account. Each segment must be moved slightly in various directions in order to create a tight fit.

toolpath

Above is the finished product, ready to go to the Dallas Makerspace for test cutting.  I will only cut the green line, because it takes into account the width of the laser.  Below is a screen capture which shows how I work.  I run with a 5 second page refresh so that I can keep my fingers working on the code instead of mousing over to my browser.  Below is a snipped from the heat of the battle.  I just hardcoded in my path, as you see that I wasn’t quite finished defining my polygon below.   Next I will need a better separation of data and code, but I had to just get a prototype up and running first.  This way I know what is possible and reasonable and can now refactor in more flexibility.

Screenshot from 2016-05-30 11:13:12

http://secretbeachsolutions.com/svg

https://github.com/johnrigler/svg

box

Now I see the next calculation that I need to make. The male and female pieces fit snugly together, but now I need to adjust the side lengths and how deep the joining sections go. One problem solved, and on to the next.