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


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


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


Moved to San Francisco for three months. I'm ready for a little bit of a PhD break and a lot of adventure :)

Edmonton International Airport → San Francisco International Airport

At: Twitter Internship

From 2020-02-02T17:00 To 2020-04-27T17:30


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'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..,


I’ll see what I can do 😀. What time are you hosting it? I’m at GHC until the 28th.


I’d love to! When are you hosting it?


Are any #indieweb folks heading to #ghc2018 this year? If there's any interest, I'd love to have an ad-hoc homebrew website club!


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


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.



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.


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.


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


Me pretending I'm actually at the Homebrew Web Camp in Edinburgh.


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!


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.


An interesting take on changes in the way we use the web by an Irani-canadian after being imprisoned for several years.

Some networks, like Twitter, treat hyperlinks a little better. Others, insecure social services, are far more paranoid. Instagram — owned by Facebook — doesn’t allow its audiences to leave whatsoever. You can put up a web address alongside your photos, but it won’t go anywhere. Lots of people start their daily online routine in these cul de sacs of social media, and their journeys end there. Many don’t even realize that they’re using the Internet’s infrastructure when they like an Instagram photograph or leave a comment on a friend’s Facebook video. It’s just an app.

This aptly describes a lot of the issues I've had with using-social media. Specifically, it mentions how walled-off instagram is.

His blog is now here


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.


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


Patched together reply-to and micropub today. All in all, I guess that's productive.


Here's a test post from Quill!


Woo, just added geolocation.


Woo! Finished up a prototype UI. Now I can at least syndicate to twitter.


I'm testing out my new posting UI after some bugfixes. Here's a photo of Edmonton. #indieweb