<![CDATA[Enreina]]>https://enreina.com/https://enreina.com/favicon.pngEnreinahttps://enreina.com/Ghost 4.41Sat, 11 Mar 2023 01:53:21 GMT60<![CDATA[How I Managed to Pass JLPT N2—But Still Feel Far From Being Fluent]]>https://enreina.com/blog/how-i-managed-to-pass-jlpt-n2-but-still-feel-far-from-being-fluent/640b36664dc3a41ee53d19e4Sat, 11 Mar 2023 01:51:06 GMT

In my 2022 Retrospective blog post, I’ve briefly shared my accomplishments around improving my Japanese language skill in the past year. In this post, I would like to share a bit of a more detailed “milestone check-in” of my learning journey.

I’ve written my previous update on passing the JLPT N3, so this time—as you might guess—I’ll be writing my retrospective around my experience of taking the JLPT N2. With that, I’m happy to share that I passed the JLPT N2 exam that I took last December. Again, the same as how it went with the JLPT N3, I barely passed.

Here’s my score:

  • Language Knowledge (言語知識): 30/60 (passing mark: 19 points)
  • Reading (読解): 27/60 (passing mark: 19 points)
  • Listening (聴解): 44/60 (passing mark: 19 points)
  • Total score: 101/180 (passing mark: 90 points)

Again it’s similar to my N3 score: my strength is in the listening section, while again I bombed the reading section, though luckily I passed the passing score threshold. The reason I’m sharing my (not-so-great) score is to advise readers to take my experience with a grain of salt — I’m sure there are more reliable sources (articles or blog posts) about how to prepare for the JLPT exam, and you should do what those posts tell you to do instead.

So, why do I bother to write this post anyway? Well, first of all, I want to do a self-retrospective to help myself move forward in my Japanese language learning. And writing helped me to make a structured reflection on my studying approach so far. Then, second of all, I want to share that while having the JLPT for a milestone of your language learning journey is a good motivation, I wouldn’t recommend studying solely for the exam if fluency is what you’re reaching for. It’s a different story though if you are required to have the JLPT Certificate for work-related reasons — in that case studying solely for the exam might be what you need after all.

Continuing The “Grind”

There is not much change in my study habit before the N2 exam compared to when I prepared for the JLPT N3 exam. My main “grind” was still around doing reviews on WaniKani (for kanji and vocabulary) and Bunpro (for grammar). Before the N2 exam, these were my stats on those web apps:

Bunpro. I completed all N3 grammar points and was halfway through the N2 grammar points. Honestly, though, I have a hard time making the grammar “stick” so after the N2 exam, I paused subscribing to Bunpro and allocate the budget for something else instead (more on this later).

WaniKani. I leveled up to Level 33, just a few days before the exam. According to wkstats.com, on Level 32, I should know around 70% of N2 kanji. But I would like to emphasize that there is a difference between being able to answer WaniKani reviews and recognizing kanji and vocabulary in the wild. More on this later in my reflection section.

Aside from BunPro and WaniKani, here are other resources that I’ve been using throughout my study:

日本語総まとめ N2 読解 (Nihongo Sou Matome N2 Dokkai). This is a practice book that is part of the Sou Matome series. For N3, N2, and N1 levels, the series consists of 5 separate books each for reading, grammar, vocabulary, kanji, and listening comprehension. I picked up the N3 Dokkai book after the N3 exam. I enjoyed how the reading exercises are formatted — thus decided to continue and pick up the N2 level as well. It’s designed to be finished in 6 weeks, with 2 pages of exercise to be done each day.

TODAI Easy Japanese News. This one is a mobile app to practice Japanese skills through reading and listening to the latest Japanese news. However, I mainly use this app for the JLPT Practice Test. The practice test is timed just like the real exam, though you can put the app in the background to “pause” the test and continue to finish it later. You can download the app for free for iOS or Android.

YouTube & Podcast. I also incorporate watching and listening to podcasts and videos related to Japanese learning into my study routine. Most podcasts have an accompaniment video on YouTube that displays a transcription of the episodes. Some of the podcasts I listen to are YUYUの日本語Podcast, Miku Real Japanese, 日本語withあこ Nihongo Picnic, and Let’s Talk in Japanese. Additionally, I’d also recommend 日本語の森 (Nihongo No Mori) videos for grammar explanation (and particularly this video if you’d like some cramming before the exam).

Stories, Books, and Manga. After passing the N3 exam (and while preparing for N2), I felt like I lack in the “studying through context” department. So, I tried to read more Japanese literature, while keeping it casual,  as I want the time spent on reading to be more of a “leisure activity” instead of “studying”.

Aside from reading novels (and “attempting” to finish them, I’ve only finished one novel so far: また、同じ夢を見ていた), I also tried a free month trial subscription to Satori Reader, yet another app for Japanese reading practice through annotated stories. On top of great voice actings (yes, the stories there are equipped with audio accompaniment), the stories suit my taste as well. Spoiler: I signed up for a monthly subscription after the trial period, and paused my Bunpro subscription instead (to avoid excessive spending, of course).

And, for some “lighter” reading, I also read ongoing manga in their RAW format (i.e. in Japanese). Some mangas I’ve been following are 見える子ちゃん (Mieruko-chan) and Cardcaptor Sakura: Clear Card-Hen. RAW (as in non-translated) chapters (or at least the latest chapter) for both of these series are available to read online for free legally.

Note that I don’t consume all of the above-mentioned resources every day. Instead, I swap them out from time to time to avoid getting bored and burned out. Even for a resource such as the Sou Matome reading practice book, on which you’re supposed to work on 2 pages each day, I had some days where I skipped reading it just because I needed something fresh and different in my study routine.

Reflection After Taking The Exam

Okay, so I had been studying with all those resources, and then December 4th came. I went to the exam site and did my best to answer all of the questions (yes, in JLPT where there is no point deduction for wrong answers, you may as well guess the answer when you don’t know the answer). So, how did I feel after finishing the exam?

The N2 was a different beast than the N3. I remember in the N3 exam, my main struggle was with the reading (読解) section. In the N2 exam, I struggled on every section of the test including Language Knowledge and Listening.

The reading section was still the hardest. Knowing how to read a whole sentence does not mean I can understand the meaning of the sentence, let alone the whole passage. Even the fact that I finished two So-matome reading books before the exam and have 70% of N2 Kanji under my belt, I guess my reading speed was still not sufficient and I wasn’t able to finish reading all passages within the time limit. I think I would need to read more things in context (i.e. reading articles, books, etc) rather than relying too much on grinding my WaniKani level.

Relying on “hunch” to guess the answers. Even before the exam, I knew that my reading skill is still below what I intended to reach after barely passing the N3 exam. That’s why I intentionally “cheat” around the exam by exercising on the type of reading texts and building an exam “muscle” to know how to guess the correct answer without reading or understanding the whole text. This also applies to other sections, like vocabulary or grammar sections (especially the sentence scramble part). I relied mostly on my hunch to guess the answer to questions that I don’t know the answer to (and there were a lot of them that falls into this category).

Feeling Far From Fluent. When I put down my pencil in the exam room, I couldn’t make up my mind whether I would pass or fail the exam. I imagine, when someone whose Japanese is actually level N2 (or maybe above), finishes the exam, they would have a feeling of certainty that they will pass the exam. But it wasn’t the case for me. I wasn’t sure of most of my answers.

I just kinda hoped that I could, by chance, pass the exam. And fortunately, I found out that I did.

Although I felt really happy after finding out I passed the N2 (I couldn’t even imagine I could do it the year before), I also got this mixed feeling of I passed N2 but why do I feel like I’m further from being fluent?

I think that this is mostly because of two things: first, the JLPT is not the right measure to test fluency, and the exam seemed to be designed to test one’s comprehension, to some extent. Second, although I only intended for the JLPT to be a “self-check” on my learning progress, unconsciously, my study methods had me strayed away from the main goal of “fluency”. Instead, it has become leaning more towards “passing the JLPT” as the main goal.

Moving Forward

So after passing the JLPT N2, the first question that popped into my mind was: Should I take the N1 exam next? And my current answer is not now.

I won’t be targeting to pass JLPT (in this case, N1) anymore. I am not even planning to sign up for the exam this year. Instead, I want to continue learning at my own pace right now, relying on my current level to learn more vocabulary and grammar. I’d still be continuing on my WaniKani grind, though, as it has been proven to help me learn the other aspects of the language. Maybe when I can say confidently “I’m fluent in Japanese”, only then I will try to take the N1 exam.

So what does “learning at my own pace” entails? I am now setting two main “themes” this year: improving my Japanese comprehension from context and improving my ability to produce output in terms of writing and speaking. I refer to them as “themes” and not “goals” because they are more continuous things that I’d like to focus on.

To improve my Japanese comprehension, I’ve been gradually increasing my exposure to Japanese media. On top of the existing YouTube channels I’ve mentioned above, I am trying to expand to watch more channels, to diversify my input. Some additional YouTube channels that I’ve been watching lately are あかね的日本語教室 and けんさんおかえり. Their videos are vlog style, such as traveling around Japan or eating in restaurants — so I find them enjoyable, just like watching variety shows on TV.

Another small change that I did was setting up my phone’s main language to Japanese including the voice of Siri and Google Maps directions. It was a bit daunting at first, but once I got used to it, it turns out I remember most of the menu location anyway thanks to habit. After a while, I also ended up recognizing most of the words based on the kanji and vocab I’ve learned, and I’m surprised how much I could understand. Even when I don’t understand something, and only when I got curious, I’d just open up my dictionary (imiwa?), or use the in-built translation feature.

I also try to follow social media accounts (mainly Twitter) that mainly write posts in Japanese. Whenever I’m interested in something, I try to search social media using relevant hashtags in Japanese, and from then I would try to explore a little bit, and follow the accounts that caught my interest. It also helps to follow accounts of native Japanese teachers, as they usually write in an easy-to-understand Japanese tailored for language learners.

The most important thing is to find content that you’d enjoy and try to watch a video (or chapter?) or two, and try to stick to it as an everyday routine. Sometimes, there are contents that people may say it’s good for learning, but it doesn’t match your taste. That’s alright, everyone has their own interest so you should find what you like. When it’s something you like, the study habit became less than a chore and more of an entertainment.

For example, I mainly like anime OSTs, piano, and music theory as a hobby, so I try to learn song composition terms in Japanese and watch music theory videos by Japanese composers or musicians. Or even as simple as looking up and trying to understand the lyrics of Japanese songs is also a learning opportunity.

As for improving output, I’m taking it slowly, since I was focusing on input last year. For speaking I’ve managed to routinely attend conversation lessons every other week with my tutor whom I found on italki. I had been postponing taking consecutive italki lessons since trying it out last year, but I managed to overcome my pre-lesson anxiety this year, and have been enjoying the lessons so far. I also had a chance to have a couple of interviews (like job interviews) fully in Japanese, and it was a great learning experience.

Aside from speaking, I also try to practice writing tweets (as in posts on Twitter) in Japanese from time to time. The interviews that I mentioned before, also had me prepare some presentation slides & scripts in Japanese, and again it was a good opportunity to put my Japanese skill into practice.

I’m also incorporating kanji handwriting into my study routine this year. I know, there was this whole debate that it’s a modern era, and you wouldn’t need to handwrite kanji, but I’m a bit of an old school as I still write my daily journal entry by hand. I also like the fact that kanji has a set of stroke order on how to write them, so it’s a bit therapeutic for me. For daily review, I’ve been using the worksheets provided by kanji.sh (printing them out, then practicing writing with a pen) and also using the Ringotan mobile app.

Overall, for this year, I don’t have a specific goal to achieve. Instead, I just want to make use of what I’ve learned so far (kanji, vocabulary, and grammar) to level up my comprehension and practice my output more often. This year I won’t have as much time to study as intensively as last year — more on this in a separate post — so I think I’ll just have to make this year less studious and more into an enjoyable immersion.

]]>
<![CDATA[E2E Testing in Next.js with Playwright, Vercel, and GitHub Actions: A Guide Based on Experience]]>https://enreina.com/blog/e2e-testing-in-next-js-with-playwright-vercel-and-github-actions-a-guide-with-example/63b7fa73f5af8b200acd3404Fri, 06 Jan 2023 12:30:13 GMT

I have just spent 2 days — around 4 hours each day — setting up end-to-end (E2E) tests for my Next.js app. I have had a fair share of experience setting up E2E tests for previous projects, with different tech stacks and frameworks, but setting up this kind of test has never been straightforward. Thus, I’m writing this blog post for the future me whenever she sets up yet another project and would like to set up E2E tests again. Although the post format would be a mix between a tutorial and learnings from my experience, I hope this post could be beneficial for you (yes, you as the one who’s currently reading this post).

Table of Contents

Why do I need E2E Tests?

When developing software, writing tests is a means to catch a bug whenever new code is introduced to the code base. There are several types of tests one can set up for a software project — unit, integration, and end-to-end testing.

I had this notion before that writing test is being responsible for your own code, but honestly, I had been putting off writing any test for my project (more about the project below) because it hinders the momentum that drives me to deliver the end product.

Now that the web app has reached beyond its MVP state, and I’m planning on doing a bit of backend migration — I think this is the right time to introduce tests. And I happen to just pick the integrating E2E test for now for my Next.js app.

About The Project Used in This Guide

So, I’ve been developing a simple web app for my Japanese learning journey called Ichi Bun Zutsu. It’s a web app that simply shows one Japanese sentence at a time for reading practice. The learner can then check their understanding of the sentence by showing the English translation of the sentence. The project was initiated mainly for me to learn Next.js and Typescript. It’s available here: the web app and the source code.

Although I’ll be using this project to describe the step-by-step process of setting up E2E testing, you should (hopefully) be able to follow along with any Next.js app.


There are several Javascript library options we can use for writing the test — the most known are Puppeteer (usually with Jest), Cypress, and Playwright. I had had a fair share of experience before both with Puppeteer and Jest, thus for learning purposes I picked up Playwright this time.

Setting up Playwright

To setup Playwright with Next.js, if we’re starting a new project we can use the with-playwright sample app provided by Next.js and use it with create-next-app :

npx create-next-app@latest --example with-playwright with-playwright-app

But in my case (and maybe yours too), I already have an existing Next.js app and would like to add Playwright. We can do the manual setup described in the Next.js documentation, but I prefer the way described in the Playwright documentation:

yarn create playwright
# or npm init playwright@latest

You’ll be prompted with the following questions to choose how you'd like to set up Playwright:

✔ Where to put your end-to-end tests? · tests/e2e
✔ Add a GitHub Actions workflow? (y/N) · true
✔ Install Playwright browsers (can be done manually via 'yarn playwright install')? (Y/n) › true

The GitHub Actions workflow is set to false by default, so if you’re planning to run the tests as CI using GitHub Actions, I recommend setting this to true so the playwright can generate the workflow YAML file as well. We'll modify the YAML file later in this guide.

After the setup these directories and files should have been added:

.github
└── workflows
    └── playwright.yml
tests-examples
└── demo-todo-app.spec.ts
tests/
└── e2e
    └── example.spec.ts
playwright.config.ts

Now you can try running the test examples by running:

yarn playwright test

And the tests should pass, and we can even see the report by running:

npx playwright show-report

I also added "test:e2e": "playwright test" to my package.json scripts field for convenience's sake, so tests could be run with this command as well:

yarn test:e2e

Now, let’s make some adjustments to the Playwright configuration file — playwright.config.ts. The full config is available here, but the important additions are the following:

// playwright.config.ts
const PORT = process.env.PORT || 3000;
const BASE_URL = process.env.BASE_URL || `http://localhost:${PORT}`;

const config: PlaywrightTestConfig = {
	...
	use: {
		...,
		baseURL: BASE_URL,
	},
	webServer: {
    command: `yarn dev`,
    url: BASE_URL,
    timeout: 120 * 1000,
    reuseExistingServer: !process.env.CI,
  },
	...,
}

By adding the baseUrl config, we can omit the full URL when writing the tests and only provide the route. The webServer configuration, on the other hand, is for Playwright to automatically run the local dev server before starting the tests. For more detail on Playwright configuration options, please refer to their test configuration documentation.

Now that we’ve finished setting up Playwright, you can poke around the provided test examples — the one in the tests-examples is a more detailed example test for a todo app. Once you’ve finished exploring, let’s remove them from our repo:

rm tests/e2e/example.spec.ts
rm -R tests-examples

Now, let’s get going on writing our own test.

Writing Tests

Let us create a test for our index page:

touch tests/e2e/index.spec.ts

Let’s start with a simple test. For my web app, the index page would be redirected to the /settings modal for first-time visitors. So I’d like to assert in the test that the redirection happens. Here’s the short test:

// tests/e2e/index.spec.ts
import { test, expect } from '@playwright/test';

test('homepage redirects to /settings', async ({ page }) => {
    await page.goto('/'); // remember -- we don't have to provide full URL as we already set baseUrl in playwright config file
    await expect(page).toHaveURL('/settings');
});

Alright, let’s try running the test using the command, yarn test:e2e and it should pass.

Now let’s expand this test so to be more “end-to-end” to cover the following user interactions (you may want to try the web app to understand the flow better):

  1. The user clicks the SAVE SETTINGS button
  2. After loading, the user should see a Japanese sentence with a SHOW ENGLISH button below it
  3. The user clicks the  SHOW ENGLISH button, and should see the English sentence counterpart

Simple enough? Well, let’s try writing the test:

import { test, expect } from '@playwright/test';

test('index page shows a japanese sentence and a button to show the english translation', async ({ page }) => {
    await page.goto('/');
    await expect(page).toHaveURL('/settings');
    await page.getByRole('button', { name: 'Save Settings' }).click(); 
    await expect(page.getByTestId('japanese-sentence')).not.toBeEmpty();
    await page.getByRole('button', { name: 'Show English' }).click();
    await expect(page.getByTestId('english-sentence')).not.toBeEmpty(); 
});

Playwright provides several ways to locate elements through their Locator API — please check the documentation to find the one that suits your needs. Here, I’m relying on using two types of locators:

  • getByRole to locate the Save Settings and Show English button
  • getByTestID to locate the Japanese and English sentence

On that note, when using getByTestID we would need to add data-testid attribute to the elements, for example on pages/index.tsx in my project:

// pages/index.tsx
...
<Typography data-testid="japanese-sentence" component="h1" variant="h4" align="center">
   <JapaneseSentenceElement sentence={sentence} />
</Typography>
...
<Typography data-testid="english-sentence" variant="h5" align="center">
   {sentence['en']}
</Typography>
...
💡
TIPS: Use Playwright’s Test Generator
Instead of manually writing the test, we can also use Playwright’s test generator to write the code for us. First, run the web app on your local machine in a different terminal:
yarn dev # or npm run dev
then run the codegen:
npx playwright codegen localhost:3000
See Test Generator documentation for more details.

Alright, let’s run the test — run yarn test:e2e and the test should pass.

Setting up CI using GitHub Actions

By using yarn create playwright earlier and opting for GitHub Actions workflow to be added, one might expect that we can just push this to GitHub and the CI should run and tests should pass. It did pass when we ran it locally, right?

So let’s try it, commit the files and push the changes to GitHub:

git add .
git commit -m "chore: set up E2E test using playwright"
git push --set-upstream origin playwright-playground # branch name

Now, in order to trigger the CI job, what should we do? Let’s check the .github/workflows/playwright.yaml file that Playwright has created for us, and you should see this section:

...
on:
  push:
    branches: [ main, master ]
  pull_request:
    branches: [ main, master ]
...

It means the job will be triggered either on a push or a pull-request to the main branch. So let’s try creating a pull request by visiting [your-github-repo-url]/pull/new/[branch-name]. In my case: https://github.com/enreina/ichibunzutsu/pull/new/playwright-playground. Choose Create pull request , and after the Pull-Request (PR) is created, you should see the Playwright tests workflow running. You can click the Details link to see the logs.

E2E Testing in Next.js with Playwright, Vercel, and GitHub Actions: A Guide Based on Experience

And… in the case that the test fails (which it did), the logs should show something like this:

E2E Testing in Next.js with Playwright, Vercel, and GitHub Actions: A Guide Based on Experience

Alright, let’s think a bit. The test had passed on my local machine so why did it fail on GitHub Actions? The answer: Environment Variables.

In order for the web app to work and be able to fetch data from the API, I need to set an API Key as an environment variable. For local development, I set my API key in the .env.local file, which generally should not be committed to Git. I need to set the following variables in order for the web app to work:

SHEETSON_API_KEY=some_api_key
SHEETSON_SPREADSHEET_ID=some_spreadsheet_id
(What’s “Sheetson”? Please check it out here.)

In our case right now, we run a “local” deployment on the GitHub Actions server, but we never let GitHub know the values of the necessary variables. So we’d need a way to pass them without publishing them on the repo itself.

Another preferred option is to run the test against a “preview” deployment, so we won’t need to run the app on the CI job itself. In this case, the environment variables should be set up on whichever deployment platform you’re using. In this post, as I’m using Vercel to host my app, I’ll describe the way to run the test against Vercel’s preview deployment.

Option 1: Run tests against localhost (on GitHub Actions server)

Let’s first try the first option to run the app on the CI job. We first need to store the environment variables as Actions secrets. Basically:

  1. Go to the Settings tab of your GitHub Repo
  2. Click on Secrets > Actions under the Security section
  3. Click on the New repository secret button and fill in the variable name and value

If you need multiple variables set up, simply repeat the steps. In my case I added two secrets to my project:

E2E Testing in Next.js with Playwright, Vercel, and GitHub Actions: A Guide Based on Experience

Then, we’d need to pass these secrets to the workflow by modifying the playwright.yaml file. In the step named Run Playwright tests , add the variables in the env field:

...
- name: Run Playwright tests
  run: yarn playwright test
  env:
    SHEETSON_API_KEY: ${{ secrets.SHEETSON_API_KEY }}
    SHEETSON_SPREADSHEET_ID: ${{ secrets.SHEETSON_SPREADSHEET_ID }}
...

Commit and push the change. Again, let’s check the logs of the workflow on GitHub Actions. After a few minutes — voila 🎉  the test passes!

💡
TIPS: Make sure that the variable name is spelled correctly across all codebase, configuration files, as well on GitHub secrets.

I had spent a few hours trying to figure out why my test was still failing because I set the variable as SHEETSON_SPREADSHEET_ID on the .yaml file, but as SHEETSON_SPREADHEET_ID everywhere else.

Option 2: Run tests against Vercel Preview Deployment

Okay, now let’s try on the second option to run the tests against a Vercel Preview deployment. I personally prefer this option as I already have a Vercel setup for my preview and production deployment, and it would be ideal to have a testing environment as similar as possible to the production environment (which is what preview deployments are for).

I’d assume you also already have Vercel setup for your project — if you haven’t, worry not, as it’s very straightforward moreover for a Next.js app. You can check the quickstart guide here.

Now, the idea is to wait for Vercel’s preview deployment to be completed, and then we would use the preview URL to run our Playwright tests against. We’ll be using a premade Github Action, patrickedqvist/wait-for-vercel-preview@v1.2.0 (repo link) to achieve this. Let’s update our playwright.yaml, by inserting this as the first step of the workflow:

...
steps:
  - name: Waiting for 200 from the Vercel Preview
    uses: patrickedqvist/wait-for-vercel-preview@v1.2.0 # <https://github.com/patrickedqvist/wait-for-vercel-preview>
    id: waitForDeploy
    with:
      token: ${{ secrets.GITHUB_TOKEN }}
      max_timeout: 300
  ...

Also, we’d need to use the outputted preview URL as the base URL for our playwright tests. Let’s set this as env in the Run playwright tests step:

...
- name: Run Playwright tests
  run: yarn playwright test
  env:
    BASE_URL: ${{ steps.waitForDeploy.outputs.url }}
...

The full playwright.yaml for my project can be checked out here.

Also, let’s modify our webServer field in our playwright.config.ts:

...
webServer: process.env.CI ? undefined : {
    command: `yarn dev`,
    url: BASE_URL,
    timeout: 120 * 1000,
    reuseExistingServer: true,
},
...

This way, when we run the tests on our local machine, the local dev server would still be started.  Though, on GitHub Actions, we don’t need it to be run as the tests would instead be run against the preview URL from Vercel.

Alright, let’s commit and push the changes. Then, check the logs on the PR — and if nothing is broken (e.g. Vercel Deployment fails), the test should pass.

Now we have our E2E tests and CI set up, and we can merge the change to the main branch, which you can do through the Merge pull request option on your GitHub PR.


Summary

I hope the experience/guide I shared above would be beneficial for anyone who wants to start writing E2E tests for their Next.js app. I believe Playwright provides a good example of a testing library that makes it easy to incorporate into our project. It would generate necessary starting sample tests, configuration files, and even a GitHub workflow setup. Of course, we’d need to adjust them to suit our needs.

In the post, I described my experience of setting up E2E tests and the overall process are:

  1. Integrating the testing library (in this case Playwright)
  2. Writing the tests
  3. Run the tests locally
  4. Setup the tests to run on a CI environment (in this case GitHub Actions)
  5. [optional] Set to run the tests against a preview deployment (in this case from Vercel)

And — that’s it!

]]>
<![CDATA[A Year of Retrospective, 2022]]>The end of the year is the time when content with the theme “2022 Review” spawns everywhere in many kinds of forms: from articles, blog posts (like what you’re reading right now), Instagram highlights, and Spotify Wrapped, to anything we can think of.

While I am

]]>
https://enreina.com/blog/a-year-of-retrospective-2022/63aee9529db287162623ad29Fri, 30 Dec 2022 14:07:52 GMT

The end of the year is the time when content with the theme “2022 Review” spawns everywhere in many kinds of forms: from articles, blog posts (like what you’re reading right now), Instagram highlights, and Spotify Wrapped, to anything we can think of.

While I am not someone who believes that the past 365 days are only worth it when we publish a summary of them, I believe this year is special. It’s a different kind of year for me, thus it deserves a retrospective of its own.

If you’ve read my post before — this year is the year I’m not in any kind of formal employment or education. While the term I use as an excuse is “career break” or “sabbatical” — but really, let’s say blatantly that it’s my unemployment year. This may sound as selfish (and it is!): it’s the year I got to do what I want to do.

And what did I get out of “doing things I want to do”? Below, I break down the highlights of my unemployment year.

Japanese Learning

This one could probably be a standalone post, but I spent most of my waking days this year improving my Japanese. Here’s my accomplishment:

Passed the JLPT N3. I managed to pass the Japanese Language Proficiency Test (JLPT) N3 which is equivalent to, if I quote the linguistic competence at the back of my certificate, “The ability to understand Japanese used in everyday situations to a certain degree”.

That being said, I didn’t pass with flying colors, and I still think I was just lucky — but still, it gives me a self-affirmation of my effort. On top of that, I also attempted the N2 level in December. The result hasn’t been out, and I’m not sure about passing this one, but one can only hope, can they?

Learned +1000 Kanji & +3000 Vocabulary. I couldn’t do this without the amazing web app: WaniKani. If I could afford the subscription back then, I should’ve started WaniKani a long time ago. I managed to reach Level 35 (out of 60) in 49 weeks, and the result is apparent whenever I came across a Japanese text in the wild. I still need to “focus” and slowly read, but if I try, I could recognize most of the kanji I see. Hopefully, I can clear out all remaining levels in 2023.

Finished 1 Japanese novel. 1 seems a few, but I deserve to put it here because it’s the first Japanese novel (not a graded reader nor a manga) I’ve ever finished. I did have the aid of its audiobook, but it’s an accomplishment nevertheless (I posted a review of the book here). On top of that, I’ve started reading a couple of other Japanese novels — but have put them on pause for now. Hopefully, I can finish them in 2023 and read more Japanese novels as well.

Had a few Japanese conversations. I mentioned before in my N3 review post that I lack speaking abilities as I haven’t taken any Japanese lessons for a while. I am lucky this year that I got the chance to test out my speaking abilities: first in a trial lesson on italki and the second one in some kind of recruiter interview (which I thought would be in English, but we ended talking full in Japanese for the whole 30 minutes).

This kind of 1-on-1 video call gives a boost of confidence whenever I could get my thoughts across in Japanese, and I could understand what the other party is saying. Although for an introvert like me, talking to people, especially in a foreign language is tiring, I do hope I could have enough courage (and money? lol) next year to get more chances to talk in Japanese.

Piano Arrangement & Covers

I started picking up the piano keyboard again last year, in the despair of pandemic isolation. I already had an Instagram account dedicated to my piano recordings, and I posted videos there once in a while. This year, I decided to take things up a notch:

Started a YouTube channel.  I started the channel in April, and by the end of the year, I’d managed to produce and upload a total of 49 piano videos consisting of 23 full videos and 26 YouTube Shorts. The 50th video is still a work in progress, though I think it’ll be finished in 2023.

The channel has gained a shy number of +200 subscribers with +50K total views and +500 hours of watch time. More importantly, I enjoy the whole process of producing the videos — from working on the arrangement, practicing the piece, recording, editing, and publishing. Hopefully, I can produce more piano covers and keep growing the channel next year.

One TikTok video gained +46K views in 2 days. I also started a TikTok account to upload short videos, as a means to widen my audience. One day I uploaded this short simple piano cover (right hand only) of a popular song from the Japanese duo YOASOBI. I also added a “falling piano blocks” effect on the video (just see it here if I described it poorly). Over 2 days, suddenly the video views shot up to +40K, and now I could not avoid doing a full version of the song (which I’m still working on right now).

Published 12 piano solo arrangements on MuseScore. I managed to finish the arrangement of 12 songs (mostly TV-size versions of anime openings or endings), and I’m really glad that people are adding them as their favorites on MuseScore. I hope I can work on longer songs next year, and maybe, someday publish an original composition as well.

Getting Back into Coding

I know. I mentioned in my previous post that I would like to stay away from coding for a while while I’m on this career break. But it turns out I missed it more than I thought I would. This time tho it’s different — I write code for my own satisfaction, so it’s less burden and more enjoyable. Also, I rediscover the joy of solving problems and building things, which I used to really enjoy back in my university and early career days.

LeetCode Grind; Earned 3 “study plan” badges on LeetCode. Around August, I decided to really start getting back into coding slowly. I started the journey by starting to grind my problem-solving skill on LeetCode. For those who are not familiar with LeetCode — it’s an online platform for practicing coding problems, designed to prepare yourself for coding interviews. I worked on a couple of LeetCode study plans — solving a total of 132 problems.

Developed Ichi Bun Zutsu, a web app for Japanese reading practice. While I do enjoy the satisfaction that comes from doing LeetCode daily, I also want to refine my technical skill by learning something more practical. I pick up TypeScript and Next.js and decided to build a web app that overlaps with my other interest — Japanese learning. While it’s only a hobby project, I did really enjoy thinking through the features, designing the UI, and planning a simple architecture, while learning a lot of things along the way. The web app is available here, and the source code is available here. Currently, I still have a few other planned features in mind, which I hope I can start working on in 2023.

Brush up on interview skills. Getting back into coding gives me some epiphany that I might want to return to the workforce sooner rather than later. I’m not giving myself any strict deadline, but I’ve been getting more chances to attend a few interviews, in the form of technical, and behavioral interviews, as well as live coding sessions. I haven’t had any offers yet as of now, but I’ll keep improving myself and focus on doing my best.

I’m still not sure where would I be in 2023 as a software engineer, there are several options I have in mind: maybe working for a company, maybe starting working as a freelancer, or maybe starting a journey of becoming a solopreneur. Who knows? I’ll do what I know I can do for now and see where the path goes.


Overall, 2022 was a unique, one-of-a-kind year for me. I got to wear many hats and start defining myself as someone who enjoys multiple things rather than just one label. I hope I can continue doing things I enjoy next year. Surely though, there might be a time, one day, that I might not enjoy the things I enjoy right now — but I’ll surely remember 2022 as a time that I did enjoy them.

]]>
<![CDATA[A Book Review: Mata, Onaji Yume wo Miteita]]>After passing the JLPT N3 last July (yay!), I decided to further improve my reading level by consuming more Japanese literature. This novel — また、同じ夢を見ていた (I Saw the Same Dream Again) by 住野よる (Sumino Yoru) — is

]]>
https://enreina.com/blog/book-review-mata-onaji-yume-wo-miteita/633a55920f04ce11cb339ff4Mon, 03 Oct 2022 03:38:53 GMT

After passing the JLPT N3 last July (yay!), I decided to further improve my reading level by consuming more Japanese literature. This novel — また、同じ夢を見ていた (I Saw the Same Dream Again) by 住野よる (Sumino Yoru) — is the first Japanese novel I managed to finish reading. When I say a Japanese novel, I mean that it’s not a manga, a graded reader, or a children's book.

The reason I picked up this novel is that I’ve come across the title multiple times whenever I searched for a book recommendation suitable for Japanese learners around the N3 level. Also, I like the cover — well they say to not judge a book by its cover, but really, the cover of Mata, Onaji Yume wo Miteita just compels me to even buy the paperback version (I’m usually more of a Kindle version kind of person). The cover, with a kind-of-bluish-cool tone, depicting the back of a girl with a cat on a balcony, captures the tone of the story perfectly.

The book also has an audiobook version, and it is actually what helped me to finish the book in less than two weeks. At first, I attempted to read the first few pages without the audiobook, but it took me quite some time to even finish the first chapter because I had to reread most sentences a couple of times and look up for some kanji readings.

Then, I signed up for a 14-days free trial of all-you-can-listen on audiobook.jp and start listening to the audiobook while reading the paperback version. Turns out I could keep up and understand most of the story that way. Furthermore, the audiobook is really great — they have multiple voice actors assigned to each character of the book. The voice acting is really great as well — it feels like listening to a drama CD.

The story’s protagonist is a grade school girl, Koyanagi Nanoka. Nanoka does not have any friends around her age, but she has a routine to meet up with her range of friends: a cat with a short tail, a woman with a mysterious occupation, a middle school girl who cuts herself, and a grandma who makes sweets and snacks for her.

Nanoka was assigned a class assignment by her school teacher, Hitomi-sensei, to think about what is happiness to her. The story mainly revolves around Nanoka developing relationships with each of her friends and eventually her classmate as well, while discovering true happiness. The story is told in a simple way from the perspective of Nanoka, thus she uses words that she, a grade-schooler would only know.

Nanoka as a character is very relatable which would make readers be sympathetic to her. She is clever for a girl of her age, but she is not that smart when it comes to people. She even went as far as not being want to do anything with other people after a conflict with her classmates. But of course, that wasn’t good, thus the people around her helps her to realize this.

I also think that the book laid out enough hints, albeit some are a bit early, on what is really going on, through Nanoka’s conversation with her friends. The story title itself also gives away some of this. The revelation was not a huge plot twist per se, and rather than the feeling of shock, it’s more of a satisfying feeling that I get at the end of the book.

しあわせは歩いてこない だから歩いてゆくんだね
Shiawase wa aruite konai, dakara aruite yukunda ne
Happiness doesn’t come by itself, that’s why we walk towards it

The book also has quotes on life and happiness sprinkled throughout the story. The above lyrics, for example, is Nanoka’s favorite song that she sings when she walks with the cat. When I looked it up, I found out that it’s from an actual popular song titled 三百六十五歩のマーチ (365 Days March).

There is also a favorite catchphrase (kuchiguse) of Nanoka that starts with:

人生とは。。
Jinsei to wa..
Life is like a ...

which she learns from the comic book “Peanuts” (yes, Snoopy and Charlie Brown). Other popular media references were also mentioned throughout the book which kinda gives me a moment of “Oh I know that one”. Some that I recognized are the mention of The Little Prince, Kiki’s Delivery Service, Tom Sawyer, and Huckleberry Finn.

Overall, I really recommend this book to anyone that likes a simple story with a strong message. I started reading for the sake of improving my reading but ended up finishing the book because the story is really profound and nicely written. The feeling that I got when I finished reading the book is similar to when I finished watching the animated movie Soul by Disney Pixar (it’s a totally different story, but a kinda similar message was delivered).

If you’re learning Japanese and around N3 level or above, try to read the first few pages (the ebook sample are available for free on Amazon.co.jp), and decide from there. If you struggle at the first few pages (like me), try listening to the audiobook to assist the reading. Even if you’re not learning Japanese, I’d still recommend reading the English version of it for the sake of the story.

]]>
<![CDATA[How I Build a Habit to Level up My Japanese (and Passed the JLPT N3)]]>One of the things I have had in mind to do in my career break is to improve my Japanese.

My current Japanese level is very vague. I passed the JLPT N4 (equivalent to the upper elementary level, or A2/B1 in CEFR level) in 2016 — but since then

]]>
https://enreina.com/blog/how-i-build-a-habit-to-level-up-my-japanese-and-passed-the-jlpt-n3/6309d7e1428ece0a48096b42Sat, 27 Aug 2022 08:54:18 GMT

One of the things I have had in mind to do in my career break is to improve my Japanese.

My current Japanese level is very vague. I passed the JLPT N4 (equivalent to the upper elementary level, or A2/B1 in CEFR level) in 2016 — but since then I haven’t taken any serious studying besides the occasional pattern: download an interesting app related to Japanese learning; use the app for a week or two; work gets busy; forgot to use the app at one point and never use it again (to the extent that’s it’s still installed till now).

As I am now on a career break, thus having no excuse like “work gets busy” anymore, I have decided to seriously improve my Japanese this year.

To “gauge” the improvement,  I decided to take the JLPT N3 (equivalent to Intermediate Level, or B2/B2 in CEFR level). Signing up for the exam is not easy here. The quota is limited here in Indonesia, and the exam is very popular. The website always crashes when registration is open. Thankfully I managed to sign up and secure a seat for the July exam.

The exam result has just recently come out. I passed the exam, though not with an outstanding score, I acquire the N3 certificate nevertheless. It really gives the assurance that I’ve actually made a progress in improving my Japanese.

In this post, I want to share how I studied, especially on the resources that I use and how I incorporate habit building to ensure I study Japanese every day (well, almost every day) — with the JLPT N3 in mind as a goal/checkpoint.

What is JLPT?

JLPT stands for Japanese Language Proficiency Test, or in Japanese it’s referred as Nokken (shorten from Nihongo Nouryouku Shiken) is the most popular test to evaluate one’s level of Japanese. It has 5 levels, from N5 as the easiest to N1 as the hardest. I won’t go into more details about JLPT, but if you’re interested and want to know more I’d recommend reading an article on Tofugu: What is The JLPT?

My Learning Style

It might help to describe a bit about my learning style before jumping to the resources that I use to study Japanese.

I mentioned earlier that I passed the N4 level around 6 years ago, and even then my learning of the Japanese language is a mix between formal classroom study and self-study. After passing the N4, I dropped (i.e. didn’t continue) all forms of classroom study. Since then, I've continued to learn Japanese by myself in my leisure time. Before this year, it was really just a “hobby” — studying Japanese on the side with no particular goal in mind, with no structured habit or so.

Only by this year, I decided to study more seriously, exposing myself to more of the Japanese language, and researching the appropriate resources that suit my learning style.

Also, I’d really recommend reading this write-up by u/SuikaCider that they shared on Reddit: A Year to Learn Japanese. It has incredible details on stages of learning Japanese that I wished I read in my early years of Japanese learning.

Resources

Alright, without further ado, here’s a list of resources that I’ve been using. Disclaimer: I’m not affiliated with any of the products, and these are what work for me (and they may not work for everyone).

  • WaniKani. A web application for learning kanji and vocabulary that I wished I use when I started learning Japanese. It’s not free, but I think it’s really worth it. It sets you up with a ready-to-use SRS system and mnemonics, and you can just focus on what really matters: learning & memorizing kanji. I’ve fairly learned more kanji in the 8 months of using WaniKani than in the 8 years of Japanese study (well, to be fair the studying in those 8 years wasn't intensive).
  • KaniWani. This is a companion website to WaniKani. Where reviews in WaniKani present us a kanji (or vocab) where we have to answer with its meaning and reading, KaniWani presents us the English vocab and asks us to answer in Japanese. I’m not sure if this helps with the JLPT exam, as in the exam it’s more about comprehension (input) rather than output — but if you’d like to be able to reproduce words, knowing the English equivalent, I’d still recommend using KaniWani along with WaniKani.
  • Bunpro. Another web application (yeah! I love these apps) that also uses the SRS method, but for memorizing grammar points (bunpou, hence the app name bunpro). The grammar points are also nicely organized according to their JLPT level, so you can jump straight to N3 if you already know N5 & N4 grammar.
  • Shin Nihongo 500 Mon N3 (新にほんご500問N3). A friend that has already passed N3 kindly lent me this exercise book. The book — as the title indicates — has 500 questions on kanji characters (文字), vocabulary (語い), and grammar (文法). What I really like is how the book is organized: every page has a total of three questions, one for each language aspect, and on the back of the page we can immediately read the correct answer and a brief explanation. You’re expected to work on 15 questions (5 of each language aspect) each day, and by the end of every week, you would count the number of correct answers. If you only have a few correct answers, you’re encouraged to repeat and go through the questions all over again.
  • Nihongo Soumatome N3 Dokkai (日本語総まとめN3読解). The Shin Nihongo 500 Mon that I mentioned previously is actually a companion to the main 総まとめ (soumatome) set for JLPT study. The set has five books for each JLPT level covering grammar, kanji, reading comprehension, vocabulary, and listening comprehension. I only have the book for practicing reading comprehension (dokkai / 読解). I actually bought the book after I’d already taken the N3 exam. In the exam, I had to randomly guess the answers to around 8 reading questions because time was running out. Knowing that I really need to improve my reading speed, I bought the book and have been doing the reading exercise daily since then.
  • YouTube. I mostly use YouTube to watch grammar explanations when I had a hard time understanding the grammar point on Bunpro. For grammar, I’d recommend the 日本語の森 (Nihongo No Mori) channel. Aside from learning grammar, I also recommend watching Manga Fermilab. They present and discuss informative things using manga videos with Japanese dub, so you can learn reading and listening at the same time while also learning interesting topics.
  • Anime. I used to be an avid anime watcher when I was younger, and haven't watched that much for some time. But because of the pandemic, I’ve recently just started watching them again. I watch most anime on Netflix and Bstation (a.k.a Bilibili). When I watch them, I try to turn off the subtitle or turn on the Japanese closed caption whenever it’s available. Even when I just want to relax and ended up using the English subtitle, I still get an “aha” moment whenever I recognized a new word that I’d just recently learned.
  • Novels / Stories / Manga in Japanese. What I have read (or currently reading) in Japanese so far:
  1. 星の王子さま(Hoshi no Ouji Sama). It’s the Japanese version of "The Little Prince” (originally in French I believe). I picked up the book because it’s fairly short and I’ve already read the English version a couple of times. I also listened to the audiobook, but unfortunately, the edition between the audiobook and the book that I own is different, so I couldn’t read along with the audio.
  2. Japanese Short Stories for Beginners. I think this is one of those books which gives you a sense of accomplishment for early Japanese learners. It consists of 20 short stories, and at the end of each story, there are questions to ensure your comprehension.
  3. Intermediate Japanese Short Stories. This is from the same publisher of Japanese Short Stories for Beginners, it has the same format but consists of only 10 short stories with more difficult words.
  4. Happiness (ハピネス) Volume 1. This is a manga I read along with the WaniKani book club. I haven’t continued to the next volume yet, as the story does not quite suit my taste. But it does not have much dialogue, so it’s a very nice light read for people who want to try reading manga in Japanese for the first time.
  5. Yoru Kafe (夜カフェ) Volume 1.  This is a light novel that I read also as part of the WaniKani book club. Unfortunately, I’ve only managed to read up to chapter 6, and I haven’t picked it up again because I'm not engaged enough with the story. I may pick it up again when I’m in the mood later (and maybe ended up like it, who knows).
  • Podcast. I also sometimes try to listen to Japanese podcasts. My favorite podcast is called Nihongo Switch. It is intended for intermediate to advanced learners and is 100% in Japanese. It also helps that the host provides transcripts for each episode on her website, so I can read along the transcript while listening to the episode.
  • JLPT N3 Listening Exercises available on jtest4you. For listening exercises intended for the JLPT exam, I use this website. It has around 22 sets, though I didn’t actually go through it all by the day of the exam. The exercises help to give a sense of what the listening section would be like in the exam.
  • JLPT N3 Practice Test & Workbook. I use this practice test and workbook around two weeks before the exam to get me used to the exam sections and ensure I can adhere to the time limit (this is when I’ve also realized that I’m still slow on the reading section).

That seems to be quite a lot of resources, right? Luckily (or unfortunately?) for Japanese learners, the resource available online are abundant. But that also means there is too much to explore, and we might be compelled to keep “searching” until we got the “right” one for us. Or even trying to study using too many things at the same time. I think it’s best to just stick to two or three things for a certain period of time, like a week or two. If you feel like you’re improving, then continue. If you feel like it’s not helping with your study, feel free to drop it or pick it up again for a later time.

Timeline

Here’s the rough timeline of my journey toward the JLPT N3 Exam:

  • End of January: Researching and trying out several resources and decided which one to use continuously
  • February: Start using WaniKani & KaniWani
  • March: Start using Bunpro
  • April: Sign up for the JLPT
  • May: Start working on the exercises in Shin Nihongo 500 Mon N3
  • June: Try out the JLPT N3 Practice Test & Workbook
  • July: Took the JLPT exam. I almost couldn’t take the exam, because I was recovering from COVID (I caught it 2 weeks before the exam, yikes, such luck!). But in the end, I managed to recover and was able to take the exam.
  • August: JLPT Result — Unexpectedly I passed! As expected, my lowest score is in the reading section: with only 26/60 points (thankfully the sectional passing grade is 19 points). I guess the fact that I passed was contributed by how I did in the other sections — I got 36/60 and 46/60 for language knowledge (vocab & grammar) and listening respectively. It’s not an outstanding score, I know, but I’m still very happy that I actually passed.

Habit Building

Alright, the post title says “How I Build a Habit”, but really how I did do it – you ask? I have been mostly trying to apply what I’ve learned from reading Atomic Habits — it’s a great book about habit building in general. But TLDR — I try to keep the following principles to build my habit:

  • Try to do it every day, even if it’s just a minute. There are days that I’m too lazy and don’t have the motivation to study. This is when I try to remind myself, that even if it’s just a minute — just do it, either by reviewing a single kanji or listening to a short Japanese podcast.
  • If I miss a day, don’t sweat — just make sure to pick it up again the next day. If I do end up missing a day without any study, I have to keep it in mind the next day. In order to not break the “habit chain”, I try to not miss a habit more than a day.
  • Keep a daily journal. A daily journal really helps to keep track of my progress and gives me a sense of small accomplishment every day. It also supports the previously mentioned mindset to do the habit every day — whenever I have an “empty” log that day, I would have the itch to fill it out by studying even just for a minute.

With those principles in mind, I gradually include the above-mentioned resources in my daily studying schedule. I first started by using only WaniKani every day for a couple of weeks. After I feel that the habit starts to stick (i.e. I don’t need to gather up much effort to start using it each day), I add KaniWani to my daily study. I do the same thing as well for Bunpro and textbooks. In the end, I ended up with the following routine that has settled for quite a while now:

  • 5.30 AM — wake up; feed the cat; and go for a walk
  • 8.00 AM - 9.00 AM — Brew coffee & breakfast
  • 9.00 AM - 10.00 AM — Read any of the designated Japanese reading materials (novels, manga, or textbooks). I also incorporate non-Japanese books (English or Indonesian) for leisure to avoid burnout
  • 10.00 AM - 12.00 AM — I start reviewing Kanji, Vocabs, and Grammar on WaniKani, KaniWani, and Bunpro
  • 13.00 AM — 16.00 AM — After lunch, I usually pick one (or more) of these: watching Anime, YouTube (either 日本語の森 or FermiLab), and/or listening to some Japanese podcast
  • Throughout the day I occasionally checked in to WaniKani/KaniWani/Bunpro every two to three hours to do reviews. Especially at the beginning, I used to do reviews on WaniKani almost every two hours (it was very addictive at the beginning, believe me). But now, I’ve reduced the reviewing time to around once or twice daily.

What to Do Next

There are a couple of things that I’d like to do next:

  • Practicing output (i.e. speaking and writing). JLPT doesn’t test speaking and writing ability so even though I’ve passed the exam, I honestly don’t feel comfortable yet if I had to converse 100% in Japanese. This is what I’m trying to work on from now on — I’m currently looking at several options like trying out italki or other similar platforms.
  • Road to N2. I haven't stopped using WaniKani and Bunpro even after the exam as I’m aiming for N2 as my end goal (for now). Maybe passing the N2 in December is a bit far-fetched considering the difficulty, but I will try to sit in the December exam just to check how well I’m doing so far. Hopefully, I can write a post soon about my journey towards N2.
]]>
<![CDATA[Career Break and Blog Reboot: What am I, If I am Not a Software Engineer?]]>6 months ago, I resigned from my job and decided to take an indefinite break from my software engineering career. It was not an overnight decision. On the contrary, I came to the decision after constant self-doubt, built up over the last 3–4 years throughout my master'

]]>
https://enreina.com/blog/blog-reboot-what-am-i-if-i-am-not-a-software-engineer/624cf8d13ecfbd133b990148Wed, 06 Apr 2022 02:24:30 GMT

6 months ago, I resigned from my job and decided to take an indefinite break from my software engineering career. It was not an overnight decision. On the contrary, I came to the decision after constant self-doubt, built up over the last 3–4 years throughout my master's study and my day-to-day job as a software engineer.

The burning questions were, and probably still are: What am I, if I am not a software engineer? What do I do if software engineering, and might as well, tech in general, is stripped away from me?

I have been a self-proclaimed tech enthusiast for most of my life. In high school — or even way before — I always knew that I wanted to have an occupation in the tech industry, not specifically as a software engineer, but I just wanted to code for a living. But not long after I could proudly say “I am a software engineer”, I started to have some self-doubts — I’m not really sure if I want or am suited, to work in the tech industry for a lifetime.

I just lost the spark and the enjoyment that I used to have when I code to build things. It was not fun anymore. I didn’t know when it started being a burden, but at one point, every morning I woke up, I dread the thought of having to work like that for the rest of my life. I tried to convince myself that working is not always about having fun, it’s just a part of being an adult. However, there was always an inner voice that kept saying that it wouldn’t be fair to anyone, especially myself if I continue to work like that.

Then I realized: if I do end up with the answer to the question, “What am I? What do I do ( for a living)?”, I would then label myself solely as one thing — my job — and it would lead to the same problem with how I’ve labeled myself as a software engineer until now. I see myself as someone who couldn’t do anything at all outside the tech world. That was the main thing that has been holding me back from quitting the tech industry — I was afraid that I would be nothing if that one sole identity was stripped away from me.

So, after trying to hold on for quite some time, I decided to take a leap of faith and pluck up the courage to take a break from my career. Although I wouldn’t say I have “quit” the tech industry, I’m still glad that I had the resolve to let go. For me at that time, letting go means resigning from a well-paying job overseas and moving back to my home country.

So, there I was. Back to square one. Unsure of what to do next.

However, once I put software engineering out of the equation, it’s easier to realize that I do have other things that I could do — or for a better phrasing — things that I would like to do.

It turns out that I enjoy doing many kinds of things, from reading books, playing the piano, watching movies & animation, to learning a language. I am no expert at any of these things, but I enjoy them nonetheless. The interest comes and goes as a cycle — one time I could really spend a whole week learning a piece on the piano, and then I could spend another week trying to read a manga in Japanese.

After around 6 months of being unemployed, with the first 2 months spent on traveling and getting settled back in my home country, I gradually settled into a routine. My days are filled with things I sincerely enjoy doing. I start my day with a morning walk, then brew a cup of coffee, take a course on music theory, brush up my Japanese, and so on. I really feel that the weight on my shoulder has been lifted — I could now take my time to do the things that I want to do and not the things that I have to do.

However, I am still not quite sure where all of this will take me, so there is still some anxiety left about the future. That’s why I try to have some kind of progress tracker by writing a sabbatical journal about the things I do and learn every day. The journal helps me to give a self-affirmation that I am still moving forward, albeit slowly.

The reboot of this blog is, in a way, an expanded version of that journal. I want to have some kind of medium to output my thoughts and findings.

My writings would be personal, as they are intended to be, but I do hope they can somehow appeal to any readers who share some of my interests, that’s why I decided to publish them as a blog. I’ll try my best to give appropriate tags to the posts, so an interested reader can easily find things that are relevant to them.


It seems, on the surface, that I have wasted my years of effort — on pursuing my master's degree abroad and securing a decent job. But I try to not think about it that way. The experience has helped me to realize that there is more to life than just one single goal or occupation. I want to treat myself better by giving myself a chance to take a break from all the stress and explore other things outside the tech industry. I just want to have faith that all of these would lead to something: either recovering my passion for tech or paving the way to an entirely different career path.

]]>
<![CDATA[To Be an MSc Student or Not to Be, That Is the Question — or Is It?]]>https://enreina.com/blog/to-be-an-msc-student-or-not-to-be-that-is-the-question-or-is-it/6245826873c4d60d3ca96d11Sun, 30 Jun 2019 17:00:00 GMTMy longest commitment in my life was my undergraduate study: in the span of 4.5 years, I did not ‘quit’ and thrived for the goal of graduating as a Bachelor of Computer Science. Even I dropped out of ‘formal’ elementary school — which supposed to take 6 years in Indonesia — after finishing 4th grade.

How much time should you be committed to something so you can claim yourself as “a commmited person”?
MSc: Yes or No?

My office work was no better. I have 2 real work experiences listed on my CV (real as in employed by a certain company), and the longest one was my most recent one prior to my master study: 1.5 years of working as a software engineer for a friend-turned-into-CEO’s startup company.

The first few months of work were exciting for me, I got to learn new things every day with new challenges to solve. But then — as cliché as it may seem — nothing lasts forever. The excitement tones down as every day’s activities turn into routines, and I feel like my skill set was not growing. It’s just the same thing I had to do every day. It was boredom.

MSc as an Alternative “Career” Path

That was when I started to consider taking another path: taking a master degree. Again, my reason was not solely because “I want to gain more knowledge..and so on” (well it is true to some extent), but it was mostly because I felt stuck on the same position and needed a change of pace.

So that’s why I decided to take a chance by working on my application to an MSc programme. As I wasn’t really sure on what specialization that I would want to take back then, I slimmed down my university options to one — TU Delft — which offers an MSc in Computer Science programme without strict specialization (at least when we start, by the second year we need to decide in which research group we’d like to work our thesis in).

Then, I also started to seek possible scholarship options, back then the options were either LPDP, Beasiswa Menkominfo, and TU Delft Excellence Scholarship. Note that taking an MSc degree without scholarship would not be an option for me, it was way more reasonable for me to figure out how to not get bored in my job while being paid, rather than spending a fortune for a Master degree just to be “not bored”.

There was another condition which I imposed on myself: I had to work as hard as possible to get accepted — if by the end I didn’t get admitted and/or didn’t acquire a scholarship, I would take it as a sign that MSc was not the way for me.

Results?

I honestly felt really lucky back then: the first time was when I got my acceptance letter and the second time was when my scholarship application got nominated and eventually be selected as one of the Excellence Scholarship recipients. My application for the Menkominfo scholarship was in fact got rejected, which I almost took a sign to give up on my pursuit towards a graduate study.

Takeaways

This post is not the kind of post like “many failures come before success” type of post. This post is just to show that sometimes you don’t really need a strong “why” to do something. You just have to do it — even boredom can be the most ‘logical’ reason for you to take a step forward.

Sometimes for some people, you don’t have to have a “reason” to take a graduate degree (or any other life choices). “Just because.”

No, I am not saying that you should take a master degree if you’re bored with your current job (gosh, you should be grateful you actually have a job). A master degree is not for everyone. It is also not necessary. It’s just if you feel stuck — just like me back then — do check your available options.

]]>
<![CDATA[Sakura]]>What’s your reason for coming to japan?

I want to see the cherry blossom blooms in Japan with my own eyes.

And yes the dream was worth a wait. I don’t know since when I had this dream to see the cherry blossom blooms in Japan,

]]>
https://enreina.com/blog/sakura/62457ffb73c4d60d3ca96cf8Sun, 05 Apr 2015 17:00:00 GMTWhat’s your reason for coming to japan?

I want to see the cherry blossom blooms in Japan with my own eyes.

And yes the dream was worth a wait. I don’t know since when I had this dream to see the cherry blossom blooms in Japan, but maybe because of watching many beautifully drawn anime with cherry blossom in it (e.g. 5 centimeters per second), the idea of seeing it with my own eyes has been in my mind for a long time.

A vector image of cherry blossom that I made with Inkscape long ago.
A vector image of cherry blossom that I made with Inkscape long ago.

It was a matter of time that I got to fulfill this one dream (or bucket list, if I may say it) of many others.  I was really excited (and nervous) when April was coming because the sakura were going to bloom around end of March until beginning of April. Seeing sakura for me is like seeing lanterns for Rapunzel (yes I am referring to Disney’s movie, Tangled).

Rapunzel: I’ve been looking out of a window for eighteen years, dreaming about what I might feel like when those lights rise in the sky. What if it’s not everything I dreamed it would be?

Flynn Rider: It will be.

Rapunzel: And what if it is? What do I do then?

Flynn Rider: Well,that’s the good part I guess. You get to go find a new dream.

Haha! Enough of my cheesy writing! Let’s get on to some photos! My favorite photos were taken along Kanda River (神田川) from Takaido Station to Meidaimae Station. It was around 4.5 km (one and a half hour walking if you often stop and take some photos) between those stations and it was an amazing morning walk to see and experience showers of sakura petals.

Sakura along the Kanda River.
Sakura along the Kanda River.
It’s like a scene out of an anime.
Close up version of pale pink version of sakura
Close up version of pale pink version of sakura
Sakura petals shower make the road look like it's covered with pink carpet.
Sakura petals shower make the road look like it’s covered with pink carpet.
'Weeping' sakura
‘Weeping’ sakura
A pinker version
A pinker version

Other than Kanda River, I also went to Ueno Park (just strolling along the park, because it was too crowded to sit down), Asukayama Park (hanami with several YSEP students), and also just today I went to Yoyogi Park (hanami with other several YSEP students). Oh there are actually also some cherry blossom in Tokodai (Ookayama campus). I didn’t take many photos at those places and were just enjoying the blissful moment. Cherry blossoms are so much more nicer to see with your own eyes anyway than through some photos (or I am no good of taking photos).

There are still ton of places in my list that I want to go to see for ‘hanami’ (literally means flower seeing) like Shinjuku Gyoen, Chidorigafuchi, etc. I don’t know if I can visit all of them before their season is over.

桜が大好きです!

Would be nice if I can see them again next year (or every year) 😀

]]>
<![CDATA[Short Intro: An Exchange Student in Japan]]>Hello and greetings for you, readers! So yeah basically I am going to start writing in English from time to time especially when writing about my story here in Japan as a YSEP Student. I was putting off this blogging in English thing for weeks now because I feel most

]]>
https://enreina.com/blog/short-intro-an/624584ed73c4d60d3ca96d44Tue, 28 Oct 2014 17:00:00 GMTHello and greetings for you, readers! So yeah basically I am going to start writing in English from time to time especially when writing about my story here in Japan as a YSEP Student. I was putting off this blogging in English thing for weeks now because I feel most comfortable writing in ‘informal’ Indonesian language (which I always use when I write previous posts in this blog), but for the sake for my blog to be read by non-Indonesian, I’ll try my best.

If you are reading my blog for the first time (or you don’t understand the previous posts which are in Indonesian), let me introduce myself for a bit.

My name is Enreina Annisa Rizkiasri, but people usually calls me Enreina or Reina (either is fine). I am currently a fourth year bachelor student in Faculty of Computer Science, Universitas Indonesia and also right now an exchange student at Tokyo Institute of Technology (Tokyo Tech or Tokodai). I am participating the Young Scientist Exchange Program Focused On Research and belongs to Murata Laboratory, Department of Computer Science in Tokodai. The program will last for a year so I have many things to blog about life as an exchange student in Japan.

So it has been like almost 50 days that I have been living in Yokohama-shi (it’s actually 48 days, I know, I have been counting it with my phone’s lock screen widget). I came to Japan on the 12th of September (and if you understand Indonesian and would like to know my first three days in the country, you should read my previous blog post) which is the day I arrived at Haneda Airport. I arrive there with three other YSEP students from Indonesia (Bima, Baim, and Antya) and was met by my Lab Tutor, Hosokane Aiko-san. There were actually two more YSEP students from Indonesia which are Dyah and Vidya. The first one, Dyah, is my roommate in the dorm and she had arrived a day earlier, while the later, Vidya, is Antya’s roommate and arrived two weeks later.

In Yokohama-shi, I live in Umegaoka Dormitory (a dormitory for foreign Tokyo Tech students) which is located near Fujigaoka station (15 minutes walk from there actually if you walk moderately fast over hills, because yeah the road consists of up-hills and down-hills). It was tiring at first going back and forth between dorm and the station, but I got used to it right now and it’s actually a nice habit. I kinda enjoy morning walks right now from the dorm to the station.

I got a double room in the dormitory (which I shared with Dyah), and the room is really nice and neat. There are also a microwave, a washing machine, a kitchen already in the room. So yeah, basically I already feel comfortable living in the dormitory.

From dormitory to Tokyo Tech O-okayama campus (intermezzo: the o in O-okayama (大岡山)is actually three Os so it’s pronounced really long like “o-o-o” haha) is around 1 hour by train. I had to take the Tokyu Den-en-toshi Line and change to the Tokyu Oimachi Line to reach O-okayama station from Fujigaoka station. It’s not too far once I got used to commute here and there. And again I enjoy the time that I spend for my everyday’s commute.

I actually have so many things to tell about living in Japan from my lab, shopping, eating, sightseeing, home stay, and much more! But I think it won’t fit into this one post, so I’ll just keep this one short (for introduction only).

See you!

]]>
<![CDATA[Saat Kuliah Menjadi Hobi]]>Akhirnya muncul lagi di blog ini, dengan theme baru 😀

Gue baru saja menyelesaikan dua minggu pekan UTS Semester 4 lho. Yep, gue udah berada di pertengahan semester 4, alias nggak lama lagi gue bakal jadi mahasiswa tingkat 3 di semester depan. Wow, memang kalau kita melakukan hal-hal yang menyenangkan,

]]>
https://enreina.com/blog/saat-kuliah-menjadi-hobi/62457ece73c4d60d3ca96ce7Fri, 12 Apr 2013 17:00:00 GMTAkhirnya muncul lagi di blog ini, dengan theme baru 😀

Gue baru saja menyelesaikan dua minggu pekan UTS Semester 4 lho. Yep, gue udah berada di pertengahan semester 4, alias nggak lama lagi gue bakal jadi mahasiswa tingkat 3 di semester depan. Wow, memang kalau kita melakukan hal-hal yang menyenangkan, waktu terasa lebih cepat ya?

Nah ada apa ini dengan judul post-nya “Saat Kuliah Menjadi Hobi”? Ya itu dia, gue mau cerita tentang bagaimana gue sekarang menganggap kuliah itu menjadi hobi. Kuliah itu bisa dibilang sebagai passion gue sekarang. Kok bisa?

Jadi ceritanya, gue baru-baru ini baca tentang post ini: http://rinaldimunir.wordpress.com/2013/04/07/pidato-wisudawan-terbaik-memukau-tetapi-sekaligus-menakutkan/ yang kebetulan juga linknya sudah tersebar dan populer di media sosial seperti Twitter dan Facebook.

Dari pidato tersebut, gue langsung teringat bagaimana dulu gue sangat menentang kata-kata “Kan yang penting nilainya ..” dan seakan-akan semua kerja keras para pelajar hanya dapat dilihat dari nilai saja. Bahkan sejak SD, gue jadi memiliki rasa ‘takut’ yang berlebihan akan nilai, dan hasilnya adalah gue keluar dari sekolah dasar saat awal kelas 5, dan memutuskan untuk homeschool.

Sayangnya, rasa “takut” itu masih terbawa sampai SMP, padahal nilai-nilai gue bisa dibilang baik-baik saja dan membuat orang-orang bingung apa yang membuat gue begitu takut.

Selama 10 tahun melalui ‘pendidikan’ sebelum kuliah, mindset gue tentang sistem pendidikan di Indonesia yang salah belum hilang sepenuhnya. Gue menganggap pendidikan itu hal yang menyeramkan yang memaksa pelajar untuk mengejar satu objektif, yaitu nilai. Sedangkan menurut gue, bukankah pendidikan itu seharusnya menjadi fasilitas negara agar kita bisa merasakan betapa menyenangkan mencari ilmu itu?

Nah, baru setelah masuk ke kuliah, yang bisa dibilang jurusan yang gue ambil adalah passion gue, gue baru benar-benar merasakan bahwa ilmu itu menyenangkan, dan kuliah pun menjadi hobi bagi gue yang gue tunggu kejutan-kejutannya setiap hari. Gue nggak mau lagi menganggap nilai itu adalah segalanya, malahan nilai itu hanya menjadi patokan untuk lebih meningkatkan pemahaman. Apalagi di Ilmu Komputer, banyak banget ilmu yang gue dapet di luar dari perkuliahan itu sendiri 😀

Learning is supposed to be fun, right? 😀

-zero&one,

Enreina A. Rizkiasri (Rey)

]]>
<![CDATA[Gagal vs Berhasil]]>Yosh, Selamat Hari Sabtu!

Gue selalu senang kalau ketemu hari Sabtu. Entah mungkin karena hari Sabtu adalah awal dari weekend, atau karena ya beda deh suasana sekitar pas Sabtu pagi datang 😄 (halah). Sekarang gue mau nge-sok nulis tentang “Gagal vs Berhasil”.

Selama gue hidup sampai sekarang ini

]]>
https://enreina.com/blog/gagal-vs-berhasil/62457d4873c4d60d3ca96cd1Sat, 21 Jan 2012 10:08:00 GMTYosh, Selamat Hari Sabtu!

Gue selalu senang kalau ketemu hari Sabtu. Entah mungkin karena hari Sabtu adalah awal dari weekend, atau karena ya beda deh suasana sekitar pas Sabtu pagi datang 😄 (halah). Sekarang gue mau nge-sok nulis tentang “Gagal vs Berhasil”.

Selama gue hidup sampai sekarang ini (hayah baru umur 16 tahun aja ngesok ‘selama gue hidup’ :p), gue sering banget ya nemu banyak orang merasa ‘gagal’ trus tiba-tiba udah ngomong-ngomong hal-hal yang depressing banget, kesannya kayak dunia ini udah berakhir aja.

Well, ya emang maklum sih semua orang juga pasti pernah ngerasain kayak gitu, gue pun juga pernah kok. Malah kalau di-flashback, banyak banget kejadian-kejadian yang waktu itu rasanya gue udah nggak ada harapan lagi, tapi toh malah sekarang gue malah mikir-mikir gara-gara kejadian-kejadian itu lah gue jadi seperti yang sekarang ini. Optimis dan penuh determinasi.

Kalau yang baru-baru ini terjadi (sebenernya udah hampir setengah tahun yang lalu) adalah ‘gagal’-nya gue diterima di PTN melalui SNMPTN Jalur Undangan. Yang ngebuat gue waktu itu merasa benar-benar gagal adalah bagaimana gue superrrrr banget berharap keterima lewat jalur itu, dan sama sekali nggak kepikiran bakal bisa melalui SNMPTN Jalur Tertulis. Awalnya, rasanya bener-bener hopeless deh. Mungkin juga karena gue jarang menghadapi kekecewaan-kekecewaan sebelumnya (alhamdulillah waktu SMA, gue hampir selalu puas dengan pencapaian-pencapaian gue), dan pas menghadapi kenyataan nggak diterima undangan ini, rasanya kayak kena tampar bahwa yang kita inginkan nggak harus selalu terjadi, dan yang terjadi nggak selalu harus yang kita inginkan. Haha XD

Bisa dibilang karena gue nggak diterima lewat undangan lah, gue berusaha abis-abisan ngejar SNMPTN Jalur Tertulis. Tapi bedanya untuk SNMPTN Tertulis itu, gue siap untuk tidak berhasil. Gue siap menerima kenyataan kalau gue nggak keterima juga. Siap untuk tidak berhasil bukan berarti lo menolak untuk berhasil. Malah dengan kesiapan itu, usaha gue lebih gue kerahkan untuk mengejar apa yang dinamakan ‘keberhasilan’.

Dan menjelang SNMPTN Tertulis, nyokap masih menghibur gue sekaligus memberi pesan bahwa gagal itu biasa. Tapi gue bilang “aku nggak gagal ma, aku cuman belum berhasil aja”.

Jadi intinya, modal gue untuk mencapai ‘keberhasilan’ adalah keseimbangan antara optimisme dalam mencapai keberhasilan itu sendiri dan juga kesiapan untuk menghadapi kegagalan nantinya. Anggap saja kegagalan itu adalah titik refleksi (reflection point) yang siap mengantar lo ke keberhasilan yang ada di masa depan.

Semoga tulisan ini memberi inspirasi dan membuat orang-orang untuk lebih semangat menjalani dan menikmati hidup. Karena hidup ini terlalu indah, kawan 😄

–zero&one,

Enreina A. Rizkiasri

]]>