Wed Jun 24 2020

dog, wolf, yelp

I had a breakthrough idea last night as I read Pulling Profits from a Hat.

Chapter 3 in the book was talking about 5 values that successful businesses posses. I forgot them all except the last one, mission.

What is my mission for Sakura Blossom Trading Post? I figured it out. My mission is to bring Precious Memories trading card game to the USA.

I’m going to create a website where users can view and submit card translations. That website will link back to my store in the form of very specifically placed and relevant product advertisements.

But that’s not the idea I came up with last night. I’ve had the translation idea for awhile, and I already have work in that area in the form of a code library which rips card data from the official website.

The idea I came up with has to do with customer retention. I want to keep my customers happy, because customers mean everything to my business success.

I wrote about some sort of copy of the official P-Memories prize campaign. It’s really just a way to incentivize repeat sales, sort of like a loyalty program.

I think I figured out the exact method I will be using, and the thing that prompted me to use this idea is in the business name itself.

Sakura Blossom Trading Post

Do you see it? It’s right there!

Trading Post.

Nobody really trades at SBTP. I guess I could stretch that meaning to say people trade money for products. But what about straight trades? Nada.

It’s not like I have a physical store where such card trades could even be facilitated!

Virtual card trading, with cards that can be redeemed for physical cards!!!

  • Trade with friends
  • Gift to friends
  • Convert to points
  • Redeem

Customers will receive points for making purchases with SBTP. Those points redeem virtual gift boxes, a lot like crates you might see in video games.

The virtual gift boxes contain tradable cards! But it’s not just virtual. Every card in the virtual system is backed by a physical card. The customer can hold onto the virtual card, collect, etc. Or they can redeem it which means I pull that physical card from a box and mail it to them!

They can exchange for points if they don’t like that card.

It could maybe use a blockchain for token ownership, but that’s probably more trouble than it’s worth. And there would probably be fees for simply transferring ownership which makes that whole idea financially unfeasible.

I don’t need decentralized trust here. I just need a database!

Now I want to make a snazzy website with animations, SFX, and animated cards like the Jest website has!

Customers can have a deck of virtual cards. Clicking on a card would bring up a menu, where the customer can choose an action.

I covered those actions in the four bullet points above.

Trading would require that I code a system where customers can view cards on the trading market, submit trade offers, and list their own cards to the market.

Gifting would require a system which allows customers to send virtual cards to an e-mail address or another customer account.

Converting would put the virtual card back into the pool of cards which appear in virtual gift boxes.

Redemption would require a system which removes the card from the user’s inventory and sends me a notification to mail the card.

Ohhh, mailing could be free, but I would add a tracking number option for an additional fee!

I didn’t really talk about the pool. I’m thinking in database land here. The prize boxes would be empty unless there are cards that I put into them.

So the idea is to create a pool of cards from which prizes are created. I would create a physical box specifically for prizes in the prize pool.

When I make a sale, I will include with the item a sticker which has a prize redemption code. These prize codes are something I talked about in my blog yesterday. They’re generated by the prize redemption software and it’s something I can print out a bunch of in advance and have queued up for when I make sales.

At the time of prize redemption code generation, a prize is randomly selected from the prize pool and mapped to the redemption code. It’s all hands off– the computer just figures it out.

There will have to be some sort of expiry on the prize redemption codes. I’m thinking 1 year is a good amount of time. That gives plenty of time for pre-preprinted stickers to remain on the shelf before they ship, and plenty of time for the customer to redeem the code.

There will also have to be an expiry on customer accounts, because I don’t want to get into the situation where a customer is hoarding virtual cards and I have to hold onto a huge stack of physical cards for them.

I’m thinking 1 year of account inactivity is grounds for account closure, at which point any cards left in the user’s inventory get placed back into the prize pool.

I am so incredibly excited about this idea. It seems like this would be the culmination of everything I’ve ever worked for. Code. e-Commerce. Customer support. Database management. Sales. Collectibles. Video games. Animation. Web design.

It’s going to take all my skills to pull this off, but I’m determined right now. This could be a big thing for my business.

It’s like Steam marketplace, but for rare Japanese trading cards!

It doesn’t have to be just Precious Memories, either.

I could break into Cardfight Vanguard as suggested by my favorite customer. I could look into more collectible cards such as the ones I received in a bulk lot. Evangelion and IDOLM@STER were a few of the featured series and these cards have no game to them. They’re simply collectible cards with which to celebrate and enjoy.

I’m looking into tech stacks right now. I am not going to make a single page application because I have terrible success with those.

Instead, I’m thinking of using the jamstack philosophy. Apparently it’s a server side rendered paradigm and it’s meant to be served from a simple HTTP webserver rather than having a complex Javascript backend. I dunno how databases are supposed to work in such a stack, but apparently it’s a solved problem and there are ways to do it.

I’m thinking that there is still a regular database backend somewhere, but it doesn’t have to be tightly integrated with the part of the software that serves pages to the client.

IDK. I’m talking out of my ass. I really just discovered Jamstack yesterday, and I have a lot to learn about it.

I tried getting a Jamstack framework called RedwoodJS up and running, but ran into an error. Issue 69, Eyyo! 😎😝

I’ll figure it out, or I’ll switch to something that I can figure out. Vercel is one that I’ve been meaning to give a try.

I walked 25 laps around the firepit this morning. It is so sunny and warm today. Yesterday was a really nice day as well. Apparently it’s summer now. I had to apply sunscreen when I left the house yesterday. Sunscreen is going to be really important as I go forward!

I think today is payday. $25 should go to my bank account. I don’t think I deserve it yet. I think I just want to put that money back into the business. I want to make sure I continue to grow. I think my rent getting paid is just about all that I want to take for myself right now.

I got food stamps to handle food for the moment. I suppose I’m going to need money every now and again for sunscreen and barsoap.

I do want to make paying myself a habit, so I suppose I’ll withdraw something from paypal.

There, I transferred $5 to my bank account. That’s my paycheck!

I had to discontinue my YNAB subscription because I can’t afford the $80. I wasn’t using it all that much because I didn’t have all that much income!

I resolve to being able to afford YNAB one year from now. I’m putting it on my calendar!

In one year, I’d like to bring $1000 home every month. Right now I’m bringing home $20 a month ($5 every week.)

I can do this. I can scale this business and create something meaningful and worthwhile.

I had a nap which felt incredibly restful. I awoke with so much energy and vitality. I rarely get that feeling and I am so grateful to have had it.

I slept on my back on my couch. Those are two conditions which rarely occur. I think the overall comfort I felt during that nap is what contributed to the restful feeling.

I did some coding. I got a response to the issue I posted on the create-redwood-app repository. I didn’t even think to check the main redwood code respository! Apparently the issue I was experiencing was already documented there.

I made some progress on learning GraphQL and Redwood. I watched all four Redwood tutorial videos, and now I have a good feel of what Redwood can do. Redwood will be an excellent choice for the app that I wish to make!

I felt so calm and centered as I followed the tutorial, reading aloud and adapting the tutorial to my own project. For once I didn’t feel rushed to code. I’m exactly where I want to be in life. I have the lifestyle of my dreams, and that means the world to me.

I don’t have to rush to create something. I can take my time and make something that is quality. I don’t have to rapidly scan the page and read everything as fast as possible. I can take it slow and learn at a healthy pace.

There is no need for me to get stressed out or panic. Web development is a creative process best handled in a clear state of mind.

Redwood is going to be really good for me. There are so many solved problems in web development which slow me down. Things like creating admin interfaces, CRUD, scaffolding, page generation… Redwood takes care of so much of that, and lets me focus on the shit that matters.

Redwood’s built-in admin interface

I made a Prize schema, and RedwoodJS took care of creating an admin interface which will allow me to create new prize items in the database. I didn’t have to do a damn thing with the GUI to achieve what is shown in the above screenshot.


If you’re a developer you might notice a no-no in the above screenshot. I pasted a base64 encoded string into the image field. That’s a 3.2 MB image I pasted. If I were to create a huge prize pool which contains one 3.2 MB image per prize, that would quickly turn the database into a bloated mess of image data.

Luckily Redwood threw an error to remind me of this.

PayloadTooLargeError: request entity too large

I took 5 minutes to think of a better way to handle images. I’m settling on a URL to an image, which means that the image could be served from the static file server. I’m not really sure how to handle file uploads in Jamstack, or if this is a thing that should be handled another way.

What I do know is that saving an image URL in the database rather than storing an actual image file in the database is something that is very common in industry. I think Discord does it too, as indicated by image URLs often being located behind akamai.

I’m looking at my CoDA 30q #13 and it has to do with higher power. I struggle with higher power. My instinct is to put this off or skip it. I think it’s important to do though.

Building my own concept of a Higher Power.

I read the section on pages 18-22. Apparently religion reminds me of an angry authoritarian god.

There’s a lot of authority baked into religion.

Brené Brown talks about one of the qualities that shame resilient people have– spirituality.

So I think it’s important to start on my own spiritual journey.

But first, I’m going to ride my bike around the block!

I rode around the block. I’m going to think on the Higher Power thing.

  • I’m grateful that I don’t have Covy.
  • I’m grateful for my strengthening body.
  • I’m grateful for my family and my brother D. who nicely greeted me a few moments ago.
  • I’m grateful for the warn sun and the vitality I receive from it.

7. My problem has a solution. I will work on a plan.
8. I am a survivor.
9. I refuse to give up because I haven’t tried all possible ways.


Looking for VOCALOID trading cards?

Check out Sakura Blossom Trading Post