Olympic champion Germany edges Canada 3-2 on late goal in women's soccer frien

Weekly Goals

This past week I was able to accomplish some of my goals – a web deployment of an NFT, and did not accomplish another goal – a toy project related to conscious computation, keep up to date with Fast AI. I added and maintained some other goals related to education rather than production: work through cryptokitties, work through cryptopals, learn terraform. And I did add and achieve some goals related to community: continue my weekly blockchain working group (although only Amy attended),  started a weekly conference workshop – to workshop conference or meetup talks, and I started pair programming with Ben on OpenZeppelin deep dives.

A blockchain reading group started for Thurs at 10. This week was a deep dive into ethereum, but some fellow recursers posted links to bitcoin tutorials  and of course the original bitcoin paper.  Ben here at recurse is building his own blockchain from the bitcoin white paper.  I think it would be cool to have a cryptozombies for actual blockchain creation.

Last week my goal for week 3 was a deep dive into webpack and deployment. If I end up building the prayer coin in rust then I will then I will not do a deep dive into webpack.

This week my goals are  – I would like to reduce this to 5 things, because this is a lot. But we will see what I can get done.

  1. To release a medium article / tutorial on created a react web dapp based on my unpaid labor coin.  I would like to extend eventually beyond ReactJS and look at Rust (Tower) and perhaps Haskell.
  2. Work on UI beautification and continue building out the features of prayer coin. Instead of a deep dive into webpack, build the ui in Rust and maybe take  a look at some of the 0x utilities that Sarah posted on zulip.
  3. Deploy one toy open source project related to conscious computation. Ideas include finishing the virtual  prayer wheel, a musical integration with mastadon, or a python module that creates prayers from a corpus of prayers, or analyzes the structure of prayers.
  4. Contribute to a rust open source project – probably Tower
  5. Continue with the educational and community projects.
  6. This week is the RC hackathon. I may try and work with Tenor on his suite of mesh network deployment of build tools. Or Maybe an RC coin – not sure what that would be used for.

 

Unpaid Labor Coin – A New Hope

Today I finished up the webclient  to allow people to create and view Unpaid Labor Coin. It uses IPFS and rinkeby. I used this fantastic rinkeby tutorial to get up and running. I did not realize that I had to run a local node.  My goal is to move it over to heroku this weekend and release a medium tutorial.

My biggest takeaway was that it is pretty easy to add access to a smart contract (e.g., token) interactions to a web app. All you need to do is bring in the ABI (application binary interface) for the token into a variable in the webapp and call the functions on that variable.  It makes me think that I could deploy prayer coin in Rust!  But one thing to remember when you edit and redeploy your contract in testing use reset “truffle migrate –network development –reset –compile-all”. Otherwise your ABI will have more cruft than necessary associated with old contracts.

This use of smart contract also made me think of other methods of interoperability such as shaders (interop between the GPU and the CPU) and web assembly (wasm – formata for a virtual machine that can be a target for compiled languages to run in multilple environments.  There seems to be a glitchy area – it is hard to debug these items beyond looking at the byte code. I wonder what a more elegant solution would be? Perhaps when machine learning AI write our software it will not be an issue.

There were a bunch of fantastic presentations tonight at RC. One person deployed an npm library that customizes node init, another person when through the steps involved in optimizing a compiler and how to view the Assembly code. A third person went through his creation of a cheering bot using mastendon, which I was completely unfamiliar with although now I am going to use to for my music transduction bot. Some other presentations included music visualization, open whisper system, and chrome extensions, and an attempt to read 100 papers in 7 hours.  I cant play with all these technologies, but it is inspiring and educational to see what everyone is working on.

I continued with cryptozombies, took the day off from cryptopals, and decided to try to do as similar exercise with traditional algorithms. I find that spending 30 min a day working on these exercises are very worthwhile. It is something I definitely want to continue when I leave RC.

I had two events scheduled, a how to present at conferences event:  We are going to meet every week and individuals will propose and workshop possible event or conference presentations AND my weekly crypto hacking workshop. Only Amy came that one – thanks AMY! It was fun we set up ganache with metamask.  I am becoming a pro at basic ethereum blockchain setup.

This wraps up another official week at RC. I am making progress on my project but I am also thinking about what ancillary open source projects and open source tooling I can release as part of my over all prayer wheel project and the larger project of conscious computation.  I am thinking about what I can contribute to and what sort of meta learning goals I can use to frame my weeks beyond technical milestones and deliverables.

Red Mars By Kim Stanley Robinson

Terraforming

This is a picture of the book Red Mars, the first volume in the Mars Trilogy, by Kim Stanley Robinson. It too is about terraforming (among other things). Its a fun book, I recommend it.

But today, I am going to talk about the other terraforming involving dev ops – and that is Terraform by Hashi Corp.  Terraform is a framework for making and executing automated script based deployments. I have seen this story before with ansible, salt stack, chef, puppet there are probably more.  I have always revered back to bash scripts because I am old school and these tools were not 10x. But then I started playing around with ILP nodes and used their fantastic terraform scripts.  (ILP is a technology that provides cross blockchain interoperability).  Basically the scrips spun up so many aws services in such an elegant design, that, if I would have done it by hand, it would have taken me forever and would probably look a bit gnarly  (since I would just want to get it over with and would not take time to make in beautiful).

Fellow recurser Akiva gave a lovely terraform tutorial, which really demystified everything. We talked a tiny bit about providers. Providers, in terraform, are definitions for, or extensions of, services that you are integrating with e.g., AWS, GCS, Digital Ocean, Heroku, etc. I would like to write a terraform provider, but I am not sure what environment needs one.  If someone comes up with one let me know.

I missed the consciousness reading group, because terraform ran over and I just wanted to get back to my rust cryptopals.  I am really enjoying programming in Rust, feel like I am getting a hang of the language.  I sort of just want to lie on a couch and program in Rust reverie.

Ben and I continued our ad hoc contract reading group and looked at ERC721 in openzepplin  – Non Fungible Tokens (ie cryptokitties).  There was a bunch of weird magic involving hex referring to function stubs. Not quite sure why we need that.  We are considering submitting a sample contract for ERC721 to github- which would be exciting.

I also did the first chapter of cryptozombies, a fun website that walks you through recreating cryptokitties but with zombies.  I was fast, fun and reinforced my cryptocurrency knowledge – also I think it was a well made app, but the compiler does not recognize blank lines and spaces – where can I send a git pull. I kinda want to create cryptosucculents now.  The day is not over yet and I hope by the end of the day to have deployed my UnpaidLaborCoin app via heroku. This would satisfy my tech proof of concept for the prayer blockchain and remove the unknown unknowns (for the most part). I also hope to finish the first two lessons in fast.ai.  If I can get this done – then maybe I can write up a tutorial tomorrow on creating a blockchain app with truffle and react and revisit the Haskell music prayer wheel.

There was this random url in my browser.  Its cool so I am including it hear. I am not sure where I got it from but who does not love Tan Lin?

Reading Documentation

Today I continued building out the prayer project by adding token functionality to the reactjs project via the abi and address generated in the build file of the truffle project.  This was punctured my slow going Rust implementation of cryptopal solutions.

In the morning Ben and I went over setting up truffle and the ganache to create a ERC20 token. It was helpful for me to review what I had learned by teaching another person. And we founds things that neither of us knew.  The best though,w was taking a deep dive into the ERC20 documentation (hence the title of this blog post). This raised two questions.

First, where is the documentation that tells us to define the symbol and description variables of a ERC20 Contract? ERC20Details.sol! (Thanks Ben) Second, what is up with the Approve and Allow functions? Why does ERC20 need them?  I have read a bunch of different answers that range from:  it is because everything on ethereum operates by push notification (there are no listeners), to it is a security measure to make sure that only a certain number of tokens can be transferred by a smart contract execution.

I still don’t have a great intuition around it, but I read this very helpful article, and I think I somewhat get it. It is sort of a a failsafe.  I would like to read through the documentation for ERC721 with Ben tomorrow. These sorts of exercises are very useful and rarely are you able to engage with them when you have tight deadlines and just have to sling code.

This afternoon there were fantastic non-programming related presentations about everything from how the democratic party works, to polyamory, to hiking the pct. Fellow recursers are so interesting!  I followed this with some cryptopals with Austin and Liz. We discussed different algorithms for implementing a weighting algorithm to figure out which message is most likely to be a  plain english message base on word frequency.

One thing we talked about was using the sum of least squares as a weighting algorithm. This I somewhat remembered from my finance days and finding the best fit of a line among a cloud of points. It is the square of the standard deviation. So for example if ‘e’ is found at a .15 frequency and in this message it is found .25 frequency the standard deviation and ‘f’ is found at a .20 frequency and in the message at a .25 frequency. We average the difference so .10 + .05 = .15/2  = .0072 subtract this from each frequency. so .25 – .075 and .25 – .075  then square each result (to get rid of negative numbers).  Finally average those out  – this is sigma squared or the Variance. When you take the square root, sigma, this is the standard deviation.   The standard deviation brings everything back into the same units as your original measurements or quantities.

This reminds me of options trading, where you are trading the volatility rather than the price. That means you are looking at sigma – the standard deviation in stock price. This helps you understand the risk that a option will move X standard deviations away from its current price.  But it means that you think there is a bell curve (normal) distribution of prices.

This is not the case! First, there is skew – ie the curve is not symmetrical.  You also have kurtosis which describes the distribution at the tails of the curve which also do not follow assumptions that they are 3 standard deviations away – yada yada yada. Both of these could be applicable to the word frequency weighting algorithm.  Word frequency probably does not follows a bell curve (normal) distribution.   There is also the concept of Heteroskedasticity which refers to sigma changing over time. That is, volatility is not constant over time.  I dont think this is applicable our problem of word frequency unless we are looking at messages trying to be deciphered from a long time ago -but then I would just get the word frequency from that moment in time.

I am super exhausted. I wanted to say something about log normal and keeping your volatility between 0 and 1 BUT it is quite possible whatever I just wrote does not make sense, so I am going to hold that thought.

Austin came up with a brilliant idea for the physical implementation portion of the prayer blockchain. It is super cool and I cannot wait to build it. I am going to keep it secret.

And the bookstore from yesterday’s post is topos bookstore and there is another group Patrick told me about is called I/O that hosts radical-tech events at various locations. Thanks again Patrick for telling me about these and sending me the info on zulip!

From the movie Beetlejuice 1988 American comedy-fantasy[2] film directed by Tim Burton, produced by The Geffen Company and distributed by Warner Bros. Pictures. T

Getting into the rhythm

When I got into RC this morning it was time for a group communal learning activity. It was lead by one of the members of the W1 batch who had 7 weeks under her belt. It was interesting to see on a blackboard what people wanted to learn or teach.  I grabbed a coffee and chatted with my fellow recurser, Patrick, about his work as a political activist and we made tentative plans to visit an activist bookstore in queens that runs a mesh network allowing users to download ebooks or chat with one another BUT only while they are local (ie able to connect to the local network).

I spent most of the day working on the web app for my test NFT – unpaid labor coin. I am building it in react and I used create react app to generate the scaffolding.  Most of my work came in the form of reading documentation about the latest web3.js library.  I also did a deep dive into which node package manager I should use yarn or npm.  I also spent a little time connecting my ganache local blockchain to metamask – so I test the entire web app.

At about 5 pm I was done with my blockchain work for the day and I headed to the 4th floor, the social floor, to work on the first cryptopals project. Liz and I puzzled through converting hex to base64 without a library. I learned a bunch of things behind code I have written for years like what UTF-7 or UTF-8 really means (Hint: it is the way that the ascii characters are mapped to the decimal representations of each 6 bit chunk of data).

I wrote the conversion code in Rust, which is a very pleasurable language to program in, and I am excited to be learning it. I also aliased vi to nvim in my .bashrc because  my muscle memory is too strong and I cannot stop typing vi whenever I want to edit something.

To end the day, I bookmarked a few rust open source projects that are interesting and that  I would like to contribute to one of them: either a web framework called tower, or a web assembly library, which is heavily used by  parity  (a company building a suite of crypto tools, wallets and cross chain protocols).  I would have liked to have gotten in a bit of Haskell, but tomorrow is another day.

A bunch of folks  then headed into chinatown for noodles.  I went home and put the kids to bed and went to bed early. We made a perhaps unwise decision this weekend to allow the kids to watch the movie Beetlejuice, and although they have discovered calypso music, they now are afraid of ghosts.

eniac computer from columbia u website

R & D Day

I had a long car drive so I figured I could use opportunity to follow up on three software projects that people had mentioned at RC, that I am NOT going to actually work on at RC, but I want to take a little look and see what is involved.

First up I checked out Nand2Tetris.  I had never heard about this before RC. It is a coursera class where you build a computer from first principles – from an Nand gate to Tetris.  If may revisit this class this summer, but I did the first week reading, downloaded the software for HACK (the virtual environment we use to build our computer, although we can buy the electronics and build a physical computer), and watched the videos. It’s all about abstraction and how each level in a computer is an abstraction of a lower level – even Nand gates are ultimately abstractions of quantum mechanics – FAR OUT!  The first chapter also quotes Proust and Aristotle  – be still my heart.

Next up I checked out phaser, an HTML5 game.  I installed it via npm, because you need to run a webserver to serve the json. There might be some other reasons, but I skimmed the directions. I am copying this from the phaser website, you can get up and running pretty quickly by defining your world in a config object (see below) and then implementing the methods.

var config = {
    type: Phaser.AUTO,
    width: 800,
    height: 600,
    physics: {
        default: 'arcade',
        arcade: {
            gravity: { y: 300 },
            debug: false
        }
    },
    scene: {
        preload: preload,
        create: create,
        update: update
    }
};

I skimmed the github repo and the code looks well architected. I am going to keep this as a handy reference as I try and make my code open source ready.

Finally, I looked at Reveal.js, this is a presentation framework and it powers slides.com, Think powerpoint or keynote with markdown.  This is actually pretty cool, I think it would be nice to build tool that autogenerates reveal slides from comments.  or documentation.

I would have loved to have fixed my fast.ai setup but I have not been approved yet for the papersource instance I want to use.

 

 

Unpaid Labor Coin

After a super fun game night where I lost my 8 sided die to the game Avalon, I took it easy this morning. I took care of some things in Manhattan before coming into RC at around 3 to do some coding and say good by to the awesome folks from the Mini Batch :(.

Thursdays and some Fridays are times for presentations at RC, and I have decided that I want to present every week,  so I got down to business getting truffle up and running and creating an ERC721 token. For those of you who are not familiar with the terms, ERC means Ethereum request for comment. That is the way people create smart contract standards.

ERC20 defines the protocol for the standard token that people are familiar with all the cray IPO hype.  ERC721 is the protocol for Non-fungible tokens, tokens that are not commodities but collectibles.  One ERC721 is not equal to another, each is unique. The most famous example of ERC721s are cryptokitties.

I created an UnpaidWorkToken ERC721 as a sample token. The contract definitions have changed a lot in the past 6 months and I had some issues including all the features I wanted. I think I should extend ERC721Full.sol but I did not have time to write out all the required functions, so I just used ERC721.sol. This sadly meant that I could not give my UnpaidWorkTokens unique graphical images. Below is the data structure of my token.

struct UnpaidLabor{
string category;
string desc;
int duration;
int freedom;
int skill;
string uri;
}

Category is something like childcare, description is “watch my son”, duration is lets say 360 minutes, freedom is how constraining the job is on a 1-100 scale, lets say this is 90, skill is how much skill you need, lets say 50.

Although child care has become a commodity, we should realize that much of what was once consider nonmonetizable, such as family photos, is monetized, by social media companies. No judgement – just a fact.  Also, childcare is still largely unpaid work, we should honor this work in a way that does NOT turn it into a commodity or a part of the market economy.  Not everything has, or should have, a price tag.

NFTs are perfect for those things that exist in a gift economy where everyone is always in a little bit of debt to everyone else because the gifts cannot be reconciled quantitatively.

So my presentation was on this UnpaidWorkToken, I presented a minimalist slide set, some code, and some programs running in my terminal.  It was not quiet Barnum and Bailey – but I got it done.  The presentations were all fantastic ranging from a discussion of conceptual and code art, the history of computer art, bioinformatics, music, and live coding music (I may be missing some.

After the presentations, I went with some RCers to an algorave at baby castles, which was super fun and fascinating. I was home by a very reasonable 10:15!

A bazillion years ago Paul V and I made a documentary about VJing (which we continued with a history of light art) so this is an area that is, or at least once was, close to my heart. The scene has changed a lot, and I definitely want to try my hand at some live music coding at some point (after the prayer blockchain is finished).

So, now is a good time for me to spec out my next 5 weeks, and I am hoping this social proof will keep me on track.

Wk 2: basic webapp + metamask integration of NFT, v1 of prayer NFT & deployment to the test net  (rinkeby probably)

Wk 3: UI beautification and a deep dive into webpack (if I have time) and deployment docker probably (terraform is likely overkill) a deep dive in to whatever I choose  (if I have time), deployment to live ethereum network. I may also have some more work to do on the prayer NFT.  Maybe make the web app microservers or serverless.

Wk 4: Testing and feedback collection, perhaps create a fork of prayer coin and run the prayer blockchain on its own network – although I would need to find miners.  Start work on prayer activations – one IOT actuator related and one web visualization related. Maybe I will do one and not the other.

Wk 5. Integrate results from Testing and feedback.  Try to get more people on the network, Finish prayer activations.  Write Documentation

Wk 6: Because things dont always go according to plan.

I am thinking about It would be nice to have one tutorial a week although I may release them on Sundays.  If I can figure out the issues with my ERC721Full.sol, maybe that can be my first tutorial.  This turned into to a super long rambling blog post – if you have kept reading this far I salute you.

 

Whiteboard session

Prayer Smart Contracts

Back in the day when we used ntalk and finger, everyone had a .plan and a .project.

Here is my  plan:  An hour of cryptopals problems in rust (and scratch my itch to learn rust and crypto), an hour a day on a haskell toy project (maybe some music projects using Euterpea), an hr a day on something (fast.ai or algorithms or coffee tawk), and the rest of the time – around 4 hours – on prayer blockchain. I still dont love the name -but I sort of am afraid of calling it prayer coin. 

Today I built a toy NFT contract using truffle in preparation for my NFT brainstorming session. I had some issues with pragma incompatibilities. It is amazing how much the protocol has changed in the last few months – even zepplin has changed – it is now openzepplin. Openzepplin is the js library with the repository of all the audited Ethereum smart contracts.

Amy, a fellow RCer, had some fantastic suggestions about about the project. She noticed that unlike traditional notions of value, the prayer becomes more valuable the less unique it is. The more often a prayer is made, the more valuable it will be. Amy is working a fantastic Machine Learning project based on the conceptual art of Sol Lewitt.

Some of the basic questions about the smart contract/token construction were answered such as:

How is a prayer token “minted”? A user submits a prayer and then depending on how many people submit similar prayers (or whether or not this prayer already exists), the prayer will be minted as a token.

The value of a token increases the more people who make the same prayer.

Some questions are unanswered such as: What can people do with tokens?

Is the prayer going to be be an NFT ERC721 or a Token ERC20 or something new? I am thinking about an NFT with fractional ownership although this sounds complicated.  Perhaps it will share something with cryptokitties – where every prayer is unique but perhaps shares some ‘dna’ with other prayers.

In other news, I continued work on my haskell/threejs/shader virtual prayer wheel.  I have started using The Haskell School of Music  which is beautiful and poetic and a lovely way to learn  more Haskell.  I also started the fast.ai tutorials and broke an instance of the GPU on papersource – but they graciously gave me a new instance free.

I was inspired by Tenor, who gave a fantastic presentation on esoteric languages and games and learned a bunch of fantastic games at game night. Knowing my history, I did not go near the settlers of Catan.

 

 

 

Conscious Computation

When I came to RC it was with the intention of working on something called conscious computation – how to use computation to make us more conscious (not to affect our consciousness like some psyop or MKUltra project).  There is also the inverse question of what consciousness means for a computer and does a computer have an unconscious, but I wont be working on that right now. Today I made some strides in my road map, my dev environment and stack and I created an org on github : consciouscomputation.

My main project is a prayer blockchain.  My plan is to implement a prayer as a NFT (non-fungible token) – or perhaps extend the NFT and create a new type of ERC token.  Tomorrow I am having a brainstorming session to help hammer out some design and functional issues around the creation of a prayer token – and come up with a name. Some questions are:

  • What does it mean to own a prayer? Can we come up with some idea of communal ownership, or non-ownership?
  • How is a prayer created?  Do people submit prayers and then one is randomly selected to be instantiated? Do people vote on prayers? Do you buy a prayer (NO!)? Can you create a prayer with another prayer (e.g., create a liturgy)?  Can you create a prayer with an object (e.g., create a ritual)? We could probably do a bunch of these things but I will start with one.
  • What kinds of things can prayers do? Can they donate to a charity? Can they call a friend? Do they just print a mantra to the blockchain? It will probably be something simple to start but I would like this to be extensible enough so people can add different activations. How do we make the prayer extensible without having to program in solidity – how can it be as easy as integrating with a REST API – how can we just add I/O (or really just Output)
  • What kinds of things can people do with prayers? They can make a prayer. They can amplify a prayer, like I can take someone’s prayer and pray with that prayer. What does that mean for the prayer. It accumulates more value – but what does that value translate into.
  • How do you remove a prayer? How do you monitor bad or hurtful prayers – prayers that are not really prayers?
  • What kind of blockchain will this run on – the main ethereum blockchain or should I run a parallel blockchain or PoA ethereum chain. (This is not really contract related – but it relates to the next question)
  • How are prayers mined? Why is it important that the we know which prayers were actually made and that the blockchain validates this? Why do we need crypto? Why do we need a blockchain? I would say there it is important to have social proof and public proof of the prayers (wishes and desires) of human kind. That a 51% attack would create a  false consciousness  – where by we would be deluded as to the state of what people truly desire (fake news anyone).

As of today I plan on using the Ethereum blockchain, ReactJS,  the truffle contract framework, node for backend, mongo for caching and perhaps data not persisting to the blockchain, and  metamask for login, all to be deployed on AWS (or maybe heroku) – or maybe microservices with lambda. If I decide to run my own blockchain it will probably be an Ethereum PoA blockchain.  I am going to deploy with Terraform.

But I cannot forget the small side projects. I continued working on my Haskell learning project and the work is coalescing around a virtual prayer wheel. I will put these side projects in their own github repo under the conscious computation org. This one is called “prayertech”, and hopefully I can integrate some of the shader work I did a few days ago and make a 3D prayer wheel that generates mantras with Haskell. I learned that  Euterpea does not work with Haskell stack, so I am looking for a new music library or maybe I just wont use stack for this. As I continue to build out the prayer blockchain, I will probably take a hour or so a day and work on a toy project related to conscious computation but exploring a new topic – maybe a new language or library, or technology such as cryptography or machine learning, or to explore an idea.

Language Day: Haskell

Today I had some plans to rewrite my python trading bot in Rust. I don’t know Rust too well, but I have wanted to build something with it since I started going through the Stanford experimental OS class.   Instead,  I started learning Haskell. (And I installed neovim after seeing a fellow recurser use it during mob programming. And I turbo charged my .vimrc.)

The first activity of the day was pair programming, and I pair programmed with someone who, like me, did not have a lot of experience with Haskell.   So our pair programming was more like pair learning.

This was interesting in that it drew attention to my habits of learning new programming languages. My pair had different habits and together we approached learning Haskell in a way neither of us would do on our own.   This I found refreshing.

After that I picked up a Haskell book from the library upstairs and immediately felt like I was thrown back to a theory of computation class and context free grammars and all that jazz- are Haskell  languages just really grammars??  Maybe its all the pipes?

I do feel like Haskell is a well made language and I love how the language seems to build itself from its own ‘primitives’.   That said, I think it would take me a while to develop a real mastery.  My goal with Haskell is to finish up a toy program tomorrow and then move on to my main crypto project with a code review of truffle – and forget about the rust trading bot -even though it has been on my todoist for 8 months.

However, I am going to end this with a coda. Being at RC reminds me of Virginia Woolf and A Room of One’s Own :””In the first place, to have a room of her own, let alone a quiet room or a sound-proof room, was out of the question, unless her parents were exceptionally rich or very noble, even up to the beginning of the nineteenth century” (also true for NYC in the 21st century especially if you have some kids and a dog)

Right now, I feel being at RC is sort of having a room of my own, a space to sit down quietly and go down the rabbit holes with out the pressure of optimizing every moment for action or production.