Jun 24, 2017

How Sitting on the Floor Accidentally Improved my Posture

I recently moved, and in the process decided to shed a lot of my possessions so that I might lead a more minimalist lifestyle. Among those possessions was a desk that was too large for my temp place, and a chair that wasn’t getting used since I’d been using a standing desk for the past couple years. Setting up another desk seemed like a hassle, so I decided to sit on the floor using my coffee table for the PC/monitor, and a tiny stand-up bench for my keyboard.

Turns out these happen to be perfect heights for what I’m told is good posture, but now I was dealing with zero back support.

No chair or conventional desk. What now? My standing mat became a sitting/kneeling mat. I switched between various cross-legged poses and what I later found out to be called seiza, a Japanese sitting form.

Several people told me not to do this; that it would be painful and unhealthy.

I quickly realized that slouching without back support results in immense pain1. This is where a lot of people say “I told you so”; after 3 days my back was hurting throughout the day. After a week, the pain vanished. I noticed I was sitting up straighter even in chairs with bad back support. I realized that the pain I was feeling wasn’t the kind that indicated something unhealthy. It was muscles being formed. The act of using my musculature to hold my skeleton in place was making my back stronger.

The pain experienced from slouching without back support is so much greater than the pain of forcing yourself to sit up straight with weak back muscles; you have no choice but to build those muscles.

Seiza is an interesting pose. For some reason it gets you to sit up straight whether you want to or not. It’s a little uncomfortable at first, but you get used to it. The Kanji for seiza (正座) literally translate to Correct Sitting. It’s how many Japanese people sit for at least part of their day. The Japanese people I know have commented on how many Americans appear to slouch in general. From a my (gaijin) perspective, the Japanese people I know sit up unusually straight. I think this is because they’ve spent more time sitting without chairs.

I’ve been doing this for about a month now, and am generally pleased with the results. I do everything like this. Gaming, watching videos, programming, web surfing, the works. I think it’d be ideal to have a setup that enables me to go from the floor to a chair to standing at my leisure. There currently aren’t any products that enable that, so I’ll likely need to build it myself.

So yeah, consider trying this experiment at home. I don’t do this at work, but it has still somewhat improved my posture there despite the crappy chair.

  1. I do not exaggerate. I mean seriously immense pain. It feels like your back is about to collapse. 

Jun 23, 2017

Portable C in Japanese

I recently have taken an interest in writing portable code. In part because of my involvement in the Orx Project, and in part because my job requires me to write code that can cross compile and run on multiple embedded platforms.

On a somewhat unrelated note, I was on the hunt for good programming blogs in Japanese. Since I’m teaching myself the language to ostensibly do the things I do daily in said language, I decided to take a crack at search-engine-fu in Japanese.

I seached something along the lines of “C言語 プログラミング portable”. After a bit of surfing, I came across 移植性のあるCプログラミング, which more-or-less translates to “Programming Portable C”. It’s exactly what you’d expect it to be. A bunch of bite-sized posts that focus on a specific aspect of writing portable code. The author hasn’t updated the blog in quite some time. Thankfully writing portable code is vaguely synonymous with using old standards of the language to minimize compiler incompatibility, so it’s not like it needs to be updated to remain relevant.

So can I read it? Well… sorta. I can read the code, which gives me a great deal of context. I can Kanji-pick too, so I can at least get the gist of what I’m looking at. Then it’s relatively trivial to translate the rest with the help of various websites.

I’ve used a bit of the blog for sentence mining, and I’ve learned a few useful coding tidbits from it as well. A lot of it is pretty obvious stuff, but it’s still a nice reference. Who knows? Maybe you could learn a thing or two from some Japanese guy who just wants to write some portable C code. :)

Jun 23, 2017

What if Git Issue Trackers used Git?

On my drive home today I was thinking about how there’s some dissonance between DVCS’s and the issue-tracking systems that accompany them more and more these days. GitHub has one. GitLab has one. Atlassian sorta has two if you count JIRA and Bitbucket separately. And… *drum roll* they’re non-transferrable. What the heck? The repositories are! Why not the issues? Are they not important as well? There’s a lot of project history and meta-documentation to be found in issue-tracking systems.

A Git repository can live anywhere. You can clone it and push it anywhere. It seems strange that issues don’t come along for the journey. I routinely utilize multiple remotes, and where they’re hosted is arbitrary. I have some respositories that exist on Bitbucket, GitHub, and a private GitLab instance. Why? Not important. What’s important here is that each of these have incompatible issue tracking systems.

One emergent pattern I’ve seen is the formation of Wiki repositories: a collection of markdown documents that are loosely coupled to a main repository. They have their own repository history and exist as a sibling to the main repository. Why not do something similar with issue tracking? They have history. They could be coupled to one repository or used across many. Each issue is essentially a document.

There’s a project out there called gaskit that aims to do this, though it seems to still be in its infancy. There’s another one called cil that looks like it’s meant to be used for managing the issues as documents via command line. Neither quite seem to be what I’m imagining, but at least I’m not alone in being frustrated with non-transferrable issue tracking.

Jun 20, 2017

In the Radio Silence

Things have been quiet on here for a while1. I have some reasons for that, but those are less important. This is a brief update on what I’ve been up to.

  1. Apartment hunting and moving ate up a great deal of my time and energy.
  2. Been working on my first contribution to the Orx Project. Super excited to get it wrapped up. I’ll write more about it when it’s done.
  3. Made some major strides in my Japanese immersion learning. This is including but not limited to getting AJATT IMX on a wicked sale2, covering my first Japanese song (which somehow catapulted me to starting a sentences deck for realsies this time), and I even found some Japanese people who were willing/enthusiastic to help me translate interesting content.
  4. On a similar note, discovered my own life-hack3 that has completely altered the trajectory of my immersion and general productivity, for better or for worse.
  5. Briefly explored the fascinating world of online dating services only to find I enjoyed breaking them down mechanically as if they were games4 more than actually using them. We’ll just say it was… “research” - right, research…
  6. Lastly, I’ve been a bit torn about what to write here. I have lots of interesting ideas swirling around in my head, but this site is the most public interface I have between my identity and the rest of the world. It’s probably in my best interest to blog about games and programming and staying away from anything that a potential employer might find off-topic or objectionable, which frankly could be anything. However, I have other interests close to my heart that I’d like to share. I’ve considered running multiple blogs to keep things segregated, or customizing my Jekyll theme to break this blog up into a few primary threads, but that also sounds like a lot of work deciding how to split things up. There are also some worthwhile ideas that are better shared under a veil of anonymity. I just do not know where to put this content.
  1. I originally authored this very post in late April, and here I am finishing it in June… 

  2. Which quickly paid for itself, in a manner or speaking. It spams my inbox with random Japanese stuff every 90 minutes. All day. Every day. Though it does show some diminishing returns. For now it has earned its keep. 

  3. I’ve had several people tell me that it needs to be packaged into one easy-to-use program and sold because it’s so wild that people don’t even know they want it yet. Perhaps I’ll make a post about that later. 

  4. Spoiler Alert: They are designed like games. Freemium games. ~Total shocker, I know~ 

May 19, 2017

SRS Revelations

I’ve started my Japanese Sentence deck. Again. Again. Again.

That is to say, I tried SRSing vocab, sentences, and even MCDs. Couldn’t ever bring myself to enjoy any of them… Until now. This time it’s here to stay. I’m gravitating more to my sentences now than to my RTK deck.

In short, I accidentally figured out

  1. that I always quit sentences because it wasn’t fun to add or rep them, and
  2. a process that made adding/repping sentence cards easy and fun.

When I figured out a process that worked for me, I found I had some tension points where it became mildly tedious/error-prone. Thank goodness I’m a programmer! I decided to make an Anki addon.1 And lo did he open-uppeth Spacemacs and starteth typing.

I’d never made an Anki mod before. I’d never used Python before. What could go wrong? Well, everything, if I were a less bright individual. Good thing I’m smart or I might’ve programmatically deleted all my decks. Man, wouldn’t that’ve been a riot?2

Anyway, here’s how this works:

  1. I use Clozes in a way similar to MCDs, but with one but major difference: Clozes don’t hide text - they highlight it. To accomplish this, I construct the Cloze c1::ClozeText::HintText such that ClozeText == HintText. This is quite tedious, so I made an addon that automates this for me.

    This gets rid of that intimidating [...] text on the front of my cards, and replaces it with the actual clozed content I’m testing myself on.

    There are 2 reasons for this.

    1. It’s way less intimidating, which keeps me motivated to do reps. I’m using these to learn readings and grammar the easy way, not train myself on linguistic fill-in-the-blanks.
    2. Anki represents clozes as <span class="cloze">CLOZED TEXT</span> when it generates the front side of the card. This allows me to use CSS to highlight the cloze text and remove the brackets. I can also programmatically extract the text I’m testing myself on using javascript and do fancy things like add dictionary links for it on the back of the card. The result is quite appealing.
  2. I made a new Cloze card type with 4 fields: Sentence, Context, Meaning, Extra. I essentially split the Text/Extra fields of the normal Cloze card into two extra fields. This is a preference on my part so that I can have more fine-grained control over my card templates. Sentence and Context go on the front, Meaning and Extra go on the back. Sentence is the textual content I’m trying to learn. Context is often some form of media for the Sentence to make the card more compelling. The Meaning is a general overall meaning of the Sentence. The Extra is reserved for readings, definitions, and misc notes. I fill that section out as I go.
  3. Before I add add a card, I always capture context. I import some form of media to the Context field; no more, no less. No need to fill out the Sentence text or Meaning/Extra just yet. GifCam + VClip + OfficeCam = media ripping excellence. Whenever I see a scene in an anime I’m watching that really grabs me, I use GifCam or VClip to capture it. Whenever there’s a page in the manga I’m attempting to read that piques my curiosity, I scan it with OfficeCam or take a screenshot in cases where it’s a digital comic that can’t be downloaded. Sometimes context is just a short description or a link to the content, such as Twitter posts. In the case of songs, I usually just put the title of the song as Context.
  4. If I feel like it, I’ll add content to one or more of the other fields, in whole or in part. No rush. Maybe I don’t know how to write all of the sentence. That’s okay. I just fill out what (I think) I know and leave some blanks where I’m not sure. I can always fill it out later when I know more. Maybe I only cloze one word at the end of the day without actually knowing the full meaning. Maybe I only have the word. Whatever. Just do one.
  5. I only Cloze things that I immediately want to learn, and only in the order that seems most fun. I eat my desert first. When I feel like I need some extra cards generated later in a pinch, I cloze the less-interesting content for the sake of adding cards. Perhaps days or weeks later, I’ll get around to really fleshing out the other content like Meaning and Extra. I usually fill out the Extra field as I go. The Meaning field is the most time consuming one if I don’t have some help. Thankfully I know some Japanese people who can help with that when I’m stuck. Most of the time I just do my best guess, though. Is it sometimes wrong? Sure, but being wrong is okay. Wrong action is easier to correct than no action. I’m still gaining valuable contextual exposure, and that’s arguably the most important thing.

So far this has been working well. I’m generating 1-3 new cards every day with this process, which is significantly better than before.

One pattern I’ve noticed in myself is that I learn best through use, even if it’s slow and takes some healthy indifference to sucking. It’s how I learned Kana, it’s how I’ve maintained interest in Kanji, and it’s what has finally gotten me into the swing of sentences. When I say use, I mean that in a very casual sense. For instance, I (pretend to) read manga every day. This equates to looking at a few pages and occasionally looking up a word. It sounds silly, but it has made a serious difference. It’s one of those black magic things you gradually get from immersion. It’s also a crazy good feeling when I make a connection between an RTK card and a compound in the manga.

All that to say, my “study” of Japanese is going well. I’m also approaching a whole year since I decided to start. That means ~10 months of immersion and SRSing. Lazily, mind you. I’ve really half-assed it. RTK can be cleared in 3-6 months if you really put your mind to it, and I’m only about 2/3rds through it in about twice that time. So what? I spend maybe 10-60 minutes per day doing active learning, and it’s completely at my leisure. I think that really drives home the point that any fool can do this if they take their time with it and stop trying so hard.

  1. And what a trainwreck Anki is when it comes to modding. 

  2. No, not in a good way. A few sequentially wrong moves and I’d have irreversibly deleted all of my progress. That could have been soul crushing. Thankfully, I’d need to be a particularly stupid person to make that mistake. :) 

2 / 8