Don G. Park

the sublime abiding

VMs to Runtimes 15 Dec 2014

A new level of compartmentalization is appearing in the form of embeddable language run-times.

Running untrusted scripts or script fragments is a use case for an irc bot. The driving feature being channel participants adding code to the bot by talking to the bot in the channel. Either giving a URL to a gist of code, or giving a small bit of script directly.

Published on 15 Dec 2014 at 07:01PM by Don, tags

Habit Shaping 16 Mar 2014

If it can be measured, it can be improved.

Everyday we are living our lives. Immediate goals such as getting dressed, or making it to work on time, have their own motivation. Goals beyond the here and now take focus and dedication. Setting up feedback loops help - information on our progress can be motivating when we fall behind. Giving the right suggestion at the right time can be particularly effective. Part of this project is to look at identifying teachable moments and guiding the subject to the shorter path to their goals. Software/algorithms have the potential to turn streams of data into personal, relevant suggestions.

Quantified Self

The inputs coming into the software should be diverse. Location is a personal favorite because of everything that can be deduced from time and location together. Purchases of all kinds are a very influential moment if one can be reached at the moment just before purchasing. This is especially true of purchasing food. Reminding one of the larger goals of healthy eating or staying within a budget can overcome an impulse purchase.

Pervasive Monitoring

Inputs should be as timely, automatic and unintrusive as possible. All the data generated by someone from a cellphone and laptop computer can be cataloged and classified. Ownership and privacy are a critical concern. The benefits will be compelling enough to cautiously proceed with such collection.

Many inputs will not be available automatically, so a simple user interface will be important to collect this data. Examples are general mood, what is being considered for a purchase, or the kind of experience one wants to create in the next half day.

Teachable Moment

The cell phone or bluetooth earpiece or headset (google glass) is the avenue here. The software needs an avenue to intentionally interrupt what you're doing because the time seems right for a relevant suggestion.

If at the end of the month, by inputting data and considering suggestions, it feels like things are going better than they were before, or maybe better than they ever have been, then the system will be working.

Published on 16 Mar 2014 at 06:59PM by Don, tags

dogetips 06 Feb 2014

The IRC channel I'm in most of the time has a karma system.

#pdxtech:someone> donpdonp++
#pdxtech:karmabot> donpdonp has 13 karma

With the rise of dogecoin, its a useful experimentation platform. There are way more coins and they cost next to nothing so its simple to experiment with micropayments in whole.

The giving of karma remains the same. A new bot talks to a dogecoind process to get the pool total and issue payments. There are a variety of systems to allocate payment. What I am going with is to calculate each user's karma percentage of the total, then use that percentage against a daily payout total.

Karma is payed out every night, also if a payment happens, that user's karma is cut in half. The goal is to provide some kick-back for a short amount of time, then reduce to zero until the next karma is earned.

update Mar-2014: the karma system is implemented in simplified form. a single doge is given out (recently raised to 5 doge) for each karma awarded, with a cap of 3 karmas per hour.

Published on 06 Feb 2014 at 06:23PM by Don, tags

2013 in review 03 Feb 2014

Jan/ Feb/Mar

LittleBird. Rails contracting.

Apr/ May / Jun/ Jul/ Aug/ Sep

CoinThink scripting.

Nov/ Dec


Published on 03 Feb 2014 at 05:56AM by Don, tags

a soup of logic blobs 02 Jan 2014

The zrobo experiment is teaching me about a soup of logic blobs and a broth message bus. The essential components to a blob is code and persistent storage. The code is javascript, executed in a v8 sandbox. The storage is provided by redis. (say something here about complexity and emergent behavior) The blobs that get used regularly are
  • location
    • where is <username>

      report the last location for username.

    • icecondor

      monitor locations of users and notice when they 'dwell' inside 300m for 20 minutes.

  • weather
    • temp <wunderground station name>

      display the last temperature reading for this station. also monitors the temp of a default portland station every 10 minutes and alerts when the temperature goes below freezing. also remember last-used station on a per-user basis to report the best station for that user with just 'temp'.

    • noaa <zone name>

      display any published alerts for this zone

  • cryptocoins
    • mtgox
    • coinbase
    • litecoin
    • dogecoin
    • coindesk

      coindesk pulls in the rss feed via this handy google rss to json service

    • btcwatch

      watches the mtgox price for swings larger than 5% inside 60 minutes (10 min poll)

  • miscellaneous
    • spacepeople

      query the spacepeople api every 10 minutes for changes to the list of people in space

    • github

      monitor the github status json url and publish any change notices

    • calagator

      search calagator for matching events

    • isgd

      monitor the conversation for long urls and post a shortened one via

Published on 02 Jan 2014 at 01:50AM by Don, tags

Plan: Membership 28 Nov 2013

The rise of bitcoin has been a wild ride, even after getting pushed from the mighty channel of coins into a slow moving river brooke of coins. I've spent much time pondering what I would do with a windfall. This is one plan.


You receive an unexpected, non-descript box in the mail.

In the box is a card and a set of instructions that enable membership in a special group of coders. Coders that work around the world and are backed by a foundation that allows for travel and project experimentation.

The card is a creditcard sized device with 'codename' on the front. An embedded NFC chip holds an encryption key. The instruction sheet has a URL that will load an Android app which can read the card and use the key.

One of the instruction steps is to order a debit card from the Google Wallet service. Deposits to your wallet from the foundation enable you to work from remote locations by paying for airfare, lodging, and food.

Published on 28 Nov 2013 at 10:23PM by Don, tags

Road Trip to the West 14 Nov 2013

I just got back from a 7 day road trip with Alexandra. We went to Golden, Colorado to visit her sister. It was my first time driving through Idaho, Utah, Wyoming, and Colorado. It was a super-fun drive to see all that beautiful scenery. The valleys, the mountains, the plains, and the parks were spectacular even though we were driving most of each day. It took just 2 or 3 hours to get over the cascades and once we were beyond Hood River - Boom! Sunshine for the entire trip. Bright, SAD-destroying sunshine. It was really glorious. The reverse happened when we returned to portland. 100% overcast as usual.

Published on 14 Nov 2013 at 05:07PM by Don, tags

Cointhink launched 19 Aug 2013

In the most official act yet for, a post was made to the bitcointalk forums. This is the culmination of 7 months of effort on this project. Cointhink was built to bring automation to bitcoin market customers. A variety of trading algorithms can be evaluated based on profitability using live market data (MtGox).

After given each script an initial purse and implementing simulated trades, the next logical step was a leaderboard. This adds an element of gamification to the scripts. The best-performing scripts show up at the top of the leaderboard. The usual BTC/USD arbitrage chart is still there, too.

Published on 19 Aug 2013 at 06:27PM by Don, tags

neuronirc script ecosystem 17 Apr 2013

In July 2011, I started an irc bot (donpdonp/neuronirc) because irc provides a simple yet powerful human-to-human and human-to-computer interface. It was built on the principle of loosely coupled, coordinated processes.

The foundation of the coordination is the redis pub/sub mechanism. Messages encoded in JSON are sent over pub/sub channels to interested listeners. There is redis support for nearly every language, therefore an extension to the bot can exist in nearly any language even though the core of the bot is in ruby.

This setup was working well but didn't go quite far enough. While new functionality or 'modules' was now possible in any language, the creation of and launching of new modules required significant administrator intervention. The users or participants in the channel could surely contribute their own useful code to the irc bot and I wanted a way to capture those contributions easily, without administrator intervention

In May of 2012, a change was committed - userspace v8. Thanks to the fantastic ruby module called therubyracer, it was simple to encapsulate a javascript interpreter inside the bot. It has enough sandboxing to make it safe to execute most any user script.

Users in an irc chatroom could now give code to the bot to extend its functionalities. I started to use it all the time because it was simple and fast to add a new command to the bot's inventory. Some script management commands were added to make it easier to list your scripts, delete one of them, and create a script from the contents of a url (usualy a github gist). Script complexity ranged from simple to complex.

Now that there are 20-something scripts inside the neuronbot (called zrobo on #pdxtech/freenode), I forget about scripts that I've wrote in the past. Many of them are periodically executing. That starts to feel like sci-fi. I can read and understand any single script, but the entire system is starting to grow beyond my ability to comprehend.

Scripts listen for messages and messages have types. Most often the type is a new line of text from an irc chatroom. That has a particular type. It was a huge leap forward when a new type of message started to be emitted once a minute. Thats a message indicating a change in time, which enables scripts to run periodically. This month scripts have the ability to emit their own messages. This lets complexity be distributed across multiple scripts. One script can be dedicated to monitoring a feed of some sort, such as the weather or a bitcoin marketplace. When conditions are right, a signal is emitted and another script can take action based on that.

Another area of exploration is to standardize the message format amongst different irc bots, and use an irc channel as a bus for messages between bots.

Published on 17 Apr 2013 at 04:49PM by Don, tags

Powered by Publify – Thème Frédéric de Villamil