Manually Formatting EPUBs

I deDRM my ebooks. Yes, I admit it.

If you don't know what Digitally Right Management means, it is basically a way that companies encrypt electronic files so that people do not steal content or edit the files for malicious purposes. Which, in my opinion, is a valid reason.

I'm fine with reading a book on a proprietary device rather than printing it out. I'm fine with buying a the ebook with the same price (or a little more expensive) as the physical version. I'm even fine with a clunky user interface. If these were the only issues, I probably wouldn't spend the effort in removing the DRM.

But what ultimately drives me to remove the DRM encryption is the formatting. Yes, the formatting. There is an unacceptable amount of ebooks that have nonadjustable line spacing, bad character encoding (where it shows £ instead of £), or just plain bad design.

This is why I love the EPUB file format. Unlike Amazon's MOBI files, epub files are essentially just a zip file containing HTML and CSS designed specifically for ebook readers. That's it! All I have to do is change .epub to .zip, uncompress, fix the problem, compress the file again to zip, and then change the filetype back to .epub. Takes less than 5 minutes, tops.

So, last week, I got a gift card by one of my students for a major bookseller. I prefer to use my gift cards as soon as possible, so I decided to use it to buy an electric copy of one of my favorite books.

I should have looked at the ebook sample beforehand because the design was just terrible. Check it out:

For some of you (probably most of you), you are thinking, "What's the big deal? I don't see anything wrong with it."

The problem is the in-text citations!!!

They are supposed to be small, unobtrusive, and superscript. But what did I get? Large, underlined numbers. And to make the matters worse, the numbers are blue. Blue! Rather than hide in the background of the main text, the citations are shouting, "LOOK AT ME!"

Compare this to the physical copy of the book:

Much better. This is one of the main reasons why physical books (or even PDF ebooks) trump EPUBs and MOBIs. Typesetters take pride in their work.

After removing the encryption, I opened up the EPUB file and looked at the HTML source code. Luckily, all the in-text citations were labeled with an ID with an "a" like this:

<a href="../Text/19-Notes.html#d5" id="a5">1</a>

So I added the following lines of code to the CSS file:

[id^="a"] {vertical-align: super;
font-size: 50%;
line-height: normal;}
a {text-decoration: none;
color: #000000;}

As a result, I beautified the EPUB to look like this:

Voilà! Beautiful. It was like a breath of fresh air. Took you a while to see the citations right? That is how it is supposed to be.

Read Comments

Picks! Picks Everywhere!

My dryer has always had a consistent problem of never completely drying my laundry. It's an old dryer (probably 7 years plus), and it rattles more than a maraca. So I decided that it was time to do open it up and do so general maintenance.

It took me a while to figure out how to finally get it open, but afterwards, I wiped and vacuumed all of the dryer's nooks and crannies, especially the humidity sensor. I was curious to find out what was causing all the rattling. My guess was coins, but as I took off each wing in the drum (the part that juts out so that the clothes tumble inside the dryer), I just kept finding more and more picks.

Here is the booty from my adventure.

11¢, a handful of picks, and lint. I'm a rich man.

To show how much picks I found, here is all of my pics laid out in rows of ten.

49 picks in total.

And this penny is kind of cool.

I was not expecting to have such a fun time cleaning the dryer. Everytime I removed a wing, I was laughing like a maniac. Overall, it took 2 hours to clean out the dryer and reassemble it back together. However, knowing what I know now, if I were to do it again, I could probably clean everything in less than 30 minutes.

It's been a week since I cleaned out the dryer, and I still can't help but laugh at the situation.

To provide a bit of backstory, I just moved into this house, and so all of these picks must have been from old tenants. I am assuming the same person. I own a musician myself so I can empathize with this pick loser. I've lost track of how many times I've frustratedly muttered to myself, "What happened to all my picks?" I never answered my own question, but I definitely answered his.

The narrow gap between the wing and the drum must have been the perfect trap to collect free-roaming picks that the original owner neglectfully left in his jeans. Perhaps I will find a treasure trove of socks, chap-sticks, and hair ties when cleaning out the washing machine.

Read Comments

Coffee Shop Critique List - Pt.1

an overview

I started working on my coffee shop criteria list, and like usual, I underestimated how much work goes into this simple project. Therefore, I've decided to upload my work in small chunks rather than showing a finished version at once

I searched online for what is a good coffee shop, and after discussing it with my brother MJ, a coffee shop visiting addict, I think I've covered the broad strokes of a good coffee shop. Here is a step-by-step flowchart of this project from beginning to the end (or at least till Version 1).

graph TD subgraph Development Stage A[Basic Criteria List] --> B[Detailed Descriptions] B --> C[Scaled Rubric] C --> D[Non-Formatted Sheet] end subgraph Testing Phase D --> F[Test Run 1] F -->|Add Missing Criteria|G[Test Run 2] G -->|Balance Criteria and Rubric Values|H[Test Run 2] H -->|User Feedback|I[Test Run 3] end subgraph Version 1 I -->|Last Minute Adjustments and Aesthetic Changes| J[Version 1 Completed] J --> K[Official Dynamic Sheet] J --> X[Official Formatted Sheet] K --> Z[Begin Judging Coffee Shops] X --> Z end

Upcoming Posts

As the project continues along, I will post periodic updates. Note that this is the developement phase so some of the values and wordings will change as the project continues.

  • Basic Critique List of Coffee Shop
  • Detailed Description
    • Atmosphere
    • Coffee Quality
    • Convenience
    • Personal
    • Bonuses & Docks
  • Rubrics
  • Unformatted Rubric Sheet
  • Formatted Rubric Sheet
  • Dynamic Rubric Sheet

Read Comments

Grand Opening!

Toot toot! USS passing through!

I am proud to announce... the official opening of It's built, polished, and ready to be shipped out to sea. You have no idea how excited I am for this. I've spent weeks planning, writing, and tuning this blog so that I could feel comfortable sharing it with others.

It's not perfect. That's OK. This blog is a reflection of me, and I'm not perfect.

Don't let perfection get in the way of good enough.

Now that I am done with setting up the foundation for this blog, what does that mean for me now? Well, now it means that I can focus on what I truly wanted to do in the first place: Write.

Starting next week, I will be writing on a consistent writing schedule of project updates, short stories, journal entries, and other relevant posts.

Before I end this post, I would like to thank everyone who helped me build this site from ground up. Special thanks to my two older brothers who provided me with feedback in the early stages of planning. Also, thanks to my dog for his endless encouragement and support.

Well, put on your sailor suit, crack open another bottle of Champagne, and jump on in! This moment marks the maiden voyage of, and let me tell you, it's going to be a wild ride.

Are you ready?

Read Comments

Congratulations CL for New Book

One of my friends, CL, just published her first book Sustainable Home: Practical projects, tips, and advice for maintaining a more eco-friendly household. It's not just some run-of-the-mill no-name book either—it's being sold in every major bookstore including Barnes & Noble and Amazon.

Here is CL's new book!
This is the front cover of CL's new book.

Awesome! I'm Jealous.

Congradulations! Wha–Whe—How did you get so ahead of me?

Best wishes on your blog's future! I hope you buy your own book and eat it.

It's strange watching her blog grow up from infancy. From reading her first post, to reading her daily musings, and now hearing about the publication of her new book. Needless to say, her blog is definitely going places.

If you can't tell, a small, small part of me is jealous. I only got interested in blogging recently, so of course she's farther ahead than me. Mostly, I'm very proud of her. And she deserves it too!

I'm not surprised about the content of her blog, either. She's always been interested in minimalism and she's always considered the environmental consequences of her actions. Nor am I surprised about her success. Her passion is contagious. Like a disease!

If you're worried about getting gypped, don't worry. CL's online personality isn't a front. What you see is what you get.

One aspect about her that you can't get from reading her blog is her attractiveness. And I am not just talking about her face, but her overall personage. At least that's my best guess. I don't see what the whole hubbub is about CL, but everyone I've met says she has this attractive charm.

Actually, when we served leadership together, I felt kinda bad for her. Not because of any thing she did (at least not intentionally). When we served in collegiate leadership, I knew of at least three people who had confessed to her, and three others who had secretly fallen head over heels for her. ALL WITHIN A 5 MONTH TIME PERIOD. I couldn't believe it!

Looking back, it makes more sense now.

  • She loves to bake. Very homely.
  • She has an easy-going personality.
  • She exudes that sort of artsy-fartsy vibe. You know, like an Etsy seller.

Yet, even considering all this, it's still unfathomable as to why SO. MANY. PEOPLE. were caught by her love bug. I mean, she only got a 77 on the Duck Row Test. Am I missing something about her that other guys see?

CL wearing my glasses.
Here's PROOF that I know her! In this picture, she is failing at wearing my glasses. Everytime she tries to wear them, she combusts into laughter.

Just imagine: All your guy friends—those close to you and those you considered platonic— kept requesting to talk to you in private, and then BLAM! All of them began to confess their undying love to you left and right. Scary right? I'd be afraid to talk to any of my guys friends fearing that they'd fall in love with me.

So, in my idiotic brilliance, I decided to confess to her about my DISinterest in her. In my mind, the plan was foolproof. I would tell her that I don't have any intention of hooking up with her, and if she needed a guy's perspective on something, she can come and ask me without any worry of me declaring myself her "Romeo". I followed through with my plan, and it was a glowing success.

At least, that was what I thought.

The plan backfired. Now, every time she sees me, she asks, "Hey, remember that time you told me I was ugly and unattractive?"

I know she says it in jest. We're still friends and there's never been any ill will between us. Well, those days are long past now. We both graduated and moved to different places. Besides, she's married now.

I'm proud of you, CL, and hope to catch up to you in the near future. Don't forget about your eccentric friend Often when you become filthy famous.

Read Comments

On Health

a brief reflection on health and well-being

This is my morning salad. It was quite tasty. I can imagine eating this on a daily basis.

Health is a state of complete physical, mental and social well-being and not merely the absence of disease or infirmity. From the Constitution of the World Health Organization

Ever since the Summer break, I've let my health fall to the the wayside. So many things have happened in my life, and I've been having trouble trying to manage my time. Right now I have a stomach flu, and I feel like my stomach is tearing up inside me. It's fustrating. I had an agenda I wanted to accomplish today, but now all of these projects and responsibilities need to be pushed aside to recuperate my health. I'm not sure if this sickness was brought on by my recent unhealthy living or by something more specific like spoiled food or a contagion from someone else.

However, I think that this temporary abdication of responsibility is a blessing in disguise because it allows me opportunity to reflect on the well-being of my current lifestyle. In specific, I'm going to reflect more on the physical aspects of my health rather than some of the more abstract views of health. In the nearby future, I plan to expedite the execution phase of my Cooking and Fitness Projects as well. In specific, I will be discussing nutrition and fitness.


I've always had admiration of people who voluntarily live under strict diets—vegetarians, vegans, paleos...— and I am thinking of subscribing myself to one of these dietary restrictions as well. Not for any moral reasons—I do think that they are important— but because I fear death. Well, not death itself, rather living an unoptimal life. I agree with Henry David Thoreau when he said:

I went to the woods because I wished to live deliberately, to front only the essential facts of life, and see if I could not learn what it had to teach, and not, when I came to die, discover that I had not lived. I did not wish to live what was not life, living is so dear; nor did I wish to practise resignation, unless it was quite necessary. I wanted to live deep and suck out all the marrow of life, to live so sturdily and Spartan-like as to put to rout all that was not life, to cut a broad swath and shave close, to drive life into a corner, and reduce it to its lowest terms...”cite Henry David Thoreau

Yes. I too want to "suck out all the marrow of life", but I am not sure if I can do that if I consistently and constantly drink bulalo, Filipino bone marrow soup. It's sad to think, but I am beginning to see the old generation pass away. My parents, uncles, aunts... their health is beginning to deteriorate. Some in their late 60s but many others in their late 40s or early 50s. What fustrates me is that they accept their current health as normal and are not taking any steps to correct their lifestyle with diet and excercize. I'm not going to go any further on family matters, but to tell you that this is one of the primary reasons why I want to study history—to correct or at least bring to light the problems unaddressed by my family.

Also, just like Henry said, I believe my best option is to set limits on myself on what I eat as well as the quantity of the food that I will eat. I've tried to strictly count my Macros, but it was just too difficult. Using a food scale, feeling guily everytime I eat out, counting calories on everything I ate. Looking back, it was a miserable experience yet enlightening. I began to discover that my dietary choices are... to say the least... less than superb. So this next time 'round, I've decided to employ a different method. Portion control using bowls. This will make it easier for me to control my macros, but more importantly, it will limit my food intake and ensures that I have a balanced meal without much thought or effort.

The use of Dietary supplements is another factor I need to consider as well. To allay some of your concerns about improper use of supplements, I do understand that they are first and foremost, a means to supplement my nutritional needs, not to replace them. However, I think that they will be necessary if I begin to restrict my diet, especially in the early stages of my journy, because they will help fill in any nutritional gaps in my diet as I fumble through the journey of healthy eating.

I've discussed my basic plan with others, and let me say that the response has been mixed. Healthy people roll their eyes and say, "Of course that's what you do. Wait... you haven't been doing that?" while unhealthy people who are trying to live more healthily look at my plan with gleaming eyes and say, "Wow, this plan is brilliant!" (I'm exaggerating, but I know that is what they said in their heart). So, I think my planning is on the right track, I just need to take the first step.


I've never been super sportsy. I tried... but my Asian parents put a higher emphasis on my higher education than my extracurricular activities. So, I've always felt awkward and inadequate when I tried to play basketball or football with my friends. I'm considering taking a community college class that teaches me cardiovascular exercise. I'm thinking dancing. It's not competitive (I hope), it's fun, and it will help me become more social. Also, maybe it will open up my social circle to more attractive people. You know... cast a wider net.

However, cardio exercize is only half of the equation. Before, I've used to be heavily into lifting heavy things. I started Starting Strength and moved onto 531 BBB. It's been over three months now since I've stopped lifting, but I would like to start again. It was always the highlight of my day. Part of me wondered why I stopped in the first place.

Further Reflections

One more thing I want to point out before I begin cleaning my home gym. I would like to reflect more on the quote I provided above. It's so resonant to me (and to my brother who is a doctor) that I don't mind repeating it again:

Health is a state of complete physical, mental and social well-being and not merely the absence of disease or infirmity. From the Constitution of the World Health Organization

This quote sums up the groundbreaking epiphany I had about health from these past several months. In short, my conclusion was that health is not an absence of something, but rather a presence of something. The buzzword that people use right now is "well-being", but the meaning behind it is the same—health is an advance forward, not a retreat away. This may not seem groundbreaking for the majority of you, but it is to me. Health is a presence of something. That means that we need to make the concious effort to be healthy rather than spending the bulk of our time avoiding unhealthy things. I had this same realization with the concept of peace. I was talking to a friend, and he told me that peace was a given as a command. It's not an absence of something but rather a presence of something, like health. Therefore, we need to make the active choice to be peaceful.

I am hopeful about my situation, and I don't think I've put myself into a point of no return. I'm not an expert on health, but I know that I'm stepping in the right direction. This pursuit for health is not just for my sake, but also for others around me as well.

Read Comments

A New Friend?

"I met someone who I is super interesting. His name is AA."

He is the boyfriend of my cousin's cousin—not related. He's hispanic and wears his long hair in a man bun.

He does graphic design. How cool is that!

But what makes him stand out is a passing conversation I had with him about notebooks. He said, "Someday, I want to make the perfect notebook." Inwardly, I was ecstatic. Part of me wanted to jump out of my chair, slam my hands on the Buffalo Wildwing's table and say, "I have the same passion too!" Thankfully, I restrained myself. I did not want to creep him the first time I met him.

So, in three weeks from now, 21 days, I will contact him. I've already drafted my facebook message that I will send him.

Hey Alex, I was thinking about making a notebook from scratch and wanted to see if you would be interested in what I've made so far. Often

Does that sound casual enough... I don't know. Anyways, hopefully I won't scare him off. Friends are hard to find after college.

Read Comments

On Suffering

Broken Sign
Broken walk signal and broken relationships.

"On Facebook, my friend, EL wrote this:

Does suffering need a reason? No, it does not. Although the beginning of the Book of Job gave a reason to why Job suffer, Job was never informed about this, just as God never gave an answer to all the questions He asked Job. Maybe there is a reason for our suffering, maybe there is not. Maybe instead of asking "why?", we should ask "what now?" Is there a reason for suffering? Maybe there is, maybe there is not, but does the reason really matter? Maybe there are things in the world has no answers. EL

I completely and wholeheartedly disagree. I've been trying to parse out what he wrote, trying to see if I misunderstood it, but no matter how I interpret his post, it's wrong. Dangerously wrong.

Reasons do matter.

The problem isn't whether or not there is an answer, the problem is never asking the question in the first place.

I can understand why people choose to believe this. If you or someone close to you is undergoing some unbearable pain, it makes sense to push the idea of suffering to the side and not dwell on it in order to continue with life. In short, its a coping mechanism. And sometimes, it is necessary. (To be fair, 'Everything Happens for a Reason' is a horrible phrase to say to someone who is in the midst suffering. My recommendation is just to listen, empathize, and support that person as they go through the situation. Sometimes, the best thing to do is to give them space and allow time for them to heal.) But if one builds his entire life on ignoring these questions and encourages others to ignore factors that contribute to one's own suffering or the suffering of others, it hurts everybody in the long run.

In the biblical story of Job, God did not provide the answer, but even still, there is an answer. Whether or not we can fix it (or even comprehend it) is another matter. What is wrong to ask why or how suffering exists? These types of questions are valuable question, and Job had every right to ask these questions to God. Nor do I think that God was angry at Job for asking these questions either. It may not have been the answer that Job wanted at the time, but it was what he needed.

We need pursue these ""why"" investigation as long as we don't dwell on them too long because they can cripple us from making a meaningful mark on the world.

The world sucks. There is a lot of pain and suffering in the world. However, in order to grow and mature, we need to confront these problems head on and push ourselves to move forward despite how depressing and soul-crushing the world is.

Whatever religion or philosophy you have, "reducing needless suffering in the world" is a noble task, and any meaningful change needs to start with the foundational question of 'Why?'.

I'm no expert on suffering, but I've had my own fair share. Here's what I do know:

  • Suffering is multifaceted.
  • Suffering exists.
  • Suffering can be good, bad, or somewhere in between.
  • Needless suffering can be reduced but it involves the commitment andinvolvement of the entire community.

Don't ignore suffering. That's the easy way out and it hurts you and everyone around you. Don't belittle suffering either. Because its real and potentially dangerous.

Last but not least, always humbly and hopefully keep asking those big questions.

Further Resources:

Read Comments

Informal is my Normal

![](027-messyhomegym.jpg "My blog is not meant to be pretty and clean like CL's blog. It's dirty, messy, but haphazardly productive.)

"I've begun to show people my blog. There's copious amounts of mistakes.

That's OK.

It's not like I'm being paid to do this blog. This is more of a passion project than anything else. Still, I need to consider finding an editor because I want this blog to be at least somewhat presentable."

Read Comments

journal pen review

Muji 0.5 Pens

Even before writing this blog, I purposely made it a point for it to not devolve into a pen review blog. Not that pen review blogs are bad persay. If you do not know me, I like pens. A lot. So much that it becomes a productivity black hole. As a result, I do not go out of my way to look for the perfect pen because I've always placed a higher emphasis on content over products.

However, this particular post is a little different. As a spur of inspiration, I've decided to break my vow of silence just because of how much I love Muji gel pens. They write smoother than any other gel pen I've come across (other than the Pentel Energels) and, well... they just make me happy.

To give a bit of backstory, I ran out of ink in all my gel pens about half a year ago and never came around to buying new ones. I own so many cheap ballpoint pens (BIC pens, free pens found in banks and hotels) that I decided, "Good enough for me. I'll use up these pens first before I buy new ones." However, no matter how prolific I write, these rollerball never seem to die. They last forever. AND they multiply. Three months ago, I owned 53 bic pens alone, but when I counted how many pens I owned today, they mysteriously multiplied to become 72 pens.

I know this was not an accounting error because I've begun to store my dead pens in a little tin box as a sort of 'war prize'. I've coined this box: 'the pen graveyard'. Over the past three months, I've used up at least 7 pens, so the number should have decreased. My guess is that someone put more pens in my pen container, yet I do not know who would do that...

My older brother, M.M., moved in about a week ago, and while I was walking through his room, I discovered a red Muji 0.5 pen out in the wild. So... I just took it. Yes, I'm a thief, AND I DON'T REGRET IT. (I hope he doesn't read this blog post.)

Oh the joy of a Muji Pen. The matte finish. The smooth writing and flowing ink. When I first sat down to write something, I wrote, "This is a test of a red 0.5 Muji gel pen," and somehow the pen spurred into overdrive, and by the end of 3 minutes, I had already written on both sides of the page as well as revisions and side commentary on the margins.

The next day, I decided to go out of my way to Palo Alto to buy a set of new set of Gel Pens.

After having a brand new spankin' set of pens, I secretely placed M.M.'s pen back onto his desk. I was considering replacing the pen I stole with a BIC pen, but dismissed the thought; I'm a thief, but I'm not a monster.

Read Comments

Printing and Star Trek Voyager

Bookbinder's Log, Stardate 96105.99:

While printing booklets, I've aptly discovered that my printer's speed matches the tempo of Star Trek Voyager's Theme Song with no quantifiable discrepancy. To commemorate this moment, I've decided to name my printer "Tuvok" in commemoration for its valor and logic in fulfilling the Prime Directive.

Read Comments

Judging Coffee Shops

Cafe Equipment
Venicia Cafe in Palo Alto.

I like drinking at coffee shops, Cafés, Coffee houses. Whatever you call them. Places whose main source of income is by selling decent cups of coffee. I even go out of my way to find them!

However, I don't feel satisfied with my current method of rating coffee shops. What I've been doing thus far has been to go to a coffee shop, drink a cup of coffee, glance around the room, and mutter to myself saying "I like it." or "I don't like it." This method is so... imprecise. Too wishy-washy. I need some sort of rubric or grading system to measure the coffee shop similar to the Duck Row test.

Why do I need to quantifiable measure for a coffee shop? Because. What more can I say? Should I just enjoy the moment by drinking the cup of coffee and enjoying the scenery? Preposterous. How can I enjoy something without measuring my enjoyment with an empirical value from a scale from 0 to 100? Impossible.

I want to start expanding my coffee shop horizons, so I've decided to expand in an outward spiral. Starting in Half Moon Bay, I've mapped out as many local independent coffee shops that I intend to visit.

Lucky for me, I like my coffee consistent. Paper cup. Black. With a Book or perhaps a friend.

To keep my experiment as consistent as possible, I've decided to visit new coffee shops at 2PM on Saturday. If I try to rate coffee shops on different days and hours then I might arrive at rush hour. Or during a change shift. Visiting at the same time reduces these errors. Also, I need to visit these coffee shops more than once.

The coffee itself will only be a small percentage of the coffee shop's total score. Coffee is just coffee. If I want good coffee, I would just make it at home. What I am really looking for is the location, convenience, atmosphere, mission/vision statement.

I still haven't fully created the basic rubric, but I'm close. The rubric will be graded with an overall score of 100 um... coffee beans?

Or perhaps coffee cups.

OH WAIT! Maybe the tens place will be measured in Coffee Cups, and the Ones place will be measured in coffee beans. Like 5 cups of coffee and 3 beans would represent a score of 53/100.

That could work!

I dunno, I haven't put much thought on the creative stuff. I'm mainly working creating a fair and consistent rubric. Then I'll worry about graphic design afterwards.

I should be done with a rough working draft of the project in the next couple of hours, and I'll provide an update when I feel it is at least partially presentable.

Read Comments

journal poem

The Reader and the Writer

I love writing. Both the action and the idea.

I love to writing, conjuring once insurmountable and intangible problems into small insignificant, and tenable symbols saturated on paper.

I love prose, how words ebb and flow, like harmony in an arpeggio or tension from a dissonant chord.

I love ostentatious words; Ebullient words that bubble and froth from the author's soul, words that sweeten or fester. Winsome, wild words that settle on your tongue like rich oily foods.

I love the idea of writing. Pen scratching paper. Ink saturating pulp. People perusing paper piece by piece. Page by page. Letter by letter. Lingering on each letter like a lover. Solemn at the silent abyss of each space, each punctuation.

I love stories; Lies that speak more than truth. Some - reflections, shadows, ripples of a fading past. Bridging past and present. Building foundations for the future.

At this moment - your past, my present - I am at a coffee shop at the cusp of evening. Sky blue with a tint of orange.

You are a father, a student, a mistress. You are in a dark room, in a dark house, under a dark sky while the world around you sleeps. You are on a subway wearing a tie and suitcase, heading to work. The train pans, tilts, bumps, and bruises. A passenger behind you coughs. Another sneezes.

Wherever or whenever you are, you are with me, across time and space, sharing this moment.

Since we are here together, let's have an adventure. Often Zhan - Journal (1/18/18)

Read Comments