2014.11.17 AM 10:42

Lots of good news this weekend. First, Spirit Sweeper passed the iTunes inspection. I expected it to be ready by Monday, so I was a bit surprised to see it over on Saturday (perhaps Friday in US time). The fact that it passed in one go is really good news.

2014-11-15 12.26.02 2014-11-15 12.33.13

Above are screenshots from my phone of the iTunesConnect alert. In the background you’ll see a picture of my wife. It’s quite fuzzy but I think it gives quite the beautiful aura to the good news. We took that picture during our honeymoon… anyway, we’re ready to go live on iTunes!

Oh, and I wasn’t aware of this, but you can provide early access to an iOS game by giving out promo codes before it launches. We learn something new every day.

The reason this weekend was busy was because of another episode of server errors. I may be the CEO of this company but I’m very involved in the programming, having studied it in college as well. For the past two weeks, the CTO (my high school friend) and have been fighting tooth and nail with this server. We’ve been at work every weekend. We’ve had issues such as deadlock, stack overflow and heap corruption. Catch once bug and another pops up. And now.. after running the stress test again…

스크린샷 2014-11-17 10.45.18

It ran over 2.6 million test, and all of them passed! We should be able to open tomorrow!


주말에 바쁘기도 했지만 좋은 소식도 많이 있었다. 우선 iOS 앱 리뷰를 통과했다. 월요일쯤에야 완료될 줄 알았던 리뷰가 토요일(미국 시간으로 아마 금요일 저녁?)에 완료된 것 이다. 리뷰도 한 방에 통과하고 대박날 징조라 생각하고 싶다.

2014-11-15 12.26.02 2014-11-15 12.33.13

내 아이폰 배경화면은 와이프 사진이다. 사진이 뭉개져있어도 아름다운 아우라만은 여전하다! 신혼여행에서 찍은 사진인데…. 아무튼 20여분 만에 리뷰가 완료되었다.

2014-11-15 15.00.09

프로모션 코드를 생성하고 앱스토어에 입력하니까, 출시 전에도 다운로드 할 수 있었다. 이렇게 얼리엑세스가 가능할 줄 몰랐다.ㅋㅋ

주말 내내 정신없던 이유는 계속되는 서버 안정성 문제였다. 내가 대표라는 직함을 가지고 있지만, 사실 프로그래밍을 더 많이 한다.  프로그래머 출신이기도 하고… CTO(고등학교 때부터 친구이다)와 함께 근 2주간 서버 문제를 해결하기위해 매달렸다. 11월 들어서는 주말에 매일 출근했다.ㅠㅠ deadlock도 있었고, stack overflow도 있었고, heap corruption도 있었다. 하나 잡으면 또 다른 문제가 생기고 정말 미치는 줄 알았다. 그리고 어제 테스트를 돌리고 퇴근했는데…

스크린샷 2014-11-17 10.45.18

테스트가 약 260만회 진행되었고, 결과는 모두 성공이었다! 아마 내일 정상적으로 오픈 할 수 있을 것 같다ㅠㅠ


2014.11.13 11:51

It’s been a long time since I got off work so early… though 10PM isn’t THAT early… Still, things are going relatively smoothly, and I feel much more at peace than last week.

I’m going to set the server stress test before I leave work. We’ll see how it turns out in the morning!

오늘은 정말 오랜만에 일찍 퇴근했다…. 그래도 오후 10시지만ㅠㅠ 큰 일없이 순조롭게 작업이 진행되는 것을 보면, 폭풍전야의 고요함이라는 말이 떠오른다.

딱! 이기분이다..ㅋㅋ

서버에 스트레스 테스트를 걸어놓고 퇴근했다. 아마 내일 아침에는… 어떤 일이 기다리고 있을지 기대된다!

2014.11.13 00:54

So the guy who’s translating this blog to English for me accidentally erased my original Korean text T.T (Translator note: haha ggnore). To summarize my last post: I have server issues, and I have no idea what they are! I had some wild guesses, and luckily was able to match one.

The iOS version has now been submitted for review. We had to re-do the build 3 times to get it right, and since there may be some developers here reading along, I’ve listed some of the development notes here for reference.

1&2. As we built our app, we had set the Build active architecture only to true. This means that all Projects, including those that link to the app, must have the option set to false.. However, we had only set the App Project to false with our build, which caused Validation errors. After setting everything to false, we were able to build without errors. yay.

3. Setting up icons in iOS can be made easy. With so many different icon sizes necessary (4, 5s, 6, iPad, Retina), there’s a lot of resizing that needs to be done. But there is a website that can do all this for you, quickly and easily. It’s called makeappicon.com, and this is what the homepage looks like:


All you have to do is insert a 1024×1024 icon into the toaster and it will come out automatically resized for all specs. An Android icon pops out as well!

But this led to another issue regarding icons. We loaded the icons and attempted to validate them, but we got the following error message: "Invalid Image Path - No image found at the path referenced under key 'CFBundleIcons': 'AppIcon120x120'". What went wrong? makeappicon.com had resized the icons with no issues… we tried validating 2 to 3 times and found it still didn’t work. So we went to stackoverflow but found most of the answers to be disappointing. But then we found this little gem:


Basically, if you use an asset catalog you will get a weird bug with the Carplay icon that Apple included in the bundle. If you register the entire catalog, the Carplay icon also gets registered and causes bug. The only way to fix this is to remove the carplay icon from the bundle, which we did. Ultimately a very minor issue, but one that caused vast amounts of headache as well as heartache.

Now all we need is a safe Review! Readers, let’s hope we get a quick and issue-free review!

————————KR Version ————————————-

번역을 도와주시던 분이 실수로 이전 글을 삭제하셨다ㅠㅠ (번역가 노트: ㅋㅋ 죄송합니다) 한 줄로 요약하면 서버에 문제가 있고, 어느 부분이 문제인 것 같다?! 뭐 이런 예측을 적었었다. 예상이 맞았고, 중대한 서버 문제도 해결 되었다!

iOS 버전도 리뷰에 들어갔다. 리뷰를 준비하면서 빌드를 3번이나 다시 했는데, 개발하는 사람도 참고할 만한 부분이 있어서 여기 기록을 좀 남겨야겠다.

1&2. Build active architecture only 옵션을 true로 해놓고 빌드 했다. App에 해당하는 Project 뿐만 아니라 링크하는 Project도 모두 false가 되어있어야 한다. App Project에서만 false를 넣고 빌드 했더니 Validation에 실패했다. 두 번째는 전부 false로 바꿔놓고 빌드해서 무사히 통과

3. iOS에서 icon설정은 여간 귀찮은 일이 아니다. iPhone4, 5S, 6, iPad, iPad Retina 등에 해당하는 아이콘을 모두 리사이즈해서 넣어줘야 한다. 물론 이 아이콘들을 한 번에 만들어주는 웹 서비스도 있다. http://makeappicon.com/ 토스트기에 1024×1024아이콘을 넣으면 자동으로 빌드에 필요한 icon을 resize해준다. Android icon도 함께 나와서 일석이조이다! icon을 적용하고 Validation을 시도 했더니 에러가 발생했다. “Invalid Image Path – No image found at the path referenced under key ‘CFBundleIcons’: ‘AppIcon120x120′”. 웹 서비스에서 아이콘을 빠짐없이 잘 만들어 줬고, 적용도 잘 됐는데…. 2~3번 정도 더 빌드해서 Validation해 봤지만 모두 같은 결과였다. stackoverflow를 찾아봐도 ‘아이콘 설정을 잘 못했다.’, ‘어딘가 하나 빠뜨렸다’가 대부분이었다. 그런데…. 아래 글을 발견했다.


carplay 아이콘을 설정하면 문제가 된다는 것이다. 확인해보니 carplay 아이콘이 설정되어 있었고 설마하면서 빌드, Validation했더니 통과! makeappicon에서 만든 아이콘을 적용하면서 carplay도 추가도 세팅되는 것이 문제였다. 별거 아닌 문제지만, 이런 것들 때문에 프로그래머들이 고생한다.ㅠㅠ

이제 무사히 Review를 통과하기만을 기도해야겠다! 여기 블로그를 보시는 사람이 있으면, 리플로 무사 통과를 기원해주시면 고맙겠습니다!ㅎㅎ

2014.11.10 01:39

I thought I blogged this morning but it seems to have disappeared… I guess I didn’t press the publish button T.T.

Our Redis server keeps causing bugs and continues to be a thorn in our side. We increased the Output Buffer through Redis Config to try to deal with the no-response issues, but this caused an even greater error. Though the Redis server now responded, we now had issues with the free Heap Memory having an Recv bug. But not only is the free Heap Memory having Recv issues, but the other memory is also plagued with Recv, causing the server to die. It looks more and more like a Tuesday launch will not be possible…

When I look back at it now, I feel we didn’t make enough time for server testing, and I really regret it. We set this launch schedule because of our rapidly dwindling finances… trying to make a game without funding is hard, hard work.

2014.11.07 07:00 An Explanation of Spirit Sweeper’s Skill System

It’s finally time to talk about Spirit Sweeper!

In my earlier post I talked about MineSweeper Flags. One unfortunate aspect of that game is that, because each successful mine found leads to an additional turn, one unfortunate mishap can cause a huge part of the board to open up, leading to certain victory for the other side.

Battle MineSweeper, a huge opportunity opens up! How many mines can you see?

The second thing that’s a bit unfortunate about Minesweepers Flag is that it’s quite limited, strategically, because it only has one item that can be used. As I discussed before, it offers the user a bomb that opens up a 9×9 area for the player that is significantly behind. It would be better if it offered more strategic variance.

In Spirit Sweeper, we solve these two problems by adding “skills” to the game. Skills are available at specific moments in the game, when the “energy” bar is filled up. The energy bar is filled each according the numbers that are revealed when opening up a tile, or tiles. So even if you give up a lot of opportunities to your opponents, you’re compensated for it by the amount of energy you have available to you to use your skill.

Energy bar filled and ready to use.

Spirit Sweeper offers several characters, and the first that is made available is “Jack”. Jack was made to accommodate users new to minesweeper, with skills that help new players find mines easily and quickly. This is especially helpful for users that aren’t aware of some of the more complex rules of minesweeper. Let’s take a look at Jack’s skills:


  1. Detect Spirit : marks a possible Spirit tile.(Low chance)
  2. Deep Thoughts : [Passive] +5 sec to tile selection time.
  3. Inferiority Blast : [Passive] My creature’s skill energys are charged when the opponent finds a mana.
  4. Bribe Referee : Can select tile once more

The first skill lights up the areas that have the highest probability to have spirits (mines). However, this skill has a significant chance of failure.

The second skill is a passive skill and is applied upon game start. The players are given 5 extra seconds to find mines (Spirit Sweeper limits each turn via time). This is good for new players since they have more time to think.

The third skill allows Jack to charge up his energy bar every time an opponent finds a spirit (mine). Whereas energy bars are usually filled based on the sum of the numbers that appear upon opening a tile, this skill allows a user to catch up if an opponent finds many spirits (mines).

The final skill is very powerful. It allows for a minimum of two presses on one turn, even if the first turn finds no spirits (mines). This can be used to combo into a very powerful attack, where in the first turn I open up the entire map, and then spend the rest of my turn discovering spirits.

Each creature has 4 skills, which are unlocked as they are upgraded. Each creature has their own unique strategy, with skills to match, but to explain all that here… would take forever, AND I have a game to make, right? ^^

It’s time to get to work. Our Redis-based server keeps getting Deadlock errors. If I’m really going to launch by next Tuesday, we’re gonna have to put in a lot of work.


The first image I had at the top of the blog had a total of nine guaranteed discoverable mines, as u can see here:


—————————-KR VERSION—————————————————–

드디어 ‘스피릿 스위퍼’의 특징을 이야기 할 차례가 되었다!

앞서 이야기한 MineSweeper Flags도 아쉬운 점이 있다. 첫번째는 빈 타일을 누르면 숫자가 나올 때 까지 많은 타일 열리는 상황이다. 숫자가 많이 노출되어 고득점을 할 수 있게 되는 상황에서 턴이 넘어가게 된다. 상대방에게 고득점의 기회가 찾아온 것이다.

Battle MineSweeper에서는 고득점의 기회다! 몇개나 찾을 수 있을까?

두번째 아쉬운점 전략적 선택의 폭이 좁다는 것이다. 타일 선택과 9×9 타일을 한 번에 여는 ‘폭탄’뿐이라, 생각할 수 있는 전략이 몇가지 되지 않는다. 좀 더 다양한 전략을 구사 하기 위해서는, 특별한 기능이 더 많이 필요했다.

위와 같은 아쉬운점 2가지를 한 번에 해결 할 수 있는 방법, 특별한 기능으로 ‘스킬’을 찾았다. ‘스킬’은 아무 때나 사용 할 수 없고,  스킬 사용에 필요한 ‘에너지’를 모두 모았을 때 사용 할 수 있다. ‘에너지’는 유저가 타일을 열었을 때 나오는 숫자만큼 충전된다. 앞서 빈 타일을 눌렀을 때, 낙담 할 필요가 없다. 상대방은 고득점의 기회를 얻게 되지만,  나 역시 ‘스킬’이 활성화 되어 역전 할 수 기회를 얻게 된다.

에너지 7을 획득하고, 정수 탐지 스킬이 활성화 되었다.

맨 처음 지급 받는 ‘잭’이라는 캐릭터는 초보자들이 게임에 쉽게 적응 할 수 있도록, 게임을 이해하기 쉽게 만들어져 있다. ‘스피릿 스위퍼’ 룰을, 정확히는 지뢰찾기 룰에 대한 이해가 부족할 때, 게임을 풀어나가기 위한 전략으로 스킬을 사용하면 게임에 많은 도움이 된다. 스킬을 살펴보자.


  1. Detect Spirit : marks a possible Spirit tile.(Low chance)
  2. Deep Thoughts : [Passive] +5 sec to tile selection time.
  3. Inferiority Blast : [Passive] My creature’s skill energys are charged when the opponent finds a mana.
  4. Bribe Referee : Can select tile once more

첫번째 스킬을 정수(지뢰) 찾는 것을 도와준다. 숫자가 많이 겹치는 부분이 아무래도 정수(지뢰)가 있을 확률이 높다. 이런 부분을 초보자들은 쉽게 캐치 할 수 없기 때문에 만들게 되었다. 물론 숫자가 겹치는 곳이라고 항상 정수가 있는 것은 아니다.

두번째 스킬은 사용하지 않아도 게임 시작과 동시에 적용되는 패시브 스킬이다. ‘깊은 고민’은 한 턴의 지속시간을 5초 늘려준다. 초보자들이 빠르게 게임을 진행하기 보다는 생각 할 시간이 좀 더 필요하기 때문이다.

세번째는 열등감 폭발! 상대방이 ‘스킬 에너지’를 획득하면 나도 같이 ‘스킬 에너지’를 획득하게 된다. 더 빨리 ‘스킬’을 사용할 수 있게 되는 것이다. 정수(지뢰)를 찾기 어려운 사용자들이 마음 껏 스킬을 쓰면서 게임에 적응해나가게 된다.

네번째는 심판매수는 다소 공격적인 스킬이다. 타일을 두 번 선택하게 된다. 빈칸을 누를 각오로 스킬을 사용하면, 오히려 나에게 고득점의 기회가 찾아온다. 타일을 잘 못 누르는 초보자를 위해 디자인된 스킬이지만,  후반 고수들에게도 유용한 스킬이다.

한 크리쳐가 4가지 스킬을 가지고 있도록 디자인 되었다. 모든 크리쳐가 전략성을 충분히 가질 수 있도록 디자인 했는데, 여기 다 설명하면…. 게임은 누가 만드나?

이만 출근해서 일을 해야게 갔다. Redis와 서버 통신 도중 Deadlock이 계속 발생하고 있다. 다음주 화요일에 안드로이드로 먼저 출시 하려면, 빨리 마무리 해야겠다.

P.S 맨 처음 스크린샷에서 지뢰 9개를 찾은 사람은 꼭 ‘스피릿 스위퍼’를 하기 바란다. 게임에서 같이 만나보고 싶다.


2014.11.06 07:00

So originally I planned to blog every four hours. Actually, it wasn’t really my plan, it was my marketing partner’s plan. But that was too difficult, so I changed the schedule to once a night. But actually, I work really late quite often and so when I go home, I just pass out. So… this time I decided I will wake up earlier and blog every morning. This is me blogging at 7AM.

Let me continue where I left off a few days ago, when I said I didn’t want to make a copycat game. Of course, that means I need to discuss a bit about minesweeper and how it works.


Traditional minesweeper has some pretty simple rules. 1. You open a tile. 2. If a mine is in the tile, it’s game over. 3. If a number appears, “n”, then within the 8 adjacent squares “n” number of mines exist. 4. If you open an empty square with no number or mine, then it will keep opening squares until you hit a square with a number on it. You play until you can eliminate the possible squares that have mines, with the goal of reaching 100% certainty. Often, there will be situations where two squares have a 50/50 chance of having a mine.

MineSweeper Flags

This game is MineSweeper Flags, which was available on MSN messenger. In this game, you could play against friends. Spirit Sweeper is very similar to this game. The rules for this game work as follows: 1. Users take turns opening tiles, 2. If a number appears, the user’s turn is over, 3. If a mine appears the user gets 1 point and can get an additional turn, 4. whoever finds half of the 26 mines first is the winner. The fun of this game is the competition factor. It’s easy to tell who’s good at minesweeper and who’s not by playing this game. Plus, the fact that the game doesn’t end when you find a mine means that there’s a different kind of excitement and stress from the game. Whereas in minesweeper, the game can end at any turn, in this game there’s no way to lose without a series of good moves made by the opponent. Special items are available in the game that can be used when losing, for example there is a bomb that allows you to open a 9×9 plot of tiles instantly. But this item only becomes available when the score is extremely lopsided.

Spirit Sweeper is very similar to Minesweeper Flags, with some minor enhancements and rule changes. But I’m out of time… it’s time to eat breakfast. Time to go to work!


Update: 6PM

They’re shutting off the internet (again) at the office in two hours. This is maddening for a developer. Sigh.

— KR version —

늦게까지 일하고 블로깅하기 너무 힘들어서 이번에는 아침에 쓰고 있다. 전에 이야기하려던 ‘스피릿 스위퍼’의 차별점을 이야기 해볼까 한다. 우선 지뢰찾기 원작에 대한 이야기를 빼놓을 수 없을 것 같다.


전통적인 지뢰찾기는 룰 간단하다. 1. 타일을 연다. 2. 지뢰가 나오면 게임이 끝난다.  3. 숫자 n이 나오면 해당 타일 주변 8칸 중 n칸에 지뢰가 있다. 4. 빈칸을 열면 숫자들이 나올 때 까지 타일이 계속 열린다. 지뢰가 나오면 한 번에 게임이 끝나기 때문에 항상 조심해야 한다. 숫자를 보고 지뢰가 있는 곳을 100% 유추해 나가면서 게임을 하게 된다. 지뢰찾기의 매력은 감으로 타일을 열게 될 때가 있다는 것이다. 타일 2개 중에 한 곳에 지뢰가 있다는 것은 알지만, 두 곳에 있을 확률이 각각 50% 인 상황이 빈번하게 발생한다. 선택의 묘미가 있는 것이다.

MineSweeper Flags

MSN 메신저에서 할 수 있어던 MineSweeper Flags라는 게임이다. 친구와 함께 지뢰찾기 대전을 할 수 있다. 현재 개발하고 있는 ‘스피릿 스위퍼’의 기본 룰과 동일한 방식이다. 게임 룰은 1. 두 명의 유저가 번갈아 가며 타일을 연다. 2. 숫자가 나오면 턴이 종료된다. 3. 지뢰가 나오면 점수를 1점 획득하고 타일을 한 번 더 연다. 4. 게임에 숨겨진 지뢰의 반(26개)을 먼저 찾는 사람이 승리한다. 이 방식에서의 재미는 친구와 겨룰 수 있다는 점이 가장 크다. 한 번만 해보면 지뢰찾기 잘하는 사람을 단 번에 구분 되기 때문이다. 기존 지뢰찾기에서 지뢰를 밟으면 게임이 끝나 버리는 스트레스도 덜하다. 숫자가 나오면 턴이 종료되지만, 상대방 역시 숫자를 열경우 턴이 돌아오기 때문이다. 특수 아이템으로 지고있는 상황에서만 쓸 수 있는 폭탄이 있다. 선택한 타일을 중심으로 9×9의 타일을 열게 되는데, 게임이 거의 끝나가는 열세 상황에서 사용하면 역전 할 수 있는 기회를 얻게 된다.

정작 ‘스피릿 스위퍼’이야기를 못했다. 이건 다음 블로깅에…ㅠㅠ 얼른 아침먹고 출근해야겠다!

Server Issues Continue

애증(愛憎): Love and Hate.

愛憎. Pronounced as “ae jeung” in Korean, this word encapsulates ‘love’ and ‘hate’ in one convenient package. And it describes perfectly my relation with the server attached to my game. Love and hate. As I described in a previous post, the Deadlock issues with our server have yet to be taken care of. Piece by piece I feel like I’m uncovering the reason for these issues, but there’s still a long way to go. Even though there are a ton of important things to do, the server comes first, because without the server the core premise of this game fails. (The game is about playing minesweeper with friends). In other words, I love/hate the server. Haha…

Still, as I go down my tasklist, each time I’m able to cross something off I feel a bit more positive. Step by step, we will release Spirit Sweeper to the world. Of course, one important part of releasing a game is to register it on the major app stores. Right now I’m in the process of registering on Google Play and iTunes. It’s actually my first time doing it on my own, and I was surprised to see that the two processes are a bit different. (I had thought all I needed was to prepare a description.) I’ve listed the differences below:

  • iTunes requires keywords, descriptions, and game screenshots for all the different iOS devices, in their respective dimensions. And of course, the iTunes process of accepting apps takes a lot longer, usually about two weeks, so you have to prepare for that when setting up your launch schedule.
  • On the other hand, Google Play does not require a separate keyword section. Instead, the keywords should be included into the description, making it much like standard search engine processes. This meant that we had to re-write the description to include the keywords. Also, Google Play requires a short, 80 character description that’s not required by Apple. Finally, Google Play games can be launched directly. This can be both good and bad, since Google Play won’t check for bugs on their side. But we’ve run some beta tests, so hopefully this won’t be an issue.

Let’s talk a bit about food. As a startup, there are times when we just forget to eat. Thankfully, our office is located on a university campus as part of their startup initiative, so we can eat at the campus cafeteria, which usually serves Korean food. Sometimes we order other things, like burgers… but usually, we eat pizza. Pizza, pizza, pizza… today we ordered from Papa John’s since their pizzas are quite delicious. In fact, we’ve gathered enough loyalty points at Papa John’s that we’ve eaten 3 pizzas for free already! Haha.

That’s all for today. Thanks everyone!

(愛憎): Love and Hate.

애증. 개발자와 서버의 관계를 지칭하는 단어다. (물론 개인적인 의견이지만) 서버의 DeadLock 부분이 아직 해결되지 않았다. 조금씩 실마리를 잡아가고 있지만 완전히 해결하기까지는 아직 갈 길이 멀어 보인다. 그밖에 해야 할 일들이 산적해있어도 서버문제는 지금 해결하지 않으면 출시 후에 유저 접속량을 감당하지 못한다. 결코 무시할 수 없는 문제. 서버와는 언제쯤 사이가 좋아질 수 있을까? 하하…T.T

준비: 애플 앱스토어 구글플레이 출시의 차이점

그래도 업무 리스트를 한 줄, 한 줄 지워갈 때마다 위안이 된다. 스피릿 스위퍼를 세상에 선보일 날까지, 느리지만 한 발자국씩 다가서는 느낌이다. 오늘은 앱스토어 등록 준비에 초점을 맞추고 있다. 검색 키워드와 게임 소개텍스트만 있으면 될 줄 알았는데, 애플 앱스토어와 구글 플레이스토어에서 요구하는 사항이 달라서 이것저것 신경 쓸 일이 많다. 먼저 iOS는 이미지와 키워드, 게임소개텍스트가 필요하다. 아, 필요한 이미지마다 규격 사이즈가 정해져 있어서 일일이 맞추는 것도 일이다. 그리고 애플 자체에서 진행하는 검수과정을 통과해야 출시 가능하므로, 출시일을 결정했다면 검수기간을 넉넉히 잡고 준비해야 한다. 한편 구글플레이는 올리면 그 즉시 출시다. (하지만 스피릿 스위퍼는 베타출시를 먼저 진행해서 문제점 등을 체크할 계획이다.) 또 다른 차이점은, 구글플레이에는 키워드를 따로 넣는 섹션이 없어서 게임 소개텍스트(4000자) 안에 키워드가 잘 ‘녹아’있어야 한다. (그래서 구글용으로 다시 썼다 T.T) 아! 그리고 80자 길이의 짧은 소개글이 필요하다는 점도 기억하길!

피자: 나의 일용할 양식

사무실에서 일을 하다 보면 밥을 제때 챙겨먹기 어렵다. ‘일’이란 녀석을 한 놈 해치우면 다른 놈을 또 데려오기 때문에 T.T 오늘도 파파존스 피자를 시켰다. 점심 메뉴는 주로 간단하게 해결할 수 있는 것으로 선택한다. 피자, 햄버거, 피자, 가끔 학생식당(campus cafeteria), 피자, 피자, 피자… 한 판 사면 쿠폰 한 개가 따라오는데 그 쿠폰을 모아서 공짜 피자 3판을 먹었다. 흐흐흐.. 암튼, 오늘도 쿠폰 한 개 득템!