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.

Shaders

I had some loose thoughts of what I was going to work on today: I could convert a python paper trading crypto bot into rust, work on turning tweets to music, read some crypto currency code, read some well formed libraries, read a book on DNS, or work on a selenium project and perhaps turn it into an ML project about auto generating css.

After suffering from food coma and social fatigue around 2pm I remembered someone mentioning shaders. Ahh. So I fired up trusty google and settled on this excellent tutorial using shadertoy.com (which I also love). I also book marked this site on shaders, which also looks interesting.

So what is a shader? It is a process that runs an algorithm on generating a pixel color on all pixels at ONCE in PARALLEL on the GPU.  Shaders take two variables called shader variables.  They are both vectors: the xy location of the pixel and the rgba value of the pixel. There are other variables that are passed from the CPU to the GPU like screen size and time and these are called uniforms. I sort of like to think of them as globals.   I imagine that this is how a quantum computer will talk to a classical computer.

My first goal was to develop an intuition around the pixel.   How does changing the r,b,g values affect the color on an intuitive level.

The gray scale – so how do we translate rgb into gray scale. As I was going through the tutorial I was hoping for a deeper intuition around the pixel and rgb.  The inspiration hit me when I realized that gray values are when the r,g,b all have the same value. So the question is how to turn rgb into the same value. This is is not so hard, we can average, average the highest and lowest, take the middle, the mode, interpolate and best fit, you get the idea – but really just pick a damn value and make it the same for the r,g,b.  If we want to green screening we are relating the r and b to g – (ie  g  > r+b )

My second goal was to develop an in intuition around periodicity and change.  For this I fired up R which I have not used since the great credit crises of 2008.    If we want to generate periodic effects we can use sine and cosine. But really, what is happening when we apply this to a pixel. Looking at the graphs in R gave me a better sense – but i feel like my intuition is still not there – I must draw this out manually or something.

Section two was about shaders with threejs which I have worked with  a ton – although  not with the shader code.

Section three was about lighting and while at this point I feel like I have a good understanding of what a shader is and how to work with uniforms.  The part on lighting touches upon normalization and more pixel intuition. I feel like I learned a bunch of neat tricks.

I’m not sure if I’ll do anything more with shaders- but maybe it would be nice to develop a deeper sense of graphics programming with shaders.

 

I’m at R/C For the Next 6 Weeks

This is me when I was dewy and 19 studying philosophy and computer science and a drink called the ‘zombie’ at the house of tiki (now out of business).  It was a time I felt very free to explore my intellectual interests.  I am about going to take the next 6 weeks and reboot and explore by working on a project that I have been thinking about for a long time. It combines two passions consciousness and crypto!  Beyond this project, my goal at R/C is to develop a framework and habits around building usable/reusable open source software. I am pretty good and spinning up code and building something that works, but not good at building open source code or code that can be used in collaboration.  I also want to upgrade my testing and debugging tools and habits.  My programming has become very idiosyncratic. And while perhaps that is good for an art project or a personal project, it is not good if you want to build and share tools and frameworks.

I intend to have this blog as a record of my work over the next 6 weeks but right now I am going to paste in my proposal for R/C which they said was one of the strangest projects that anyone has ever submitted.

Conscious Crypto

I have been consumed with the idea of conscious computing. This is somewhat related to the idea of creative computation, but in the case of conscious computation we use computation to make humans more aware. This can mean self-aware, aware of one another, of changes in the earth and so forth. What is the capacity for computation to change our consciousness? I think of entering different spaces and the change of consciousness that engenders, entering a cathedral or entering the space of play such as a game of chess or dance dance revolution.

I am interested in building an open source prayer smart contract/cryptocurrency project at RC. Users can create prayers to be executed at certain times or in certain places and/or can contribute to existing prayers, in a way similar to votive candles to honor the dead or saints.

I am applying for a 6 week residency, so I may not be able to accomplish all that I want in this time. But I would like to create the bones for a robust open source project, to create a smart contract protocol that could be used by other people who want to do something similar, to create an api so that people can extend this notion of prayer and instantiate it in different ways, and finally, to create two demo apps, one web based and one involving electronics and sensors (installation based).

The unclicked hashtag

For all the deepfakes and fake news – you got to love something like the glamorous grandmas of instagram.   In the old world of media we would never have this. And for all the arguments that a secret cabal still controls the world – that may be true – but at least there is an opportunity for everyone to have a meta view of reality and to become exposed to a wide range of views, opinions, and ways of being.

Social media can either keep you in your bubble, in your reality tunnel, or it can expose you to a wider world.  How do you find serendipity in social media? Its hard, people gravitate to those areas that they are interested in, and with people that share similar view points.  Our only hope is that people develop a healthy curiosity around difference and follow those hashtags unclicked.

Scales of Justice

Law and Execution

I could have called this law and order :).   This is a political issue – how do we enforce the law! This is not the philosophical/ethical issue – is versus ought – that is deriving normative statements from descriptive statements or vice versa.

Really this is about the distinction between  decision and action. With code, and particularly with smart contracts – this distinction no longer exists.

What does it mean when the law is automatically executed?  There is a lot of discussion about programmable money and what happens when money has state or action.  Likewise there is a renewed investigation into the origin of money. How did it begin, was it from barter, from a gift economy?  What is the role of debt? Etc

There should be a similar investigation into the nation of law. Where did law originate? We have laws prohibiting things  – in the ten commandments for example. We have also have laws requiring things – such as honoring one’s mother and father.  What did people do before a laws? How did people know how to act?

My view is that law and money are two results of the movement to written cultures, or even linguistic thinking. I cannot help but think about Lacan, and the role of living in the symbolic order and psychoanlysis. What is the symbolic order but living with a clear legal system. Is this really the only way to live?

I have an intuition that the sort of imaginal realm, that Jung investigates, is the pictoral representation of ancient humans that we see on cave walls.  The symbolic order or Lacan then arises with written language and perhaps the creation of the legal codex. Different forms of consciousness are created or perhaps different unconscious mental processes are made conscious via particular communication technology.

Now I am thinking about computational communication.  The ability to create worlds – and what sorts of unconscious mental process this makes conscious.

 

Camera sensor

Cameras as sensors

I am reading Program Earth  and I think I mentioned this before. But one of the things that I realized from reading the book that is perhaps obvious is that cameras are sensors and photographs are data they are not images.

What does this mean and it is this an important distinction?

A camera, both the original model based on emulsification and the contemporary version based on pixels are sensors. They are indirectly capturing the world, and only by creating additional machine (the dark room/photoshop) can we create and view the product of that sensor. This is different than a painter painting a picture which is a direct action.  A painter takes paint and puts it on a surface.   He does not create a machine or framework to create a picture.

When I take a picture I decide all sorts of meta details about the picture, what is included and excluded, what is the light or color space.  The details are provided as probably light.  When I paint a picture I create the details (in addition to the meta details).

Now what does this mean? I have no idea.  Most practically it means that cameras and photographs can be used in different ways since they are sensors. What ways are those I am not sure – but I suspect they can be used cybernetically since that is what sensors can do that non-sensors cannot.

Aesthetically, what does this mean? I do not know either.

But Photographs are not images they are sensors, however I still maintain leggings are pants.