I'm Alex Kearney, a PhD student studying Computer Science at the University of Alberta. I focus on Artificial Intelligence and Epistemology.





People who live in northern climes enjoy faking the sun. Some people get spray-tans. I made my plants a new home: a box full of sunshine.

Using household materials, I made a tiny greenhouse. Even during the winter, I can cultivate finicky plants and experiment with automated gardening.

The greenhouse has a small footprint---it can easily slot into the corner of a closet. When deconstructed, it is the size of a single rubbermaid container.

0. Materials

I started this project before I had proper tools, so I designed something that I could construct using only a dremel and a power drill.

I also wanted my project to be fairly simple to put together: I didn't want to have to get a ride to the local hardware store and get pieces pre-cut. As a result, my materials are all things that are common-place: either things that you probably have at home, or things that would be easy to find online. For my build, only needed to purchase the light, fan, and mylar---it was something I could throw together.

materials and parts:

  • Two rubbermaid stackable containers
  • One LED light suitable for plants
  • One standard PC fan w/ grates
  • Mylar sheets
  • Screw-in hooks + washers & nuts
  • Duct tape
  • 4 inch flange
  • Glue
  • One Four inch inline fan (optional)

1. Remove the bottom

So you have the tools and you have the materials. The first step is to turn the two separate stacked boxes into one mega-box. To do this, cut the bottom out of the top box so that the two boxes form one.

To do this, I glued the top box to the bottom box and used a dremel tool with a saw attachment to cut both the bottom of the box and the lid at the same time.

Cutting both at the same time ensures a good fit between the lid and the upper box, and makes it stack nicely.

2. Make it shine

You have a big box now. We're going to shine a light in the box to give the plant what it needs to survive. If we have a single source of light, we want it to be dispersed in the box as efficiently as possible to feed the plant. To disperse the light, I made the walls of the box reflective with mylar.

First, I spread glue on the interior of the box. With the surface of the box primed, I carefully cut and laid sheets of mylar that were sized to perfectly wrap around one layer of the box.

By applying mylar the inside of both boxes becomes a reflective chamber, efficiently making use of whatever lighting you choose.

3. Tape the lip

The lip of the bottom box might be a little rough around the mylar. Since you may want to lift the lid from the bottom box to get at your plants, you'll want to tidy it up---you don't want the mylar to tear from the sides when lifting the lid.

To clean up the edges and protect the reflective coating, I applied duct tape all around the edge of the box.

4. Add a fan

Plants need air circulation. I used a PC Fan for air intake. In most cases, this is all you'll need.

To get a good fit, hold the fan up to the box and trace a square outline of the fan. Inside the square, trace a circle with a diameter that equals the fan. To cut the circular hole, I used a dremel. In each corner of the square, drill out holes. Using screws, attach the fan to the holes drilled.

I chose to get protective plates to attach to either side of the fan. This adds a little extra protection and makes sure that anything your growing doesn't get in the fans, and that anything next to the box doesn't get caught.

Because I used a 4 inch inline fan for out-take, this wasn't strictly necessary. I knew I was going to probably want to build something bigger later, so I got myself a bigger fan.

5. Add hooks for your lighting (and cut a hole for power cables)

My light hangs from the top of the box to give my little plants some sunshine. I drilled four holes into the boxes lid and attached four hooks around the box. These hooks have screws so that you can attach nuts to the end of them. I placed washers between the screw and the nut on either side of the plastic to add some stability and prevent stress from tearing the plastic lid around the drilled holes.

Using a box cutter and the dremel, I made a little hole for the light's power cable to thread through. After attaching the light, you can pull the power cable through the hole and plug it in outside of the box.

Most lights come with clips and metal cables. I looped these through the hooks and clipped my light in. The draw-back of this is that the light is at a fixed height. For some plants, you need to adjust the height of the light to maintain a correct distance from the plant as it grows. Nothing I plan to grow is that sensitive, so a fixed height is fine for me.

6. Add an outtake fan (optional)

An outtake fan isn't really necessary for a small box. I had a feeling when I started this project that I would get more invested in indoor gardening, so I picked up an inline fan. I knew the fan would be useful for a bigger iteration of the project.

If you're not using an outtake fan, you can simply cut a hole in the top of the box. If you're feeling special, an extra grill to protect the hole would be a nice addition.

7. Enjoy your tiny greenhouse

You now have a fully functional indoor greenhouse. Slot it into a closet and wait for the fruits of your labour.


I recently had a chat with a couple of friends about style; it inspired me to take a project off the back-burner and turn it into code.

A couple of friends posed a question: is artistic style something that is innate, or cultivated? We spent a few hours digging into art we had created throughout adolescence and into adulthood, picking apart what remained consistent throughout. We sifted through sketchbooks thinking about what may have influenced changes.

To some degree, each of us kept track of inspiration. Katryna went as far as to keep collages and document each of them. I've always admired collages: there's something about collecting, organising, and drawing inspiration from unexpected places.

When I travel, I often take pictures of scenes I find interesting: details that catch my eye. A memorable example: to shelter from the rain in Vienna, I ducked into a chapel. The dreary light diffused through the windows to create a high-contrast baroque scene. Typically overwhelming colours and ornamentation became subdued. I collected the moment for later.

It's not just scenes that I collect. Occasionally I'll find a striking design element or detail and save it for later. A bar I was dining at during a layover in the Houston airport was tiled with mahjong pieces.

In spite of my aesthetic hoarding, I don't really have a method for collecting these images in a sensible way. They sit on my phone, my computer, and my desktop: apocalyptically poor organisation. I'm always on the hunt for inspiration, but don't have a place to enjoy the fruits of this collecting.

So I made an indie-pinboard.

aether is a small flask-app with hints of javascript that take a folder on your server and transform it into an infinite scroll of images that are slowly loaded as you cruise by. In my head, these scenes and images were being collected to make some wild reference art-book collage. By making a tiled album, I'm conveying the sense of purpose that I originally intended.

You can find the code in a repo here.

These images are displayed in a haphazard way: the only unifying trait is that each represents something that I liked. In the future I hope to add a more contentful display. I'm thinking that by employing some simple computer vision, I can partition the images by theme and sort them by feel.


1. Make a copy of the DHCP configuration file

Always make a copy of system files that you are editing. If your changes don't work the way you expect, you can always roll back to the safe, stable, starting state you began at. This allows you to try again without creating a number of inter-dependant changes.

sudo cp /etc/dhcpcd.conf /etc/dhcpcd.conf.save

2. Find the current IP address of your device

On unix devices (Macs, Raspberry pis, etc.) you can check your current IP with Hostname -I.

3. Find the IP address of your router and your Domain Name Server

To find the router's address:

ip r | grep default.

To find the Domain Name Server's address:

grep "nameserver" /etc/resolv.conf

These are typically the same address for a home network.

Why add /24? Check out this discussion on subnet masks

4. Edit the DHCP configuration file

At the end of the file add a block where each of the variables are replaced with the values we previously found:

interface wlan0
    static ip_address=<device_ip>/24
    static routers=<router_ip>
    static domain_name_servers=<domain_name_server_ip>

This sets a static IP for the wireless lan, or wlan0 interface on your device. If you want to also set the ethernet interface, add the exact same block again, but change wlan0 to eth0 . 5. Reboot!

sudo reboot

And you're done!


If it didn't work out, you can always revert your changes by running:

sudo cp /etc/dhcpcd.conf.save /etc/dhcpcd.conf


You've got a raspberry pi. Maybe it's a pi 2 or 3 that doesn't have a wifi chip. You bought a USB dongle and plugged it in, but you can't manage to get it to go. The driver that came with the dongle doesn't compile for raspberry pis, and nothing on the pi forums works.

Here's a quick guide for installing the RT8812 driver onto your pi.

1. Get the source kernel installer:

sudo wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source -O /usr/bin/rpi-source && sudo chmod +x /usr/bin/rpi-source && /usr/bin/rpi-source -q --tag-update

2. Install bc, a maths package:

sudo apt-get install bc

3. Install the kernel:

rpi-source

4. Fetch the driver by cloning it:

git clonehttps://github.com/Kongaloosh/rtl8821CU

note: this repo points to an 8821 driver. If you need another kind of driver, maybe start with a different repo. You should be able to change the configuration of this repo to suit your needs.

There are now three non-standard things you need to do in order for the driver to work with both your pi and the dongle you've purchased:

a. Figure out the dongle's Manufacturer and product ID.

b. Modify the makefile to specify the dongle the driver is for.

c. tweak the driver makefile to suit the pi

Finding wifi Dongle's manufacturer name and product ID:

Plug the wifi dongle into the pi and run lsusb to check out what's been plugged into your pi. For instance, when I run it, it looks something like this:

Bus 001 Device 004: ID 0bda:c811 Realtek Semiconductor Corp.
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

look at device 04; this is my wifi dongle. If you're having difficulty figuring out which device it is, unplug your dongle and run lsusb again. whichever device disappeared is your dongle! This is the dongle that I purchased.

Take note of the last four digits of the ID. The ID for my dongle is 0bda:c811, so in my case it's c811. I now know two things about my dongle: the manufacturer (Realtek Semiconductor Corp) and the product ID (c811).

Adding your dongle to the list of USB interfaces

Open os_dep/linux/usb_intf.c using your favourite editor (i.e., nano, vim)

# ifdef CONFIG_RTL8812A
    /*=== Realtek demoboard ===*/
    {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8812), .driver_info = RTL8812}, 
    {USB_DEVICE(USB_VENDER_ID_REALTEK, 0xc811), .driver_info = RTL8821},  # my driver!
    {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x881A), .driver_info = RTL8812},

You might be lucky. When you look in the file, you may find that there's already a line describing your dongle! If that's so, mosey on to the next step.

If like me, you're not so lucky, you now need to add the usb device you want the driver to interface with in this file. Each section will be prefaced with an ifdef CONFIG_RTLXXXXx. These define the interfaces for each section. They match the interface with the appropriate driver. In this case, I added the driver

Modify the makefile to suit your device

open up Make with your favourite editor and change two lines

CONFIG_PLATFORM_I386_PC = y
CONFIG_PLATFORM_ARM_RPI = n

so that they now read

CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ARM_RPI = y

This tells the driver to build for our raspberry pi.

Having modified `usb_intf.c and Make, we can continue business-as-usual compiling the driver.

5. Make sure we can run the installation script:

sudo chmod +x install.sh

6. Run the installation script:

./install.sh

7. Load our new module into the linux kernel:

sudo insmod 8812au.ko

sudo cp 8812au.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless

8. Generate a dependency description:

sudo depmod

You should now be done!!! You can verify this by running iwconfig, which should produce an output like so:

wlan0 IEEE 802.11AC  ESSID:"Kongaloosh"  Nickname:"<WIFI@REALTEK>"
      Mode:Managed  Frequency:5.765 GHz  Access Point: C4:04:15:10:86:75
      Bit Rate:434 Mb/s   Sensitivity:0/0
      Retry:off   RTS thr:off   Fragment thr:off
      Power Management:off
      Link Quality=84/100  Signal level=52/100  Noise level=0/100
      Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
      Tx excessive retries:0  Invalid misc:0   Missed beacon:0

which means your wireless lan is working! Congratulations.

If this didn't work...:

It says that I don't have the headers

You need to fetch the headers again. There are links below to forum discussions that cover the topic of headers and missing libraries.

I completed all the steps, but it just doesn't work

Check to make sure that you added your usb interface properly to usb_intf.c. Make sure that you ran things in the correct order. Check to see if you're getting error messages that you missed.

I'm sure the files are correct, it's just not working

If you've been following other tutorials, and made changes to your pi already, it may behoove you to make a clean install and start from scratch.

Other resources on the web:


2019 is a wrap Here's what I did last year.

This was a busy academic year. I co-organised a workshop. I took a big leap in my work and submitted some philosophically oriented work to RLDM [1,2], one of which was chosen for a spotlight talk. I received a fellowship from Borealis AI for 2018-2019. I contributed to a few other projects, including a twitterbot for combating online harassment and an exploration of my meta-learning method in a continual learning robotics setting. I ended up presenting.

Most importantly, this year I passed my candidacy exam. The only thing separating me from completing my PhD is my thesis.

I did some career development this year. As I chart out the end of grad-school, I've started queuing up internships to try a few roles out. Oddly, all of the work I've done is research-oriented. I've never had an industrial job before.

I managed to snag a ticket to Grace Hopper Conference. Last year I spent most of GHC managing the group of. While rewarding, I didn't really get to focus on experiencing the conference myself. This year, I got to meet a lot more people, and have a much better idea of how I could fit into different organisations.

I've put off internships mostly because of the interview process. Getting prepped for technical interviews and taking the time to actually sit them means re-directing a significant amount of energy away from the research and projects I'm working on. I can't do everything all the time. I finally bit the bullet this year and did some interviews. Although a small thing, it's a big milestone for me. It's not as scary as I made it out to be. It even paid off: I'm going to be working at Twitter for a few months in the new year and have more interviews queued up.

I worked on more diverse creative projects this year. I tackled projects in some new mediums and some old mediums. I used to be a very active potter in high-school and one of my greatest regrets is not keeping it up. Pottery is one of those meditative arts that takes all of your focus and attention: a good diversion during the crush of grad-school life. This year, Maren and Anna invited me to come join their pottery class. Seven years without practice, but I've still got it.

I tried new crafts including natural dying and embroidery and knitting socks. In the final hours of 2019, I even managed to help Kat spin up a knitting machine. Hopefully the skills from these humble projects will prove useful in 2020.

I got a lot of travelling done this year. There was hardly a month where I wasn't on the move. Some of my trips were big productions, years in the making. I went to Japan for three weeks after my candidacy exam. This was my first trip to Asia and the biggest trip since I went down the Danube in 2016.

Some of my trips were spontaneous. Dylan and Mikayla invited me sea-kayaking around the Johnston Strait, where we saw orcas and waded through the mist.

Most of my trips were tacked onto work-related trips where possible. The workshop in the Barbados had opportunities for me to go diving for the first time in four years. I went to RLDM and spent time meeting up with friends and enjoying the art galleries. I eeked out a chance to see the Tate modern for the first time in ten years during a layover. I presented some of my work in porto and had a chance to explore the city while visiting with a research group. I take the chance to explore where I can get it.

I really improved my photography this year---especially travel photography. I spent a lot more time carrying around a camera, and it shows. Even just slipping my little point-and-shoot in my pocket has provided a lot of opportunities. It helps that Dylan is patient and encouraging: sometimes even joining me to freeze late at night on a quest to get a good shot of the stars.

I picked up development on my indieblog. I started the year off trying to add more social protocols and interface better with federated sites like mastodon. After wrestling with web-specs and confirming, yes, I was implementing them as specified I gave up. I learned a lesson from this: working on more protocols is fun programmings sake. Adding webfingers and trying to doesn't make, nor does it really change the accessibility of my blog.

After learning this lesson, I spent the rest of the year making minor chages to encourage better usability. The bulk of this turned out to be small UI changes to make it more comfortable to post, but I did also add some smaller features.

  1. This year involved a lot travel, and I added a wysiwyg editor to quickly chart out my trips and resolve placenames to geo coordinates.

  2. I wanted to spend more time on academic posts, so I added mathjax for mathematical type-setting on my blog.

  3. I have an impression video is the future, so I added a dead-easy manual way to add videos to my site.

It's these small, quick changes that have proven to be the most useful, but it's had an unexpected consequence...

I didn't do a lot of programming this year and it's a shame. One of the greatest joys in (my) life is programming. There's a clear---and positive---reason why I've done less programming this year: my indieblog is stable. Much of the external programming projects were small incremental additions to my blog. There's not much more I feel like adding. I have all the bells and whistles I need to sustain myself for the time being (although there's always maintenance and refactoring to do). Most of the changes I would want to make would require lots of effort. I started this project midway through university. There's a lot of cruft, cowboy code, and naivete to clear out. I don't have the gumption to do it.

I think it's time for a new big project.


Recently, I was invited to give a talk at a philosophy workshop co-located with one of the conferences on interdisciplinary science in Porto. I spent close to two weeks in town. While I was mostly focused on work, I did have a chance to dip out and explore the city. Here's my thoughts after walking around town. Here's a list of some of the places that stood out:

My Favourite Places to Visit in Porto:

Serralves is a contemporary art museum and one of the best galleries I've ever visited. The curation is fantastic; it gives visitors enough context to understand what the artist and the gallery are trying to communicate, without hand-holding the guests. Even if you're not a fan of modern art, Serralves is worth visiting: there's something for everyone.

The gardens surrounding the gallery are lush, and marked with several installations. In the center of the gardens is a fantastic example of art deco architecture: a house with a fountain leading from a cliff up to the main house.

Centro Portugues de Fotografia isn't a place highlighted by travel guides. It's close to all the tourist hot-spots, but receives much less attention.

It's worth a visit.

The centre for photography is a free museum located in a repurposed prison dating back to 1582. They didn't change much. The inner courtyard is a small square with iron bars for windows. The entrance to many exhibits is through heavy doors and bars.

Not all of the exhibits were worth writing home about, but several were exceptional. locating the gallery in a historic jailhouse gives it quirky charm. On the whole, it's a well curated gem close to where most people will be anyways. What's to lose by stopping by?

The Waterfront in Porto is a great place to wander and explore the city. There's an abundance of colourful buildings and neat narrow streets to explore. If you're willing to step off the tourist track, good, cheap food is abundant.

There's a number of wine houses along the shore of the river: a great place to grab a drink while watching the sun set flanked by Porto's iconic bridges.

A great way to get to the waterfront is to walk behind the Center for Photography to a look-out point of the river. From there, you can take steps that carve into the side of the hill down narrow streets that are decorated with the traditional ceramic tiles found in porto and a smattering of street art.

My Favourite Cafes in Porto

Epoca Porto is a great place for brunch. I had indescribably great eggs on sodabread toast. What was in them? I don't know.

early is a little cafe that seems to be built into an old bank. If you look into the back room, there's an old vault door that's mirrored on the inside. Dylan and I grabbed a bunch of plates to share as nibblies. Their roast cauliflower is the best I've had.

My Favourite Restaurants in Porto

O Calcua is a nice little place close to the centre of town. A group of us went here after the conference I attended, and it was memorably tasty---served family style.

O Comercial is a treasure hidden away in Palacio da Bolsa: a historic stock exchange in the center of town. There's only a handful of tables, so it's a quiet little getaway.

The Overrated

Taylor's Port is the oldest port firm, but it's not worth the trek. If you're interested in boozy drinks, chances are you're probably familiar with winery tours, or have at some point wandered through a distillery. The joy of these tours is getting to see where your favourite libations are made: getting to walk through the process.

You'd think that port--a fortified wine--would be the best of both worlds. Unfortunately, it's little more than a walking tour through one of the historic storehouses. Save yourself the time and drink port at any number of other places in town.

Livraria Lello is a breathtakingly beautiful bookstore. If you are at all interested in visiting, make sure you're one of the first 20 people through the door at the beginning of the day. At any other point in time, it is unbearably packed. It can take two or three minutes to descend the stairs as you weave through all the visitors taking selfies.

While the craftsmanship is excellent, it's near impossible to enjoy when peering through the crowds. It hardly seems safe; I can't imagine how deadly a fire would be with the way they pack tourists in.


Here are collected messy notes from Short's theory of signs. Bits, pieces, and excerpts that I found interesting.

Notes from Short 2007

  • the key insight of these discussions is the need for generality. Generality means thinking in the general sense. Grey is not a single perceptual experience, but rather a collection of classes and instances.

  • Saussere: linguistic rules determine language and speech; study on the former depends on an a priori study of the latter. This inspired structuralism and actions of people, & thus the actions and history of society depend on an abstract representation which individuals are unaware of.

It was suggested that semiology could be carried over from language to all social behaviour and signs in the broadest sense. This is problematic, as it does not provide a satisfying description of how thought and language manage to be about the world.

Peirce adds an interpretant: the response a sign elicits. A sign, an object, and an interpretant are only taken to be one of three in relation to the other.

I guess an important thing to bring up is that signs---through the process of interpretation---give rise to something beyond the impression.

Each category has to justify itself by induction, giving it a limited and approximate validity (CP 1.301)

Really foreswearing the a priori necessity.

The three flaws of Peirce's semiotic of 1868:

  1. Thought lacks objects not constituted by thinking

  2. A thought-sign being interpreted in a subsequent sign suggests infinite semiosis

  3. If significance depends on interpretants--actual or potential--being signs, then we have no non-circular account of significance.

Peirce fixes infinite semiosis by creating indices.

Icon signification outside of resemblance without thought.

Icons derive their meaning from the feeling evoked by resemblance, thus, non-conceptual creatures can be sign interpreters.

What a sign signifies is from an a priori relation independent fo the sign actually being interpreted. Is then a type of possible interpretant grounded in interpretability.

To make this line of argumentation, two additions are required:

  1. Subjunctive conditionals and counter-factuals represent realities irreducible to actual occurrences.

Subjunctive conditional: A form of counter-factual. E.g., "Bob died yesterday. If he had died tomorrow, he would have been 98 years old."

  1. If an interpretation can be grounded, it must be with respect to a purpose, for a ground is something with respect to a grounding (final causation).

Final Causation: interpretation is purposeful, so interpretation must be relative to a possible action. Interpretability must be real and independent of it actually being actualised: reality of what was, is or could be: potentiality.

Grounding: in metaphysics one thing grounds another, if one thing accounts for the other.

The final problem is infinite semiosis:

1887 pragmatic maxim (w3: 226)

Consider what effects which might conceivably have practical bearings, we conceive of the object of our consideration to have, then our conception of these effects is the whole of our conception of the object.


  • Conception is a function of knowledge
  • Meaning is inexhaustible
  • Explication is never complete

It is only through purposeful action---even if only a potential action---that worlds and thoughts relate to a world beyond themselves.

More on belief and habit in (w3:247, cf 512)

A stone, a star, or a person is continuous spatio-temporally: undivided though divisible at any number of points... A church, a club, a crowd is never simply the members it has - pg 80

Clearly, when we build systems which perform classification and clustering, we are identifying generalities and continuities in some sense. There are an assortment of examples and kinds which through some form of training are identified. There is some continuity of perceptions which give rise to "cat" , or 'cluster 0'; however, many times they


There is a contradiction between teleology and behviourism and reductive theories. This can be found in mechanistic arguments.

We omit such a clause, as many scientists have thought that subsumption under law suffices to explain the phenomena non-telelogcially.

Fixation of Belief => How to Make Our Ideas Clear

Different minds may set out with the most antagonist views, but, the progress of investigation carries them by a force outside themselves [Peirce's Nominalism] to on and the same conclusion [his realism]... the opinion which is ultimately fated to be agreed upon.


Truth isn't clear when we have more boundaries: china isn't the border, or the people, or the govt... Static sausserean approaches are limited in these fuzzy ways. Behaviour, experience, agent => Peirce.

When we add the interpretant, we add context, interaction, something beyond original sensation.

Concept that it relates to in a meaningful way outside of stimulus.

Only reason that it works in supervised learning is that it is giving.


Today Matt and I went to the Ghibli museum. I opted to wake up and head over a bit ealier to take in Tokyo craft week. I made my way over and found a small cafe that specialized in roasting and pour-overs. Swing jazz in the background. The man was friendly and greeted community members walking by, starting their day. He ground coffee for both of us, letting me smell the aroma of each to learn a bit more. I sat and enjoyed my cup, charting my path for the day.

I ambled down a street lined with artesans. I found a yarn store that would wind balls for you based on the yardage you need. I bought a fuzzy frog coin-pouch. The whole street felt like sidney outside of victoria. It had the same pace of people strolling up and down the street starting their day. I followed along.

There was really only one particular place I wanted to visit, and it was shut. I moseyed up and down the street to make sure that I was in the right place. Just as I was about to leave and head to the museum, a trendy-looking woman came barreling down the street to open up the shop. We chatted about about ceramics, and I picked up a chawan in natural colours with green glass pooled at the bottom.

I had to book it over to the museum to make it in time for our slot. Angling for a snack, I made my way into a tea shop that specialized in darjeeling. I was welcomed in by the woman running the shop. By the time I figured out they had no snacks it was too late: I felt like I could walk away from the woman running the store after she was so welcoming. I left with a great cup of tea and huffed it across one of the most beautiful parks I've seen, but regrettably didn't get to enjoy.

I could see why they chose to have the ghibli museum in such a magical, natural park.

It was fascinating how the unmistakably ghibli style was rendered into reality. The familiar shapes and details found in ordinary materials and objects. Even the plants had the look, although effortlessly. None of it felt cultivated.

I was struck by how the crowd interacted with the space. Photos were prohibited, save for a small spot on the roof-top terrace. This meant people were paying attention.

The exhibits didn't have too much content, but what was there was all informative and impactful. A series of rooms set up to look like an animation studio outlined key aspects of the process. My favourite was the story-boarding. The room was plastered with reference images from all sorts of films. I'm not sure if they were originals from film-making, but they were certainly hand-drawn. It was actually a very emotional experience. There were drawings of character studies out in the open, pinned with thumbtacks to the wall. Anyone could accidentally touch them or damage them, but they were in well cared for.

On a table were three art-books. Inside them were plastered cut-outs as a study for one of the films. Pieces of origami paper were used as borders and backgrounds. Everything from horoscopes to trains to military uniforms---all neatly placed in reference books.

The room was filled with treasures. Small sculptures, trinkets, prototypes, reference books piled into a mound. Chaotic productivity. I was inspired, although maybe my inspiration comes from a cargo-cult mentality. It looks productive.

There was a lot of care put into the details. Even the smoke-detectors had caricatures painted around them. There was a cabinet downstairs you couldn't open. Unlike the doors above it, it wouldn't budge; however, if you bent down---to the height of a child---you could lift a flap and peek inside. There was a collection of plush characters and an Oscar. It's not flaunted, but left hidden. You have to be curious to find it.

I bet there's countless treasures I missed.

Akihabara Station → Ghibli Museum


I'm sitting in a small floral shop getting ready for the day. I managed to sleep in and get some rest. I actually came here for dinner yesterday evening after wandering around town. There was a bit of a line: around two hours. I asked the woman at the end of the line about the cafe, and she said she would come and visit every time she was in Tokyo.

If it's so good you'll wait in line for two hours to get into a place you frequent, I guess I'll wait, too.

I started the day by going back to Shinjuku and seeing what it was like with more people out. I found a little side-street with a sign pointing inwards: COFFEE. I obliged.

Hiding in a fashionable and bare building was a tiny place. I ordered a matcha latte that was revelatory. While sipping at a swing-out bar-stool, I noticed a stack of booklets tucked neatly into a holder at the table.

Tokyo Craft Week.

It turns out the place Matt and I were going to tomorrow had plenty of little artisans around. I was excited. After polishing off my latte, I headed to the national gardens for tea-time.

I took it slow, looking for the traditional tea house tucked away. I found it sprouting up next to some bushes, almost hidden. I practiced my best polite entry and was greeted by an elderly lady in traditional formalwear. She sat me on a bench along the wall and handed me a tiny, fluffy sweet in the shape of a cloud.

I slowly sipped on my tea, listening to the rain tap on the thin roof. I continued around the park, rain coming and going with no particular direction. I found a cherry tree that had fallen, with a poem written on a sign next to the decaying husk. I crouched down, pulled out my phone, and drew the characters---like I was finger-painting on the screen. I wanted to read the poem.

There was a greenhouse with many micro-climates and a prodigious collection of carnivorous plants.

I still had a few hours before Matt's reservation at the robot restaurant. I passed the time by wandering around shinjuku. I heard a loud chant in the distance. I walked around until I found a procession and caught up with them. I think they were chanting to the new emperor that ascended to the throne today. There were people lining the streets looking at them, many with a look of irritation or bemusement. The procession was quite earnest about whatever they were preaching.

I then made my way to a few to a few shrines in the area. They were completely deserted because of the drizzling rain. One of them had a Buddha holding a staff that looked just like the sculpture in the National Museum of Scotland's statuary. I found that reassuring.

Harajuku → Shibuya → Shinjuku


This morning, I opted to do something familar: to retread my steps and go back to the renoir for a cup of coffee.

Afterwards, I trekked out to harajuku. I found the famous street and ambled along. Even at 9 A.M. it was already heaving. The streets were bursting at the seams although much of the street was closed.

I have to admit, while some aspects are wild---e.g., rainbow toasties---the street was otherwise unremarkable.

I focused on brahms path and confirmed a suspicion: it is named after the composer. Trundling down brahms path, Being one street removed, really changed the feeling. Even the smell of lush plants growing on the sides of buildings was nice. I charted out the places I wanted to visit and let interest guide me. When I found something unusual or mundane, I let that impulse guide me.

I found so many neat streets---interesting nooks and crannies. I went to a little coffee shop next to shinjuku. It had low ceilings and beautiful heavy wooden seating. I ordered a slice of cake and a pourover.

The couple sitting next to me seemed pleasant. They commented on my choice of cake. We started to chit-chat and I found out that they were from California, from SanFrancisco. One of them did arts and life reviews and commentary.

We chatted about their career, and the sustainability of the arts community in a city being crowded out by tech. They asked me what I did, and I mentioned I was a grad-student studying AI. One of them worked at GoogleBrain. You can never escape. There is no holiday.


This morning, I opted to do something familar: to retread my steps and go back to the renoir for a cup of coffee.

Afterwards, I trekked out to harajuku. I found the famous street and ambled along. Even at 9 A.M. it was already heaving. The streets were bursting at the seams although much of the street was closed.

I have to admit, while some aspects are wild---e.g., rainbow toasties---the street was otherwise unremarkable.

I focused on brahms path and confirmed a suspicion: it is named after the composer. Trundling down brahms path, Being one street removed, really changed the feeling. Even the smell of lush plants growing on the sides of buildings was nice. I charted out the places I wanted to visit and let interest guide me. When I found something unusual or mundane, I let that impulse guide me.

I found so many neat streets---interesting nooks and crannies. I went to a little coffee shop next to shinjuku. It had low ceilings and beautiful heavy wooden seating. I ordered a slice of cake and a pourover.

The couple sitting next to me seemed pleasant. They commented on my choice of cake. We started to chit-chat and I found out that they were from California, from SanFrancisco. One of them did arts and life reviews and commentary.

We chatted about their career, and the sustainability of the arts community in a city being crowded out by tech. They asked me what I did, and I mentioned I was a grad-student studying AI. One of them worked at GoogleBrain. You can never escape. There is no holiday.


I went to another workshop at Fern's school of craft! Ash Alberg from the pembina fiber-shed taught to courses focused on using natural materials to dye and print on fabric.

The first course was on eco-printing. Unlike dying, eco-printing is creating a surface print of some source materials--typically plants--on a target material. It's like using a printing press, but involves a chemical transfer between plants and some protein or cellulose based material. For this course, we worked with cotton tea-towels and silk scarves, however, you can print on all sorts of materials, including wood, wool, and leather.

This post is a collection of my notes from the class.

Before You Print: Scouring and Mordanting

Before you can begin dying or printing, the material must be prepared. Oils and debris accumulate on fabrics. These oils can be on both new fabric as result of initial processing of the materials, or on second-hand materials from use. It's important to remove the oils, as they create a resist--- a section in the fabric where dyes and prints cannot transfer. We remove the oils by scouring the material.

Ash mentioned two detergents for scouring:

  1. Synthrapol (Cotton, Silk)
  2. Orvus Paste (wool)

For textiles, it's best to throw the material in the wash on the cycle you expect to use to clean the end-product.

Once the materials have been scoured, we pre-mordant them. A mordant is a substance used to cure and fix dye or stain to a textile. For cellulose-based materials we use sources of tannins as our pre-mordant; for protein-based materials we use metal-ion based mordants.

Tannins can be found in rhubarb leaves; however, rhubarb leaves are toxic. If you're extracting tannins from rhubarb, make sure your workspace is well ventilated!

To pre-mordant, we weigh an appropriate amount of mordant based on the weight of the material we are treating, place it in a pot with our material on low heat, and leave it for an hour or two.

Alum is one of the most common pre-mordant to use with protein-based materials, and it's safe to use. You should use 15-20% of the fibre weight in alum for mordant.

Printing With Plants

After your materials as scoured and mordanted, it's time to print!

At the workshop there were a few bouquets for us to dismember and scatter onto our projects. One thing to remember when eco-printing: just because a plant has a particular colour, doesn't mean that it's going to imprint in that particular colour.

Although eucalyptus is a pretty teal-green, it leaves behind a purple impression. Similarly, the rose petals and leaves left behind colours ranging from black-brown to green.

Once the pieces are in place, there's a number of different ways to leave an impression.

You have to wrap your bundles really tight. No, seriously. If you want your impression to come out, you need to apply substantial pressure. The way you do that is by tightening your bundle and tying it down. It's easy to think that you're bundle is tight enough. You can be oh-so wrong. One of the issues during the workshop was that few people got substantial impressions onto their work. A few people had barely any impression on their work.

This could have been for two reasons: 1) the bundles weren't left in the pots long enough due to time-constraints, or 2) the people's bundles weren't tight enough. Given everyone's bundles were on the stove for roughly the same amount of time, and some of us got striking impressions, my money is on 2).

After the bundles are snug, it's time to give them a bath. Bundles need to be simmered at a medium heat below boiling for a few hours. To give my prints a little extra kick, I brought them home and put them in a slow cooker over-night.

Never use anything to store or cook food that you use for dying and printing. It's important to keep your food-prep and dye-related tools separated. Just because it came from a plant, doesn't mean that it's healthy to consume.

I was happy with how my scarf turned out after a little extra time cooking, but I felt that I could improve it a little bit more. by adding a little bit more pressure to my bundle, and by giving it a little bit more time. Because eco-printing is transfer, not a dye, you can keep re-printing on the fabric to experiment.

Foraging Responsibly
  1. Wear appropriate gear and use appropriate tools to collect from plants.
  2. Know what poisonous plants look like
  3. If you don't know what it is, don't take it.
  4. Don't take plants from unhealthy patches
  5. Take no more than one-six of the plants
  6. Don't forage rare or at-risk plants
  7. Don't take flowers (including weeds) when they first start blooming. The bees need them more than you!

Online Suppliers: Maiwa: for natural dyes and fabric. Richter's Seeds: for seeds.

At: Eco Printing Workshop

From 2019-03-09T14:00 To 2019-03-09T17:00


I went to another workshop at Fern's school of craft! Ash Alberg from the pembina fiber-shed taught to courses focused on using natural materials to dye and print on fabric.

The first course was on eco-printing. Unlike dying, eco-printing is creating a surface print of some source materials--typically plants--on a target material. It's like using a printing press, but involves a chemical transfer between plants and some protein or cellulose based material. For this course, we worked with cotton tea-towels and silk scarves, however, you can print on all sorts of materials, including wood, wool, and leather.

This post is a collection of my notes from the class.

Before You Print: Scouring and Mordanting

Before you can begin dying or printing, the material must be prepared. Oils and debris accumulate on fabrics. These oils can be on both new fabric as result of initial processing of the materials, or on second-hand materials from use. It's important to remove the oils, as they create a resist--- a section in the fabric where dyes and prints cannot transfer. We remove the oils by scouring the material.

Ash mentioned two detergents for scouring:

  1. Synthrapol (Cotton, Silk)
  2. Orvus Paste (wool)

For textiles, it's best to throw the material in the wash on the cycle you expect to use to clean the end-product.

Once the materials have been scoured, we pre-mordant them. A mordant is a substance used to cure and fix dye or stain to a textile. For cellulose-based materials we use sources of tannins as our pre-mordant; for protein-based materials we use metal-ion based mordants.

Tannins can be found in rhubarb leaves; however, rhubarb leaves are toxic. If you're extracting tannins from rhubarb, make sure your workspace is well ventilated!

To pre-mordant, we weigh an appropriate amount of mordant based on the weight of the material we are treating, place it in a pot with our material on low heat, and leave it for an hour or two.

Alum is one of the most common pre-mordant to use with protein-based materials, and it's safe to use. You should use 15-20% of the fibre weight in alum for mordant.

Printing With Plants

After your materials as scoured and mordanted, it's time to print!

At the workshop there were a few bouquets for us to dismember and scatter onto our projects. One thing to remember when eco-printing: just because a plant has a particular colour, doesn't mean that it's going to imprint in that particular colour.

Although eucalyptus is a pretty teal-green, it leaves behind a purple impression. Similarly, the rose petals and leaves left behind colours ranging from black-brown to green.

Once the pieces are in place, there's a number of different ways to leave an impression.

You have to wrap your bundles really tight. No, seriously. If you want your impression to come out, you need to apply substantial pressure. The way you do that is by tightening your bundle and tying it down. It's easy to think that you're bundle is tight enough. You can be oh-so wrong. One of the issues during the workshop was that few people got substantial impressions onto their work. A few people had barely any impression on their work.

This could have been for two reasons: 1) the bundles weren't left in the pots long enough due to time-constraints, or 2) the people's bundles weren't tight enough. Given everyone's bundles were on the stove for roughly the same amount of time, and some of us got striking impressions, my money is on 2).

After the bundles are snug, it's time to give them a bath. Bundles need to be simmered at a medium heat below boiling for a few hours. To give my prints a little extra kick, I brought them home and put them in a slow cooker over-night.

Never use anything to store or cook food that you use for dying and printing. It's important to keep your food-prep and dye-related tools separated. Just because it came from a plant, doesn't mean that it's healthy to consume.

I was happy with how my scarf turned out after a little extra time cooking, but I felt that I could improve it a little bit more. by adding a little bit more pressure to my bundle, and by giving it a little bit more time. Because eco-printing is transfer, not a dye, you can keep re-printing on the fabric to experiment.

Foraging Responsibly
  1. Wear appropriate gear and use appropriate tools to collect from plants.
  2. Know what poisonous plants look like
  3. If you don't know what it is, don't take it.
  4. Don't take plants from unhealthy patches
  5. Take no more than one-six of the plants
  6. Don't forage rare or at-risk plants
  7. Don't take flowers (including weeds) when they first start blooming. The bees need them more than you!

Online Suppliers: Maiwa: for natural dyes and fabric. Richter's Seeds: for seeds.

At: Eco Printing Workshop

From 2019-03-09T14:00 To 2019-03-09T17:00


I'm going back through my dive logbook after a three year diving hiatus. The software I use to track my dives has become an ungodly mess of company acquisitions and poor software support. Turns out the company that made my dive-computer was bought out by scuba-pro.

To even get my hands on the software to open my dive-log file, I had to scour old forums looking for a hidden link that would take me to the SmartTrak site. That wasn't even enough alone, I had to engage in browser witchcraft to coerce the site to not redirect me to scuba-pro's main site. The file is nowhere else, at least by my searching. Interesting that no one liked SmartTrak enough to keep a mirror of it.

Of course, finding the software didn't solve my problems. oh no. The dates were incorrect on some of my dives. An example malady of poor software support: I could turn the background of dive profiles gradient olive green, but I could not edit basic dive info---e.g., the date and location of a dive. For the first-time in my life, I'm actually experiencing the effects of deprecation in software that I depend on. It's not like I can just give up the logs for dives I've done; It's important that I keep the data I collect when I'm diving to keep track of dive habits and share with dive-shops.

After going through old dev-forums and dive-forums, I found a converter which takes shameful SmartTrack files and converts them into a modified XML for use with SubSurface. At least I can coerce the file into being read as XML, rather than proprietary nonsense. More than that, not only does sub-surface allow me to edit the date of a dive in increments greater than 7, I can edit multiple dives at the same time.

It's the future.

I can't help but feel that this is a sort of digital vagrancy. SubSurface seems great now, but what about in 3 years? 10 years? I know there's a trend of web-based dive-logs, but I don't want to have to shuffle around, converting what has no business being anything but XML or a CSV to bunch of proprietary, uninterpretable file formats.

Having been burnt by SmartTrack, I'm looking for robust export functionality in my next electronic dive-log. Lucky for me, it seems sub-surface is able to export as CSVs. This seems like a clear candidate to make a stand and own my own data.

The whole thing is just screaming to be added to the blog. Time for #indieweb scuba logs. Then if something breaks, it's my own damn fault.


This is a fragment of my notes on Percian semiotics (so it's not particularly readable). Why semiotics? Meaning-making, or how we come to make sense of the world around us is an integral part of inquiry into the mind. While exceptionally fragmented, Peirce's introduction to semiotics is focused on finding from first-principles what the most basic components which make up thought and meaning are.

While a number of terms are over-loaded in cultural every-day usage, it's important to point out that terms like concept--the components of thoughts--do have a particular meaning.

From Perice's perspective, a concept or a sign is made of three indecomposable elements which Peirce calls firstness, secondness, and thirdness. These three components are the building blocks upon which everything we can think about are built. In short, firstness is feeling, secondness is resistance, and thirdness is experience.

I relate these in less anachronistic terms to:

  1. Sensation prior to awareness
  2. Relations and Properties
  3. Experiences and Generalities

It's not exactly intuitive, and my notes rely heavily on extended quotations to explain the concepts.

Firstness: Sensation Prior to Awareness

Before we have an abstraction which helps us understand the environment, there must be---absent of any categorization, modelling, or understanding---the information or sensation which is used to construct the abstraction. Firstness is "feeling, as distinct from objective perception, will, and thought" (CP 1.302)[1]. It is prior to perception and thought.

A pure nature, or quality, in itself wihtout parts or features, and without embodiment. (CP 1.303)

When you hear firstness, think the raw observations. The fundamental building block for everything that can be present to the mind is what is immediately sensed in a primary sense: the raw stream of information which we use to form perceptions of the environment. Not the sense of experiencing the feelings, but sensorimotor sensation prior to judgements such as feelings and awareness.

That is a phaneron [present to the mind] peculiar to metaphysical thought, not involved in the sensation itself, and therefor not in the quality of feeling, which is entirely contained or superseded , in the actual sensation. The Germans usually call these qualities feelings, feelings of pleasure or pain. To me this seems to be mere repetition of a tradition, never subjected to the test of observation. I can imagine a consciousness whose whole life, alike when wide awake and when drowsy or dreaming, should consist in nothing at all but a violet colour or a stink of rotten cabbage. it is purely a question of what I can imagine and not of what psychological laws permit. The fact that I can imagine this, shows that such a feeling is not in general, in the same sense in which the law of gravitation is general. For nobody can imagine that law to have any being of any kind if it were impossible that there should exist any two masses of matter, or if there were no such things as motion. A true general cannot have any being unless there is to be some prospect of its sometime having occasion to be embodied in a fact, which is itself not a law or anything like a law. A quality of feeling can be imagined without any occurrence, as it seems to me. Its mere may-being gets along with any realisation at all. (CP 1.304)

When Peirce says phaneron, he means what is present to the mind with no claims as to whether or not it is present in reality; he has drawn comparisons to what he means when he says phaneron and what some mean when they say idea (CP 1.284). He is saying that there's no reason there couldn't be primary elements of our conceptualisation of the world which exist independent of any other---pieces which could be composed to make all of our conceptualisation.

Peirce invites us to consider what we think the building blocks of concepts, or thought, might be if we begin with this firstness of sensation as the first piece:

Suppose I begin by inquiring of you, Reader, in what particulars a feeling of redness or of purple without beginning, end, or change...that should constitute the entire universe, would differ from a substance? I suppose you will tell me that no such thing could be alone in the universe because, firstly, it would require a mind to feel it, which would probably not be the feeling itself; secondly the colour...would consist of vibrations; thirdly, none of them could last forever without a flow of time; fourthly, each would have a quality, which would be a determination in several respects, the colour in hue, luminosity, chroma, and vividness...and fifthly, each would require a physical substratum altogether disparate to the feeling itself. (CP 1.305)

And he supposes we propose five pieces starting with Firstness as sensation:

  1. A mind which experiences the sensation
  2. The vibrations of the colour
  3. Time for the vibrations to vary over
  4. The qualities the colour could be measured over
  5. The physical realm which this all happens in

But I point out to you that these things are only known to us by extraneous experience; none of them are [seen in the colour]... Consequently, there can be no logical difficulty in supposing them to be absent, and for my part, I encounter not the slightest psychological difficulty in doing so. To suppose, for example, that there is a flow of time, or any degree of vividness, be it high or low, seems to me quite as uncalled for as to suppose that there is freedom of the press or a magnetic field. (CP 1.305)

Peirce then outlines how all of these additions are reducible. The flow of time and minds as perceivers of the sensation of red are all constraints which we put in place given additional understanding. On a personal level, none of them are required to experience sensations such as redness, or whistling.

It is clear that although these notions aren't necessary for the sensation which peirce treats as primary, we do use notions of time and understanding of the properties of things we sense to conceptualise and reason about the world.

Peirce acknowledges this, pointing out that while it's conceivable to just experience the world on a moment-to-moment sensory basis, that such an agent or system would be cognitively limited.

We can, it is true, see what a feeling in general is like; that, for example, this or that red is a feeling; and it is perfectly conceivable that a being should have that color for its entire consciousness, throughout a lapse of time, and therefore at every instant of time. But such a being could never know anything about its own consciousness. It I could not think anything that is expressible as a proposition. It could never know anything about its own consciousness. it could have no idea of such a thing. It would be confined to feeling that colour. (CP 1.310)

The point being made that which is first can only be an exact reproduction of itself. Simply having the same sensation, or subset of sensations, in the same mind at a different time is something different from the firstness itself. Or, if in a different mind, the identity would depend on the mind, violating the reproduction.

A collection of other snippets which are explanatory:

"a pure nature, or quality, in itself without parts, or features, or embodiment" (CP 1.303).

that which "involves no analysis, comparison, or any process whatsoever, nor consists in whole or in part of any act..." (CP 1.306)

"A state, which is in its entirety in every moment of time as long as it endures"

Secondness: Relations and Properties

While sensation is integral to how we conceive of our world, it's also clear that we do not understand our world using the raw, unprocessed sensation from the environment alone. We can see the influence things beyond sesnation in how we perceive our environment: there are blind spots in our vision which we do not perceive. Optical illusions can convince us perceptually that things are not as they truly are. There is some processing which enables us to understand our environment in terms of an abstraction.

Contemplate anything by itself---anything whatever that can be so contemplated. Attend to the whole and drop the parts out of attention altogether. On can approximate nearly enough to the accomplishment of that to see that the result of its perfect accomplishment would be that on quality of feeling. This quality of feeling would in itself, as so contemplated, have no parts. It would be unlike any other such quality of feeling. In itself, it would not even resemble any other; for resemblance has its being only in comparison. contemplate, however complex may be the object, it follows that there is nothing else in immediate consciousness. To be conscious is nothing else than to feel. (CP 1.317)

Pierce then makes the observation "what room, then, is there for secundans and tertians?" Why is there anything else other than instantaneous feeling as an irreducible building block of building symbols?

Understanding of the environment is not just based on the perceptions of the environment, but also the relationship between things. Redness has a character or has properties to it which we can understand in terms of relations between different moments or different independent sensations.

To explain this, we turn to actions and their consequences. Pierce explores this by discussing an agent's effort and the consequences of it.

An effort is not a feeling, nor anything priman or protoidal. There are feelings connected with it: they are the sum of consciousness during the effort. By it is conceivable that a man should have it in his power directly to summon up all those feelings, or any feelings. He could not, in any world, be endowed with the power of summoning up an effort to which there did not happen to be a resistance all ready to exist. (CP 1.321)

Here, I choose to read effort as action, or more generally as behaviour. The point he makes here is that the actions an agent takes in its environment are fundamentally separate from the raw feelings of the agent. They may influence the feelings which are felt during the instants during which the behaviour is being executed, but they are not the same as the behaviours being executed.

By struggle, I must explain that I mean mutual action between two things regardless of any sort of third or medium and in particular regardless of any law of action. (CP 1.325)

For example, an agent in its environment may bump into a wall. There is a relationship between the wall and the agent. The agent took an action, leading it to bump into the wall. Resistance in the environment caused a sensation of force against the agent's bump sensor.

The effort and resistance---the action and the sensation---are secondness. Using this example, we can describe a sense of 'other-ness'.

Secondness isn't limited to 'otherness'. Things which we wish to express about the world which are relations between two different moments are secondness. Peirce draws connections to causation and statistics as examples which related to seconds by drawing relations between two senses.

The idea of second is predominant in the ideas of causation and statical force. For cause and effect are two; and statical forces always occur between pairs. Constraint is a secondness. In the flow of time in the mind, the past appears to act directly upon the future, its effect being called memory, while the future only acts upon the past through the medium of thirds. Phenomena of this sort in the outward world shall be considered below. I sense and will , there are reactions of Secondness between the ego and the non-ego. (which non-ego may be an object of direct consciousness). In will, the events leading up to the act are internal, and we say that we are agents more than patients. In sense, the antecedent events are not within us; and besides, the object of which we form a perception (though not that which immediately acts upon the nerves) remains unaffected. Consequently, we say that we are dominant; for the real is that which insists upon forcing its way to recognition as something other than the mind's creation. (CP 1.325)

Relating these notions back to machine intelligence: methods which perform classification or regression are secondness. Focusing specifically on Reinforcement Learning methods, we could consider a policy evaluation method---a method which estimates either the value or some accumulation of sensation for a given state---to be a second. There is a relation drawn between an action and a response.

As an aside, Pierce makes an interesting observation: before English adopted the word two, we simply used other.

Thirdness: Experiences and Generalities

Finally, there must be something which connects the relation to the instances which are a party to it: the seconds to the firsts. This is what Peirce considers that which connects is the third.

An Example: Ambulance Sirens

It may seem unclear why we should need a third. We have moments which we sense, and we have the perception which relations between moments give rise to. What else could there be?

Typically, we categorize the pipeline as having two parts: 1) immediate sensation and 2) perception. Peirce breaks what we would usually consider perception into a third category: experience (CP 1.335). The reasoning behind this is that perception of events is not cognition of change.

If an ambulance is racing towards you and suddenly passes, due to the doppler effect the sound of the siren will lower as it passes you. You have a sensation of the whistle, which gives rise to the perception of the whistle, but the cognition and understanding of the change in tone---awareness of the changes and contrasts of awareness---is experience.

Thirdness as Generalities

By the third, I mean the medium or connecting bond between the absolute first and last. The beginning is first, the end second, the middle third. The end is second, the means third. The thread of life is a third; the fate that snips it, its second. A fork in the road is a third, it supposes three ways; a straight road, considered merely as a connection between two places is second, but so far as it implies passing through intermediate places it is third. Position is first, velocity or the relation of two successive positions second, acceleration or the relation of three successive positions third. But velocity in so far as it is continuous also involves a third. Continuity represents Thirdness almost to perfection. Every process comes under that head. Moderation is a kind of Thirdness. The positive degree of an adjective is first, the superlative second, the contemplative third. All exaggerated language, "supreme," "utter," "matchless," "root and branch," is the furniture of minds which think of seconds and forget thirds. Action is second, but conduct is third. Law as an active force is second, but order and legislation are third. Sympathy, flesh and blood, that by which I feel my neighbour's feelings, is third. (CP 1.337)

This description is a touch melodramatic. Extending on the metaphor of a road: a place is a first because it is simply a location in relation to nothing else. When we make a road connecting two places---two firsts---we create a second by drawing a relation between the two firsts.

If we reflect back on the previous robot example, an analogy can be made between the the immediate sensation and the value estimate. It has some estimation which predicts that it will bump into the wall. The estimate for that state is a second, the estimator for all given states is third.

It is impossible to resolve everything in our thoughts into those two elements. We may say that the bulk of what is actually done consists of Secondness--or better, Secondness is the predominant character of what has been done. The immediate present, could we seize it , would have no character but its Firstness. Not that I mean to say immediate consciousness...would would be Firstness, but the quality of what we are immediately conscious of... is Firstness. (CP 1.343)

When we categorize what we think about, it's clear that a lot of what our thoughts consist of can fit into firstness and secondness. Moments are clearly influencing our thoughts on a moment to moment basis (Firstness). These sensations give rise to perception and an understanding of relations between the moments, including how our behaviour influences sensation on a moment-to-moment basis (Secondness).

In general, we may say that meanings are inexhaustible. We are too apt to think that what one means to do and the meaning of a word are quite unrelated meanings of the word 'meaning', or that they are only connected by both referencing some operation of the mind... (CP 1.343)

This is kind of a classic pragmatic point to make: that the meaning of some word is not unrelated to behaviour. The use of a concept and the consequences of a behaviour are directly responsible for constructing meaning.

In tuth the only difference is that when a person means to do anything he is in some state in consequence of which the brute reactions between things will be moulded into conformity to form to which the man's mind itself moulded, while the meaning of a word really lies in the way in which it might, in a proper position in a proposition believed, tend to mould the conduct of a person into conformity to that to which it is itself moulded. (CP 1.343)

This is drawing a comparison demonstrating how meaning in a linguistic sense is related to meaning in an active behavioural sense: we judge meaning in both cases based on their consequences.

Not only will meaning always, more or less, in the long run, mould reactions itself, but it is only in doing so that its own being consists. For this reason, I call this element of the phenomenon or object of thought the element of Thirdness. It is that which is what it is by imparting a quality to the reactions in the future. (CP 1.343)

Primacy of Firstness, Secondness, and Thirdness

it is a priori impossible that there should be an indecomposable element which is what it is relatively to a second, a third and a fourth, The obvious reason is that which combines two will by repetition combine any number. Nothing could be simpler; nothing in philosophy is more important. We find then a apriori that there are three categories of undecomposable elements to be expected in the phaneron: those which are simply positive totals, those which involve dependence but not combination, those which involve combination. Now let us turn to the phaneron and see what we find in fact. (CP 1.298-299)

Thinking it Through: Examples Of Firsts, Seconds, and Thirds

  • Position: First
  • Velocity: Second
  • Acceleration: Third
  • Observations from the environment: First
  • A General Value Function predicting an observation for some behaviour policy over some time-scale: Second
  • A model: Third
  • A Sensor reading: First
  • An exponential moving average of sensor readings: Second
  • A model of the process which the sensor records: Third

[1] I use Percian citations which are standard for citing Peirce's works. Here CP m.n stands for Collected Papers volume m paragraph n.

Thanks to Oliver Oxton for the helpful chats.


I recently made a hat for Matt. I used some super-soft alpaca yarn that I picked up from an industrial-revolution era wool spinner located in Alberta. I managed to find a colour which was close to the alpaca logo they use on their site to keep it on-brand.

The pattern I ended up using was a free japanese pattern. I wasn't quite sure how to read the ribbing section, so I used a slip-stick to give it a slightly elongated stitch to match the faux cabling.


I had a chance to walk around Washington for a few hours with Johannes.

Lincoln Memorial

We first visited the Lincoln Memorial, which was shockingly smaller than I had expected. You grow up seeing all these monuments in art and movies; when you finally see the real thing, it's a bit weird.

It's this uncanny valley that you wander into. You're so familiar with the monument as media short-hand for some idea, that the real monuments seem somehow incomplete. There's these grand larger-than-life expectations of iconic monuments, and then there's the reality of wandering up to the monument which looks largely the same as any other statue.

There's several minor monuments around the perimeter of the mall. This one was one of my favorites, because it's been transformed into a roundabout.

When I die, I want my legacy to be immortalized into a neo-classical traffic circle.

MLK Memorial

The MLK memorial was strange. It's much newer than I expected---completed in 2011. To get to the plaza, you emerge from between a mountain split in half into a plaza. The plaza is wide open space looking over a lake with what looks like the peak of the mountain hurled into the center.

When you approach the slab from the other side you're greeted with MLK's likeness looking off into the corner. The concept is neat. The statue itself seems a bit stern.

"Out of the mountain of despair, a stone of hope."

Vietnam War Memorial

The Vietnam War Memorial is probably one of the most influential monuments on popular culture---It seems to be referenced the most. It's relevance makes sense: it's the most recent war monument. Many people have immediate family who fought in the war.

It's simply a chevron of names cut into the ground. What was truly interesting was the collection of volunteers manning the monument.

These volunteers seemed to predominantly be Vietnam vets. They stood around the monument, helping visitors find the names of loved-ones. They even had cards and a step-stool to take rubbings of the monument, allowing people to take the name home with them.

Jefferson Memorial

The Thomas Jefferson Memorial is almost feels more impressive than the Lincoln memorial.

The statue was placed in the centre of a circular room. Inscribed on the walls were a selection Jefferson's quotes.

Interestingly, there was this quote on constitutional inerrancy which I thought was strikingly poignant, especially with the discussion of restricting gun ownership in the wake of numerous mass shootings. I guess certain legislation gets enshrined as being beyond criticism, even against the intent of those who influenced it.

Tidal Pool

Johannes and I continued around the park, wandering around before grabbing a bite. As the morning shifted into the afternoon, the mall came alive with numerous charity events and political marches.

White House

Before heading to lunch, we made an obligatory visit to the White House. Again, it was much smaller than I imagined it would be. I'm fairly certain it's smaller than the albertan provincial legislative buildings.

Examining the roof-line, there is a hint of grey concrete which seems out of place with the neo-classical mansion. There's what looks like a reinforced bunker on the top of the building. On closer inspection, there was someone standing on the roof with some kind of gun, surveying the surroundings.

People-watching in front of the White House is fascinating. A number of protestors were lining the pavement where tourists were taking photos. A man was pacing back and forth across the length of the White House Lawn with a sign imploring republicans to stand up to Trump.

When I was crossing the border, the homeland security officer gave me recommendations for Washington. One of them was Old Ebbit Grill.

This place is my aesthetic. It has a nice, quiet warmth to it. Wood paneling and dim lighting; hunter green velvet couches; walls mounted with trophies rumored to be shot by Teddy Roosevelt.

After lunch we wandered around town, spending the last couple of hours taking in the streets on the other side of the mall and lamenting the fact we didn't get to visit any of the Smithsonian museums during our trip.


Sights from DLLS & RLSS 2018 in Toronto.

This year I went to DLSS and RLSS in Toronto. The introductory talks were probably the best intro to neural nets talks I'd seen: the talks were tight and intuitive without having to water down the technical details.

The number of people cramming in for the summer school was surprising. It's really great to see how interest in Reinforcement Learning has picked up in recent years.

Being back in Toronto for the summer means that I had I had the chance to wander around kensington market again. This time, sans persistent summer flu. With a few fellow students in tow, Anna and I hit up Yarns Untangled, the first LYS I ever visited. We picked up needles and yarn to teach some people how to knit while sharing a pitcher of beer on the patio across the street.

Against my better judgement, I picked up a few indie-dyed skeins of yarn. One from lichen and lace---a dyer on the east coast---and one from fiesty fibers---a local Torontonian who happened to be having a trunk sale while we were in town.

Who knows what the skeins will end up being. I suppose I can always teach myself how to knit socks.

Having the chance to hit up local yarn stores with active communities reminds me of what I'm missing out on in Edmonton. YU felt like a community hub. People would would gather on their couches, chatting with each other while they worked on whatever project they were carrying with them.

While I was waiting for a few people I sat myself down next two a couple of women and felt right at home chatting with them about how they originally started knitting and what they were currently working on. It's really refreshing to have these spaces which people can come into and join without any introduction: it's really healthy to have these communities where people can just feel at home.

I have no regrets about wandering into Little Pebbles to have Japanese dessert before meeting with some of the other students for brunch. I had this little matcha tiramisu which was carefully constructed in this little box which reminded me of sake drinking vessels. Interestingly, instead of a brandy base, at the bottom of the tiramisu was a bit of red bean paste to sweeten and balance out the earthy matcha flavours.

The whole place was bright and funky without being overwhelmingly ornate. It was an unusual and pleasant surprise to see the little signs up on the tables which politely notified people that they had to put their electronics away during peak hours--an attempt to foster community and conversation.

When wandering around the city I found a whole bunch of cute ceramics, which make me regret not having kept up with pottery after highschool. Maybe I'll need to eventually fix that and take a course at Edmonton's city arts centre.

The closest coffee shop to where I was staying was Hopper. It was a cute little place with great snacks and even better espresso. In spite of being fairly spartan in terms of quantity of furniture, what they had was really funky---i.e., campbell's soup can tables.

I finally managed to try goldstruck--a place I wanted to visit while I was interning in Toronto, but never quite had the chance to. They definitely themed the place appropriately. Walking down the stairs into the sub-terrainian coffeeshop, you're greeted by the warm glow of industrial lighting and mining-inspired decor. Even the bathroom has these massive wooden barn-doors which slide open.

Of course, my favourite little cafe was sorry: a little gem that's tucked away in a corner, unapologetically making great espresso and pastries.


Sights from DLLS & RLSS 2018 in Toronto.

This year I went to DLSS and RLSS in Toronto. The introductory talks were probably the best intro to neural nets talks I'd seen: the talks were tight and intuitive without having to water down the technical details.

The number of people cramming in for the summer school was surprising. It's really great to see how interest in Reinforcement Learning has picked up in recent years.

Being back in Toronto for the summer means that I had I had the chance to wander around kensington market again. This time, sans persistent summer flu. With a few fellow students in tow, Anna and I hit up Yarns Untangled, the first LYS I ever visited. We picked up needles and yarn to teach some people how to knit while sharing a pitcher of beer on the patio across the street.

Against my better judgement, I picked up a few indie-dyed skeins of yarn. One from lichen and lace---a dyer on the east coast---and one from fiesty fibers---a local Torontonian who happened to be having a trunk sale while we were in town.

Who knows what the skeins will end up being. I suppose I can always teach myself how to knit socks.

Having the chance to hit up local yarn stores with active communities reminds me of what I'm missing out on in Edmonton. YU felt like a community hub. People would would gather on their couches, chatting with each other while they worked on whatever project they were carrying with them.

While I was waiting for a few people I sat myself down next two a couple of women and felt right at home chatting with them about how they originally started knitting and what they were currently working on. It's really refreshing to have these spaces which people can come into and join without any introduction: it's really healthy to have these communities where people can just feel at home.

I have no regrets about wandering into Little Pebbles to have Japanese dessert before meeting with some of the other students for brunch. I had this little matcha tiramisu which was carefully constructed in this little box which reminded me of sake drinking vessels. Interestingly, instead of a brandy base, at the bottom of the tiramisu was a bit of red bean paste to sweeten and balance out the earthy matcha flavours.

The whole place was bright and funky without being overwhelmingly ornate. It was an unusual and pleasant surprise to see the little signs up on the tables which politely notified people that they had to put their electronics away during peak hours--an attempt to foster community and conversation.

When wandering around the city I found a whole bunch of cute ceramics, which make me regret not having kept up with pottery after highschool. Maybe I'll need to eventually fix that and take a course at Edmonton's city arts centre.

The closest coffee shop to where I was staying was Hopper. It was a cute little place with great snacks and even better espresso. In spite of being fairly spartan in terms of quantity of furniture, what they had was really funky---i.e., campbell's soup can tables.

I finally managed to try goldstruck--a place I wanted to visit while I was interning in Toronto, but never quite had the chance to. They definitely themed the place appropriately. Walking down the stairs into the sub-terrainian coffeeshop, you're greeted by the warm glow of industrial lighting and mining-inspired decor. Even the bathroom has these massive wooden barn-doors which slide open.

Of course, my favourite little cafe was sorry: a little gem that's tucked away in a corner, unapologetically making great espresso and pastries.


Today marks two years of #indieweb for me. I've been reflecting on my experience joining the community and my plans for the future.

hello, world.

On this day two years ago, I wrote my first post for my site.

At the time, my site was far more simple---I had the ability to post and add tags and was working my way to syndicating on other sites, adding geolocation, and adding micropub endpoints.

The indieweb has been a lot of things for me: a neat hobby, a place for me to preserve the things that matter to me, a way of consolidating the ever-expanding number of social-media services I use, and a reason for me to meet up with interesting people in the local community.

Indieweb Then

Back when I started this project, I wrote a post after two-ish months of indieweb going over my experience trying to integrate into the community and build something that worked for me from scratch. One of the greatest challenges I remember was trying to figure out how web-systems worked.

Up until this point, the entirety of my focus outside of university was on machine intelligence and working on adaptive robotics. This was an entirely new space with a completely different set of required skills. While I was trying to decide how to structure my posts to maximise longevity, I was also picking up how people design systems which rely on requests from other services, how to structure html, how to setup my own server, how to make my site secure, and how to beat style sheets into submission.

Apparently I was a late-bloomer; most people seemed to have done web-dev by that point in their computer science career. It felt like a lot at the time.

I originally picked up bear's example flask app, and it's still largely the skeleton around which my site is built.

Lessons learned from a solitary summer

I started this project because I was itching for a long-term project, and enough people on the University of Edinburgh's IRC channel suggested I do it. It had the appeal of being completely different from the work that I usually do.

While learning all of the requisite skills was challenging, the real struggle was piecing all the components together to hold a mental image of what an indiewebsite should be in my head. I spent a great deal of time trawling through the wiki and absorbing all of the ideas on disparate pages. At the time, there were many pages which would

all have slightly different variations of the same. Although I can't find it now, I remember a page which outlined 'levels' of indiewebness---a hierarchy which you could climb by implementing features.

So I started implementing these features.

I probably shouldn't have. In retrospect, you were kind of advised not to. #ux and #ui first---that's the key suggestion.

I ran head-on into features.

Things like micro-formats, micropub end-points, and POSSE are immediately helpful. Micro-formats help you think about how to structure your posts and make them consumable. <icropub endpoints enable you to use existing tools, rather than designing your own posting UI and framework. POSSE posting to other sites enables what you've built to be a hub which you control. These are concrete things that gave me most of the functionality I use today.

Not all of the features I added were helpful. in-reply-to functionality has rarely been used by people to interact with me. The one occasion where new people have sent me reply-tos was a discussion that started on IRC, if I remember correctly. That's not entirely surprising, as I only know a handful of indieweb people in real life. Most people who look at posts here are people who are using facebook or twitter.

These sorts of features---additions to my site which were indieweb-ish, but not exactly useful to me---led to feature fatigue. I refined my site added new features, but many of these new additions never really got used. The development of social features meant to facilitate interaction ended up feeling purposeless; I was an island of indieweb on my own in canada.

It can be kind-of isolating trying to join the indieweb outside of the major indie-hubs. For a lot of the federation-like features to be viable, you need a critical mass of people who not only have an interest of indie sites, but also are in your personal social group.

I wanted to have this social group, but it just wasn't the reality of my situation at the time. I was in Edmonton when I started the project---a city which I'm only just now starting a homebrew website club for. As a result, the entirety of my community was based off of IRC. The IRC folks were willing to help me out, even with really rudimentary problems. I even remotely attended another city's homebrew website club. However, I found these distant interactions weren't a perfect replacement for local community.

Lessons learned from focusing on design

Back in Edinburgh, I had a local group of friends whom I met up with on a weekly basis for HWC. Together, we all worked on our own projects in a local pub. I found this local, unstructured meetup gave me the time, space, and motivation to keep pressing on things that mattered to me---to keep working on indieprojects even when under pressure from external commitments.

With a fully functional site up and running, I focused on my own needs and developed features to support how I wanted to use my site. In hind-sight, that's probably the most indie thing I could've done, and how I should've started my indieweb adventure.

One of the motivating features for joining the indieweb was the ability to keep and curate the content I create over time. A substantial portion of this to me is images. For the site to be a long-term success, I needed a way to automatically upload photos from a variety of devices in a painless way, I needed to be able to store those photos both at a low-resolution with my blog-posts and in permanent storage, I needed to self-host my images, and I needed to be able to automatically generate collections of images for presentation. The key to this was finding a way to do this in a way that would be effortless for me to use. I finally settled on writing an extension to achieve this.

This was a big step for me, as it created one major strength on my site that was absent from any service that I used. My site was now not only a tool for sharing photos, but preserving and curating them in the long run.

Along the way I made a conscious effort to start thinking about the visual design of the site---something that still needs a lot of work. I created more extensions which added small features to the site; features which were almost trivial. By focusing on things like resolving geo-coordinates to place-names and adding links to hashtags in text I made the site slightly more usable for me.

In doing this, I discovered that if I my system wasn't simpler than existing social-media sites, I wouldn't use it. If I was worried about it breaking, I was less likely to post things. If I wasn't sure if it would look nice on sites I syndicated to, I would hesitate. By focusing on myself, I built a better site and a site I'm more inclined to use.

Some of the most important additions---additions which encouraged me to use my site more---were features which no one would see. Changes to the posting interface had the most dramatic impact on the usability of my site. Simplifying syndication, adding tag recommendation systems, refining the layout: these were the things that I should have focused on from the start.

Results in the long-run

Syndication is something I still internally struggle with. I want to be able to ignore the fact that my posts are mostly being consumed on other sites---I want to forget that people are going to be largely seeing things on twitter and facebook. At the same time, I want to feel less reluctant posting throw-away comments and responses on twitter. Finding the balance between digital hoarding and wasteful posting has been difficult for me.

I've mostly decided that this is a struggle to perfect two things that are necessarily working against each other: to have the best formatted post on one platform, you need to have. Sometimes it's easier to write a one-off response to a chain on twitter; those posts are often things I don't really want to keep.

Where to go from here

Now that I'm back in Edmonton, I'm reflecting back on my past two years. I'm analysing my own mistakes in trying to join the indieweb so that I can support people interested in joining in Edmonton.

Right now, I've started our club by helping people get static university pages up. All students have space allocated to them to have their own personal web-page. By helping them learn how to format and mark-up their own little resume page, I hope to both give people the skills to work on other web-projects and help get them inspired to make their own indieweb blogs in the future.

Taking lessons from my own mistakes, I'll try to guide people with the principles, but encourage them to focus on things which feel right.

Personally, I'm going to continue my own work by focusing on testing and continuing to refine the design of my site. My current priority is continuing to refine my posting interface. Specifically, I'm interested in creating preview systems and systems which attempt to depict how a post will look when syndicated. After stabilizing on something that feels right to use, I'll go back and tackle more individual indieweb features---features which add to my experience without the need of people immediately interacting with my site. I've been toying with the idea of an auto-checkin tracker and a map which depicts all the places I've travelled. I'm also thinking of re-visiting features like RSVPing to see if I can find a nice way of tracking events that I'm attending.


I talk about albums, photo management, and the sleek way I now post collections of photos.

I'm going away soon; I'll be cruising down the danube for a couple of weeks. Before-hand I wanted to find a way to improve the way I post my photos. I'm notoriously bad at taking care of my photos: I often let them rot on my hard-drive, never to be seen again. To rectify this, last weekend I updated the way I upload images, the way my editor allows me to post images, and the way I convert images in .md files into .html posts.

Before this change I only ever associated one image with a post. While it was technically possible via collections, it was a pain. Having a separate photo for each post is really inconvenient. As a stop-gap I've been using Own Your Gram as a means of posting photos. It's been a nice way to casually post photos from my phone. However, with this setup it's still challenging to manage large collections of photos.

I needed the system to:

  1. be able to upload a large number of photos conveniently
  2. be able to present recently uploaded photos so that
  3. be able to turn a human-readable representation of images into nicely formatted HTML
  4. be flexible in how the photos are presented

Now, it's easy for me to upload photos en-masse, embed them in associated posts, and make them look pretty.

One of the trickier aspects of this is the fourth point: I want adding photos to posts and albums to be simple enough that I'll actually use it. Adding the .html to a post isn't really an option. It's messy, easy to make mistakes, and will prevent any changes to my photo styling from being backwards compatible. Additionally, I want the simple input I add to be expressive enough that I can arrange photos however I want.

To do all this I wrote an extension for the markdown library that I'm using which describes how I can define a collection of photos. Similar to code fencing, a collection of photos surrounded by @ symbols is defined as a collection of images. Given I know anything within the @ will be parsed as an image, I drop the need for a preceding !.

When I parse this to html, I add in the bootstrap classes which give the formatting for my site and calculate what their size should be to evenly space them. To have a traditional album, I can easily just add multiple rows of these to space and collect them as necessary. To interleave text, I simply treat it like any fenced portion of markdown and text around the albums.

As I go along I may add more parameters which allow me to override the image formatting. For instance, the ability to specify a specific width would be a good way to add emphasis to a particular photo while keeping it together with my current pictures.

For now this is a low-stress way to keep posting photos.


I've been running some scripts on west-grid recently, so I've collated the information I've gathered from reading through the guides.

Because I've been running parameter sweeps with multiple algorithms over a nice data-set, I've had to change the way I run experiments. I just don't have the capacity to run experiments in a sane amount of time on my machine. To get around this, I've setup my code to run experiments on west grid, a research computing system.

In the process, I've written up a little guide for running experiments politely. This is mostly a refrence for future-me.

Note: This isn't particularly exhaustive: it's just an introduction; make sure you read west-grid's guides.


Jasper's Specs

Jasper meets my needs, so I'll use it for the overview. The technical specifications are:

Jasper is an SGI Altix XE cluster with an aggregate 400 nodes, 4160 cores and 8320 GB of memory. 240 nodes have Xeon X5675 processors, 12 cores (2 x 6) and 24 GB of memory. Of these, 32 have additional memory for a total of 48 GB. 160 nodes, formerly part of the Checkers cluster, have Xeon L5420 processors, 8 cores (2 x 4) and 16 GB of memory.

| Resource | Limit | | ---------------------------- | -------------- | | Maximum Walltime | 72 hours | | Maximum Running Jobs | 2880 | | Maximum Jobs Submitted | 2880| | Maximum Jobs in Queue | 5|

What walltime means is that the longest you can run a job for is 72 hours. After 72 hours, the job will be killed. You can get around this, by writing a script that performs your job in chunks, meaning that even if it terminates, you can pick-up where you left off. In fact, this is advisable. This way, if you set your wall time too low and your job is aborted part way through, you can pick-up where you left off without the hassle of re-running everything.

The maximum jobs you can have running or submitted at any one time is 2880. That means that the number of blocked jobs that area waiting to be executed may not exceed 2880, and the numer of running jobs may not exceed 2880.

When a job is submitted via qsub it is put through a scheduling system. The scheduler balances fairness with utilization in a number of ways. The actual algorithm is publicly available, but I've just found it's easier to submit a large number of short jobs, rather than a

Anna's Default Script

#!/bin/sh

  #PBS  -S /bin/sh
  #PBS  -j oe
  #PBS  -r n
  #PBS  -o logs/filename.$PBS_JOBID.log
  #PBS  -l nodes=1:ppn=1,walltime=0:20:00,mem=1gb

cd $PBS_O_WORKDIR
echo "Current working directory is `pwd`"
echo "Starting run at: `date`"
python experiment.py --horizon=50
echo "Completed run with exit code $? at: `date`"

My Script

#!/bin/bash
for s in s1
do
for a in a1 na1
do
for alg in autotd td tdr totd
do
echo '#!/bin/bash 
  #PBS  -S /bin/bash 
  #PBS  -M kearney@ualberta.ca
  #PBS  -m bea
  #PBS  -l walltime=01:00:00
  #PBS  
cd $PBS_O_WORKDIR 
echo "Current working directory is `pwd`" 
module load application/python/2.7.3 
time python ./pysrc/experiments/prosthetic-experiment.py 1000 '$runseed'  ~/usage-td-experiments2/usage-td-experiments/results/rndmdp-experiments/state-100-ftype-binary/ '$alg' > '$alg'-'$runseed'.txt' > $alg-$runseed.pbs 
qsub $alg-$runseed.pbs
done
done
done

Deleting Jobs

  1. list available space on your account

    lfs quota -u kearney /lustre

  2. shows all the jobs associated with Kearney

    showq -u Kearney

  3. delete jobs

    qdel jobid

To immediately kill all your current jobs:

qdel $(showq -u yourname | awk {'print $1'})

This takes the first parameter from showq---the process id---and tells the scheduler to delete it.

For more on running jobs, look here


A discussion of my first nine weeks in the indieweb community.

So, this site is now almost 9 weeks old. I've been loosely following the guide on indiewebcamp, plodding through the recommendation and trying to figure out what the best way to set things up is.

A map of the way I started building things is basically:

Week 1:

  • Figure out what the indieweb is all about
  • Devour all the IWC guides
  • Figure out what the best way to store content was
  • Get micropubbing with Quill to get some kind of content into the site.

I spent an awful lot of time during my first week trying to figure out what the best way to implement things was. Since so much of the indie-web specification is open-ended, there's a lot of decisions right from the get-go that you have to make.

How do you store your photos and your text? What if the text has a related photo? Should the text be stored as mark-down and then converted into HTML? Maybe you should just store it in HTML... The list goes on, and I really wanted to figure out what the most sensible design choice was, because making major changes to the way I store files and the way I format files would be a pain. After all, what sold me on the indieweb was a sense of permanence and structure in the way I store my photos and my text.


Week 2

  • Started refactoring stuff from lessons learned. I'm not a web-dev expert by any means, so there were a lot of lessons learned.
  • Added images to the site and started work with own your gram to sate the needs of my instagram-using friends.
  • Committed to a formatting structure that's easy to read and machine-parsable

This was going to be the week dedicated to POSSE: the idea of posting on your own site first, then syndicating elsewhere. I was going to kind-of fake this by using Quill for text posts and Own Your Gram for images. OYG takes images posted on instagram, and sends them to your site. Technically this is PESOS, but I was willing to temporarily compromise, since you can post to facebook, tumblr, and twitter directly from instagram.

This was the week that everything I posted got collected onto my site.


Week 3

  • Auto-posting to twitter
  • Added a database as a sort of caching system to point to where posts are
  • Made my own posting client
  • Started filtering posts by tags

This was going to be the week I was going to actually work on POSSE. There's a couple of reasons this is a good thing to do. Chief among them is formatting: when I publish on my site, I can format the text. When I get text back from instagram posts, it's mangled with handles and hashtags. Ew.

Additionally, by posting on my own site first, I can add links back to my site. However, in my attempts to free myself from the instagram app I came face-to-face with the fact that you can't post to instagram from their API

At this time, uploading via the API is not possible. We made a conscious choice not to add this for the following reasons:

  1. Instagram is about your life on the go – we hope to encourage photos from within the app.
  2. We want to fight spam & low quality photos. Once we allow uploading from other sources, it's harder to control what comes into the Instagram ecosystem. All this being said, we're working on ways to ensure users have a consistent and high-quality experience on our platform.

So I dumped instagram.

I may come back to it in the future, but I don't care enough about it right now to go ahead and deal with the droll work of removing hashtags and handles. This was the motivating factor to make my own posting client. With it, I can post images (albeit, clumsily) and post to twitter. Through twitter, my posts go to face book.

Boom. Everything is POSSE.


Week 4

  • Tweet formatting to add images
  • Changing up the aesthetics
  • Adding all the stored information---such as geo coordinates---to the posts
  • Added a by-date search

This was a week for formatting. Whomever last edited the indieweb site suggests you work on your design first and foremost.

UX and design is more important than protocols, formats, data models, schema etc. We focus on UX first, and then as we figure that out we build/develop/subset the absolutely simplest, easiest, and most minimal protocols & formats sufficient to support that UX, and nothing more. AKA UX before plumbing.

Boo.

Well, I disagree with this primarily because the whole point of this exercise is to take the stuff that I typically leave to rot on social media sites and store it somewhere safe and secure. Safe, secure, and in a nice format that will last in the long-term. For this reason I chose to prioritize the fetching posts from sites I already use and the mechanics of syndication. So, up until this point, the site was largely unusable, but was a kind of storage facility. I promise it's not because I'm an engineer

So, eventually things need . I added a form of navigation that lets you find, for instance, all of the posts from a specific month and year. I started putting effort into a semi-respectable UI. That being said, I'm not known for being a good UX designer


Week 5

  • Improving the usability
  • A quick-post system on the blog-roll

Week 6

I took a break and built a little site for rating informatics courses at my university.

Week 7

  • Made the posts markdown based for styling
  • Updated the styling to make it readable
  • By category filtering

Because things were usable, I slowed down a bit. I started to work on less interesting things, continuing to focus on the usability, while doing some testing and refactoring the hacked-together mess that was my blog.


Week 8

Skyrim belongs to the Nords.


Week 9

  • I fixed my micropub end-point, removing all the code-snippets I got from other people's projects
  • I added a means of collecting groups of posts, like images
  • I added an editor to make changes to posts
  • I focused on the usability of the site and make links to things that are relevant
  • I started talking on IRC

I now feel like I actually have something semi-respectable. Sure, it's spaghetti code that's tangled up, but it does what it's supposed to, and I think I made some reasonable choices that will ensure stability in the long-run. That being said, I'm still a lone island in a vast sea. I don't really spend much time talking to indieweb people, and I've not implemented any of the functionality that allows me to interact with indieweb sites.

Going forward, I'd like to implement webmentions and functionality for event-based posts. Beyond that, I guess spending more time getting integrated in the community would help my project grow in the long-term.

There seems to be some tentative interest in Edinburgh University Hoppers to run some web-development workshops next year. If there's enough interest, I'm sure we could get a few people to start a hombrew club and build our own community.

Speaking of which... I should probably update the ancient hoppers page.


Here's an example of a collection of images, or an album. So I've started this as a means of collating a group of related items.

I wanted the extension to be as minimal as possible. As a result, I treat a collection post the same way as any other post: there's no additional information or details associated with a collection. I manage this by making albums that are simply 'responses' to other posts on the site with the in-reply-to field. This lets me give all the individual images additional information, by letting them be their own posts. It's a bit of a hack and I'm kind-of using in-reply-to fields for something other than what they were originally intended for.

It's just a mock up, really, but it does what I need it to do. I still need to figure out what the most sensible way to display all this is. :/