You've successfully subscribed to I am Sven
Great! Next, complete checkout for full access to I am Sven
Welcome back! You've successfully signed in
Success! Your account is fully activated, you now have access to all content. - Week 2 - Week 2


Last week ended with a hacky website based on an angular material starter project found on Github. This week we will hopefully finalize the integration of the pre-sale website with proper UX and hopefully acceptable UI.

Day 8

The day started with an issue between my angular app and the gumroad widget I am using to process payment information for the presale. I want to reliably pass the triplets generated by the algorithm, or chosen as a custom address by the user to the widget, so that I will have a way to ensure who reserved what address. Currently I simply store a email : triplet pair in the database which will tell me who reserved what, like this:

However, the gumroad widget lets the user enter their email and a custom field I defined. First of all I want to take that friction out of the process to have to enter the email AGAIN, and to enter the triplet manually, which would also leave me open for typos. I was able to pass the desired parameters through the data-gumroad-params parameter supported by the widget. But the angular loading and rendering engine is messing with my lifecycle, and I can't guarantee it will always be prefilled. The only solution I have found so far is based on this stack overflow article:

Gumroad Embedded Widget breaks on navigation in angular
I want to include Gumroad’s Embed Widgets in my Angular application. What I’ve tried: I added this to my index.html: <script src=“”></script> I

And I intend to implement it today. Further, I am hoping to be able to disable the input fields for the email and triplet in the widget to make 100% sure they won't change.

Once that is all working, I can confidently run my pre-sale of addresses and ensure I can connect a paying customer to the apps database.

Day 9

After re-reading the article I found yesterday, I realized that "all I had to do" is call createGumroadEmbed(), at the time i wanted the widget to be loaded, instead of on page load like when I added the script tag to the index.html file. So I downloaded the current version of the gumroad javascript:

As referenced here to from the link in the widget:

I am sure this will come back to bite me at some time once the filename changes, and I intend to fix this and load the file the right way dynamically in the future. But for now all I did is I added createGumroadEmbed() to the end of the file and loaded it when the address is to be reserved, like so:

Thats all that was needed. Now I can predefine email and the custom fields in the widget before I load the widget and they will be populated accordingly. Saving some time here by using a final 3rd party solution with gumroad, and spending half a day coding a workaround :P. But I am happy with the end result. Have a look, I also changed the UX slightly so that the widget replaced the initial form.

Day 10

Did not get much done today, but started playing around with the UI design through UI Bakery. Pretty neat tool to quickly put together a layout. And supposedly it can generate angular code. Though so far I have not tried that. I need to find some good visual elements, pictures, etc to bring this more to live.

Day 11

I finally setup a temporary Landing page on

I also butchered the logo into a icon:

And kept working on the UI for the pre-sale website. I have to admit, anything which has to do with design, takes me a really long time. I am not very good in putting finishing touches on things. It comes naturally to me to design a layout and the UX of the product. But once it comes to the visual details I am not the best. On top of that, as of now I don't have a lot of visual elements for the brand, so I just stitch them together as needed, like the icon above. Until I finish the design, and export the code, you can follow along with the butchery on the temp deployment through UI-Bakery.


Day 12

I have been in procrastination mode a bit today. I don't feel good about it, and I think its due to the design tasks which are daunting me. I have done a bit of outreach though to try to connect with the crypto community. Unfortunately that did not go so well as of now. I have joined 5 large bitcoin related or crypto related Facebook groups and posted about the project looking for feedback. I got responses right away, unfortunately they were all scams (of sure look like scams at least).

Maybe the group picture should have been a hint?

Day 13

After some master procrastination over the last few days, i finally picked myself back up and went back to the roots. I dusted off a old project landingpage I liked to repurpose it for

First I tried to hack the landingpage into a Angular Component. The page was pure HTML, CSS and Vanilla JS. Since the work I did so far was based on the angular project I found as a starter project, I thought that to be the fastest way. After wasting 1h on that I scrapped the idea, and went the opposite direction.

I designed the landingpage and added all the business logic I had written in angular. It took me ~2h to get the core functionality integrated and the presale working through gumroad. Have a look:

Tomorrow I need to integrate the second flow for the free address. However, that is essentially just replicating what I did today and cleaning it up a bit. But I feel confident to have the website done and maybe even deployed before tomorrows live stream.

Day 14

The second week is coming to an end, and we will close with a bang. Before we get to the live stream of today I wanted to give an update on some other developments.

Social Outreach & Market Research

After the debacle of receiving almost exclusively scam messages from my FB outreach, I joined a few more groups and asked for feedback on, one of which I wanted to share with you. I posted in the group "Bitcoin Official" which has almost 600k members.

The monkey was a gif, and he was clapping. :) Its also notworthy that Kri Gell is the  Admin (founder?) of this Facebook group.

What's even more interesting than the kind words however is the link to someone commented. Paystring is a HTTPS/DNS based protocol which basically does what I envisioned with I have yet to dig a bit deeper, but it could be the underlying technology I could use to implement the business logic for

Open Source, Universal Payment Identifier
PayString provides a single ID for anyone needing to send or receive money. Learn about PayString’s open-source protocol & how to connect users on any payment network.

One company I found while I was looking deeper into payString is, which at its core seems to be very similar to my project, with one distinct difference. To use their service, you will need an existing bitcoin (or other crypto) wallet. I believe this step could still be intimidating to some users, and I aim to simplify the user experience on that end by integrating that.

Website Rebuild

As mentioned on last nights update, I ended up rewriting the pre-sale website completely. Today I finished the core functionality to reserve both

  1. A FREE random address
  2. A Custom address of the customers choosing

What's left for tonight / tomorrow is to do some more UI cleanup on the checkout as well as bullet proofing the checkout process to ensure that every pre-sale goes through correctly. Oh, and I need to wire up the contact form on the bottom of the website.

Live Stream

And finally we get to the highlight of the week. I decided to add this here already and send the post as a newsletter now to allow some of you the opportunity to watch the stream live. Last week I waited till after. Let me know which format you prefer. Unfortunately YouTube does not allow me (not sure why) to allow embedding on the video until after the live stream, so here is the link to it: