Hippocampus - the memory of our brain, is the repository of all that we have learned and experienced.


Flashcards. Flashcards. Flashcards. Can't have a blog named after a part of human brain without mentioning flashcards.

Between my last post and now I've been experimenting ways of integrating flashcards into my personal learning. Many people praise it, though I generally don't hear about it outside of language learning, medical and law studies, where Anki (the powerful open source flashcard software) receives majority of its users. I do want to learn German, but there are hell lot of other things I want to learn, that aren't law nor medical.

The idea of using Anki flashcards never left my mind since I read Fluent Forever by Gabriel Wyner, when I was researching tips to improve my language learning. Wyner's idea of treating the making of flashcards as a gamified process really resonated with me. I really did find entertainment value in collecting my personal associations with words and putting them together into flashcards. That process alone strengthens my memory with the words I was making cards for.

On top of that, I use Habitica, the todo list RPG. There is an Anki plugin to make progress in Habitica by completing Anki reviews. This is like doubling the gamification factor for me, and I spent most of my time feeling excited for card-making than playing video games.

That being said, two weeks later I still haven't started making an actual deck that I can stick with. What happened?

Anki cards have a hideous default HTML template (that is, zero styling). It's very boring to look at during reviews, and I consider eye candies as a gratification. So I started looking up card templates. Surprisingly there aren't many, despite the hype Anki receives, but there're some really advanced, pleasing and multi-functional card templates, complete with Javascript buttons and whatnot, that can spice your cards up.

Let's just say I spent most of my last two weeks tinkering with these templates, instead of actually making a deck. It's the exact same problem I have as trying to start a blog, website or whatever. I get stuck tinkering with the tools, instead of making content. I won't lie, I do enjoy tinkering with the tools and I don't feel bad about it. Although the actual content which my tools should serve, suffers instead.

Another hurdle I bumped into was association. I am in a bit of a desperate time right now, trying to either be employable or make money from front end development, which I'm still practising. So naturally, I want to make flashcards for front end development.

What end up happening is that I would absorb pages and hours of content about front end development, and actually struggled to make cards for them using the overly complicated templates, because I don't know what to ask/test myself. I simply have not come across a practical scenario where I'd need to use the knowledge I consumed. My motivation to make flashcards for programming first before I actually make something, was to avoid the frustration of not knowing what to do when I actually start, but now I experience the same thing happening with the reverse - I don't know what to say on the cards.

I've talked about it on Mastodon, and the conclusion is really just the lack of association. Also a gentle reminder that there's nothing to be ashamed of for bumping into stuff I don't know about.

This week I've been away from my laptop on an island retreat, so Anki has been out of my reach (it's just easier to make cards from PC), but the topic is still on my mind because I want to make it work somehow. Before I left home, I came across a book that I really needed to read. Not just want. Need. It was Reasons to Stay Alive by Matt Haig.

Nothing is more personally relevant to me than mental health. This book is packed full of things I want to remember for the rest of my life about depression and anxiety. While I'm in the mood for flashcards, the most logical thing to do is exactly that - to turn things I want to remember from the book into flashcards.

Finally I came up with a deck that I know I will stick to. I haven't even gone home to my PC yet.

Since then I know I also have a few other decks I could make that would actually be useful from personal association: ukulele chords, German, programming concepts that I have experimented with etc. From this whole experience, my most important take away was that there is absolutely no need to follow what works for other people, or even judge my own learning needs. I'm not sure how this takeaway will improve my chances of making rent money, but I want to enjoy the fact that I learned something new.

PS: I'll talk about Incremental Reading in my next post, which is a method I tried for extracting flashcard content from Matt Haig's book.

2019/09/07 14:07 · rovina

Sosig Counter 3

AKA That feeling when you have completely redesigned an app.

I was going to give up on Sosig Counter and settle for something else silly to hand in as my assignment. I was learning about CSS Grid and decided to make an image gallery for memes from friends. I encountered the same problem I had in my last Sosig Counter post.

File I/O. Both the image gallery and the list of habits involve reading a list off of a directory and rendering them onto the page. I can't do it with just client side script.

And then it occurred to me that I was being stalled by one same thing. If I keep the functions in my app completely client side, then I could at least get something done.

So I decided to remove the task list feature completely from Sosig Counter.

After all, the name only implies that it's a counter. It's not a Sosig List.

And with that I finally ended up somewhere. I ended up with this beauty in progress that I actually look forward to finish!

Unfortunately the grid layout didn't work as expected and that's something I'll work on tomorrow. For now though, hurray for parrots.

2019/08/21 21:04 · rovina

Things I missed in web front end since 2010

2010 was the year I finished my Bachelor degree and began my Honours thesis in web design, but not the underlying technology. It was essentially the year when I began to not code anymore.

I'm picking up Web Developer Bootcamp course on Udemy by Colt Steele with the intention of finishing it this month full time. I'm only going through HTML and CSS modules at the moment, haven't made it to JavaScript yet, and here are what I missed since I fiddled with HTML on my own:

  • HTML forms have built-in field validations;
  • MDN by Mozilla is the go-to documentation for all things web front end;
  • I used to use w3school before I knew about MDN. w3school is still great and has tutorials for more than HTML and CSS nowadays. It has tutorials on specific frameworks too;
  • CSS can select elements based on state such as hover, checked, and can select a particular unnamed tag by counting down, for example, the 3rd div;
  • CSS has grids built-in now, along with flexbox, making some frameworks obsolete;

I do have a pet peeve and a learning goal - to eventually “break out of the grid”. Grids have been an amazing system that ever appeared in web design, but now a lot of websites look the same. I've always wanted to create layouts that are non-linear, non-rectangular.

Wish me luck on that quest.

2019/08/20 15:19 · rovina

Sosig Counter 2

I don't mean to give up so soon (actually I've been having at this project since July), but I need to hand in something soon and I find myself in one trash heap after another, trying to convert JSON data to and editable HTML table and back. I'm not enjoying it now and I need to move on.

This is my lesson learned for jumping ahead to something I am utterly unfamiliar with.

2019/08/18 13:21 · rovina

Sosig Counter 1

Okay, let me explain.

A mate and I were having this conversation about how

  • I have too many hobbies;
  • I get distracted very easily;
  • I feel like I get nothing tangible done and mentally suffer from it.

He whipped up his Visual C# and put together this lil accountability tracker, featuring our favourite snack from Greggs, my musical instrument, and a common symbol of love to remind myself positive things in life.

The C# program would sit in his local PC. Everytime I report to him that I have done programming work, he would give sausage roll a tally. If I have done a hobby activity, the ukulele gets a tally. If I remind myself that I am loved, the heart gets a tally.

For the sosig roll and ukulele, if I postpone the activities associated with them for too long, he subtracts a point.

We called it the Sosig Counter.

It was a very ad-hoc, but functional demo to keep me accountable. However we quickly come across its limitations:

  • Data is stored in Windows user profile properties, so it's stuck in my mate's PC, not transferable;
  • He has to recompile a new executable everytime we add or remove an item to track. Not that it's hard, but it's impractical;
  • We could add some sort of CSV export to archive the data, but the desktop nature of this app still makes it impractical for real use.

I proposed turning it into a web app and I'll hand it in as my web dev assignment for the course I'm currently doing. Two birds in one stone.


For the sake of my assignment scope, this initial version of web-based Sosig Counter

  • will not have server architecture;
  • will use HTML localStorage to store data. Server architecture will come after I hand in the assignement;
  • will use JSON as the data format. The whole JSON string is stored as one key value in localStorage and gets parsed around during app operation;

Main ingredients:

Before I came down to this structure, I was over-complicating the whole thing with flatfile database, SQLite and what not, which at the time I was considering integrating server architecture. But then I don't know how to hand the assignment in as a .zip for my instructor to just run off of his computer, and if I have server architecture included, he'd have to be able to run the server himself too. That's way too much effort for the scope of this assignment so I'm sticking with localStorage.

My progress today

I spent all morning learning the hard way that, in jQuery, .html() is different from .val().

I have to pass a div container containing the json string to JsonEditor, so that it can convert the json to an editable HTML table. At first I wrote the json string to .html(), and JSON.parse() kept complaining that it's got unexpected end of data. The json format was completely valid though, so I feel that something must have happened at jQuery's .html().

After a couple of toilet breaks, tea breaks and other things that made me walk away from my laptop, I finally noticed that in JsonEditor, it parses json string from an element's val(), not html(). It somehow occurred to me then, that, I was supposed to insert the json to .val(), not .html().

  if (typeof(Storage) !== "undefined") {
      jsonEditorInit('sosigTable', 'sosigData', 'sosigResult', 'json_to_table_btn', 'table_to_json_btn');
    } else {
      var data = '[{"Image":"demo","Name":"demo","Count":0}]';
      localStorage.setItem('sosigData', data)
      jsonEditorInit('sosigTable', 'sosigData', 'sosigResult', 'json_to_table_btn', 'table_to_json_btn');
  } else {
    window.location = "404.html";

And that's my whole morning spent… Time for a Minecraft break.

2019/08/12 15:15 · rovina

Older entries >>

  • start.txt
  • Last modified: 2019/08/11 12:40
  • by rovina