Akr.asia: extra integrations + a framework for creating integrations

Akr.asia1 is a project I have been working on for the past week or so (and at my first ever Pomodoro Poker session at the Seattle meetup!)2. In short, Akrasia provides:

  1. Extra integrations for Beeminder (it currently has integrations for Pinboard, Memrise, Last.fm, Codecademy, Leetcode, Codewars, Project Euler, and the Beeminder Forum), and
  2. A way to quickly create integrations for Beeminder without having to write boilerplate code for OAuth, data persistence, etc.

For a more detailed explanation of how this works and how to write a new integration using Akrasia, see my blog post on the project which covers more of the technical aspects.

Also, check out the source code for the Beeminder Forum: Posts Count integration for a quick example of what this looks like (the whole integration is just the integration.json file and the server.js file, which only has a single endpoint handler) (remixing/forking an existing integration, you could write a new integration in just ~30 lines of code, including the JSON config).

Any feedback, suggestions, or questions/comments would be welcome!

Edit: updated blog post with more formal specification of the protocol/requests between Akrasia and the integration fetch endpoint

1: Not the most creative name, I know :p
2: A disclaimer: all the functionality seems pretty stable now, but the project is still under fairly active development, so a few bugs may pop up. If enough people start using it, I'll begin following best practices more (e.g. separating staging/testing from prod more, etc.).
14 Likes

Thanks!

1 Like

I couldnā€™t find a proper issue tracker for the project, so here it goes: The codewars integration (completed katas) seems to be buggy.

These are my stats at codewars:

19

Thatā€™s the corresponding Beeminder Goal:

Link to Beeminder Goal.

3 Likes

Thanks for the feedback and for trying out akr.asia! It looks like the datapoints on the goal are showing 8.0 when you have ā€œTotal Completed Kata: 8ā€, which is correct (it is intended to return the total number every time, to be used with an Odometer goal).

It looks like youā€™re using a Do More goal though. Try using an Odometer goal instead and the graph should make more sense! I donā€™t think thereā€™s a way to change the goal type on an existing goal through the website, but you could try emailing support@beeminder.com and asking them to switch it for you. The integration also mentions you should use this goal type when you set it up through akr.asia, but the hint doesnā€™t really stand out on the page.

Hereā€™s what it should look like with an odometer goal! https://www.beeminder.com/csu/leet#data

2 Likes

Thanks for the quick answer! I emailed support about it. May I still suggest that you have some kind issue tracker (at github for example). It would make life easier for you tooā€¦ :slight_smile:

P.S.: Thanks for your work on akr.asia. Your framework actually made me discover codewars and memrise, which I both use now!

3 Likes

Good idea; Iā€™ve been meaning to make a place for issue submissions. Iā€™ll add a link to this forum thread for support, for now! I would use GitHub, but then people without GitHub accounts wouldnā€™t be able to open issues. Anyone with a Beeminder account should be able to post on the forum :slight_smile:

2 Likes

The pinboard integration seems to have stopped working for me - and it seems like the certificate ran out on the site. Iā€™m not sure if these two things are related but just wanted to point both out.

More generally, Thanks for akr.asia, itā€™s great!

1 Like

Should be fixed now. Integrations should be working again and akr.asia
should soon redirect to the new manage site. Sorry this took so long to get
sorted!

2 Likes

Just for anyone who wants to use the ingetragtions that @csu has built. The URL is now https://akrasia.on.csu.io/

3 Likes

Ah yea, thatā€™s the new link now. Thanks for updating the post! It doesnā€™t seem to let me update the original post anymore :sweat_smile:

1 Like

I just bumped up your ā€œtrust levelā€. Does it let you now?

2 Likes

@csu Is the Memrise integration broken? My goal went from almost a million points to about a thousand yesterday: https://www.beeminder.com/openmedi/memrise

@dreev Ah, that worked. Edited the original post and updated the links!

@matti Huh, I havenā€™t changed anything, but itā€™s possible something changed on their end that broke something. Just scanning the integration code though, it seems like it should still be working.

If you want to mess with the code there a bit, you could try manually hitting the Glitch endpoint with HTTP requests and seeing if the console output/response is working as expected.

Iā€™m not really actively maintaining the integrations anymore. If you do change anything though, feel free to send me a different endpoint for the integration and I can point it to that instead.

2 Likes

@csu See line 44:

var solvedProblemsCount = parseInt(elem.text().replace(',', ''));

The problem is that str.replace will only replace the first occurence if the first argument is a string. Meaning when the number is something like this ā€˜1,010,632ā€™ it becomes this: ā€˜1010,632ā€™. parseInt intreprets this as parseInt(1010, 632), the second argument (radix) being not within the limit and therefore ignored. Thatā€™s how we end up at ca. 1000 points in beeminder instead of a million points.

I changed it to be a global regex and I believe it should be working now: https://glitch.com/edit/#!/chestnut-hydrant

2 Likes

@csu Did you have a chance to look into this?

Should be updated now!

3 Likes

I was searching for something for codewars, thank you for your work @csu! :slight_smile:

1 Like

Thank you for making this! Very happy to have a codewars integration, sort of!

1 Like

We might need to update the memrise integration, or rather add a decks integration for community created decks: https://www.memrise.com/decks-by-memrise/

Another thing: As said by @hmowilliams in her thread about FreeCodeCamp: FCC and also KhanAcademy might lend themselves perfectly for simple integrations just like the memrise one is. Can we get that going @csu? I might be able to contribute if you tell me how. :wink:

3 Likes