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


Check what your key id is:

gpg --list-keys

The output will display: rsaXXXX/your_key_id_here

The key fingerprint will also be listed below.


Check a key fingerprint:

gpg --with-fingerprint <public_key.asc>


Let's say that you have a secret key on a card device (e.g., a yubikey) and you don't want it on the device anymore.

gpg --delete-secret-keys <key-id>

You can verify the key has been removed by running

gpg --card-status

which will display all the info about the card. Under general info sec# should now be listed instead of sec> this means that the secret key is now stored offline and not on the device.


If you're using MacOS, add this to your bash configuration, typically ~/.bash_profile.

 # Restart the GPG agent
 gpg-connect-agent KILLAGENT /bye
 gpg-connect-agent /bye 
 gpg-connect-agent updatestartuptty /bye > /dev/null

 # SSH authentication managed by GPG
 if [ -S $(gpgconf --list-dirs agent-ssh-socket) ]; then
   export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
 else
   echo "$(gpgconf --list-dirs agent-ssh-socket) doesn't exist. Is gpg-agent running ?"
 fi 


I unit-tested a personal project and now I feel like I deserve a gold star or a cookie


Doing some gardening this evening.

Setting up a small pump to drip irrigate a few plants based on the soil moisture as read by a capacitive sensor.


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.


I'm going to go to Homebrew website club next week.

At: Homebrew Website Club

From 2020-02-19T18:00 To 2020-02-19T19:30


I'm at my first Homebrew Website Club in three years, and It's the San Francisco Meetup in the Mozilla office! I feel like I've made a pilgrimage to a spiritual centre of the indieweb.

All of us indie-folks are really fortunate that the indieweb is such a warm and welcoming community.

At: Homebrew Website Club

From 2020-02-05T18:30 To 2020-02-05T20:00


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.


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.


I recently tried using ipython notebook in a pipenv shell and realized that all of my imports were missing. This is because the the kernel selected is wrong.

In your project directory run:

pipenv install ipykernel
pipenv shell

When you start your pipenv, you'll see a shell name in your terminal like (my-virtualenv-name) bash-4.4$. You need to add that to the kernel list in jupyter notebook. Do that by running:

python -m ipykernel install --user --name=my-virtualenv-name

Restart your jupyter and go to your notebook. In the Kernel>Change Kernel menu, you should now see your pipenv in the list under my-virtualenv-name.

Select that and you're good to go!


Most irritating matplotlib error:

AttributeError: Unknown property colour


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.


Today I bit the data management bullet and started reviewing old photos. Geeze, I've forgotten how tedious it can be reviewing photos en masse: selecting them, editing them, exporting them, properly arranging them into albums..,


What I did Sep1 - Sep7

Indieweb-stuff:

  • Tried to federate my indiewebsite so that I could interact with mastodon through it (unsuccessfully)

  • Hacked together a websub hub which passes all of the websub.rocks tests.

  • Rebuilt large chunks of my site---particularly the back-end---so that the posting interface is nicer and easier to test.

  • Factored out my markdown albums, webmentioning, and hashtag extensions into separate repos which I can independently maintain.

  • Hooked up webmentions again so that I can see webmentions as part of an ongoing effort to improve usability of federation.

  • Hooked up in_reply_to again, so that I can send webmentions. This also lets me reply-tweet using brid.gy

  • Started posting albums and articles I'd held off on posting.

Reading:

  • Research proposals from different disciplines to figure out how I want to structure my candidacy document.

  • Bickhard's interactivism and process metaphysics

  • Anthony Chemero's take on representationalism

Other stuff

  • Karaoke 🎤
  • Symphony under the sky
  • Knitting an aran sweater I designed
  • Yoga 🧘


Test in-reply-to over twitter using brid.gy


Test for tooting.


I really need to invest in better unit testing


Today we had our first HWC in Edmonton. We had four people in attendance; everyone was either building their own personal sites on the university server, or helping people navigate the basics of building a site.

The plan is to have a weekly to bi-weekly meeting where we provide people with the tools to build their own sites. I'm starting with University pages, as it's something people should just have in general, but I'm going to write up some tutorials to motivate and guide people through the hurdles of getting involved in the indieweb community.




I think I'm going to make a #yeg news aggregation site for #opendataday .


Refactoring my post-parsing was a nightmare, but my code is so much cleaner now. #indieweb


Finally got around to adding geocoding to all my #indieweb posts.


I've just added an approval queue to my activitystreams inbox. Now I can receive notifications from anyone!


I've added an activitystreams inbox to my indieweb blog. Only rhiaro can send me notifications though. :)


@ChrisAldrich I'm glad you enjoyed it! Coming up with something that's easy enough to use consistently is kind of tricky. #indieweb

It worked though! I recently used it to put up two weeks of photos!


My favourite part of the indieweb: when you make a post outline the neat thing you made, breaking it in the process. 😬


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.


Successfully scraping articles off of news sites. Time to work on crawling. wzxhzdk:0 .


Design For Informatics is wrapping up. Seeing the diversity of people's presentations makes me appreciate the value of a project-based course.


Procrasticoding: for when you really don't want to work on that essay


test tweeting with bridgy


yeah, my Micropub endpoint was the first thing I built so that I could just use quill instead of making my own forms. I feel like I could personalize my own one to do some leg-work to get hash-tags, summarize text, and the like.


I should probably get brid.gy integrated at some point. It looks pretty cool.

Also, I feel like I need a better minimal interface for adding posts. Right now it's a chore to add anything but text to the site. It's especially frustrating on mobile devices.


It's happened, I've turned into a robot. Or, rhiaro was nice and gave me a tele-presence so I could pretend to be in Edinburgh.

Things I did:

  • Added linear navigation
  • Did some refactoring
  • Added a reply-counter on my stream
  • Added a mention-counter on my stream
  • Broke self-webmentioning...
  • Forgot I was still on-camera when I started a lab discussion on Asimov.

I hope we have more HWC when I'm back in Edinburgh for the winter...


I added a nice little counter at the corner of each post on my stream.

It gives a heads-up as to how many people have responded and whether or not it's in response to another post.


Woo, I now have linear navigation. In other words, the older posts button now actually displays older posts!


Okay, I didn't realize how messed up my microformating is.

Tomorrow I'm going to:

  1. go through and make sure that my site is properly microformatted
  2. try to improve readability
  3. do linear navigation

I guess I have things to do for the EDI HWC


I'm a bit stumped right now, I'm trying to figure out what to work on next for my site.

I've got:

  • A micropub endpoint for Own Your Gram and Quill
  • In-reply-to
  • Webmentions

I guess cleaning up my ui and working on refactoring would be the responsible thing to do...


I'm going to try and make it remotely, but I'm still in Edmonton.









A discussion on human-focused design.

The article starts with a humorous note which happens to mirror fields including criminal investigation. It's even touched upon by Malcolm Gladwell in his spaghetti talk.

To design the best UX, pay attention to what users do, not what they say. Self-reported claims are unreliable, as are user speculations about future behavior. Users do not know what they want.

Don't listen to people.

If the users have not actually tried to use the designs, they'll base their comments on surface features. Such input often contrasts strongly with feedback based on real use.

Actions speak louder than words.




I've just moved to a public repository so that I can share my project with a couple of other. The project's pretty rough around the edges, but I'm pleased with the way everything's flowing now.

especiallly given how hacked together this is

I've now got support for:

  • micropubbing
  • webmentions
  • in-reply-to
  • albums (albiet in a hacked together way)

But, I need to add testing. That, and there are a lot of little things that would make the project overall nicer. For instance, simply displaying the link if we can't find any indieweb formatting on an in-reply-to page.

Also, I'm running critically low on storage space on my server. I'll need to start working on some self-image-hosting soon. That would also enable me to throw some albums up.

That being said I'm going to take a little dev sabbatical for now.


I guess I have the mechanical aspects of webmentions in place. I just need to do some more testing and make sure that the formatting is readable.


Another test note for webmentions.


This is a test note to use as a source for sending web-mentions.


I'm spending more time thinking about UX and how to make things easier to visually parse. Design is hard.


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.


I like how you can see the clear delineation between exams and not exams in my github commit graphs.

That, and the increased density from term-time to free time.


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. :/