I’m wirting this the next day because of the constraint don’t write work logs in an altered state of consciousness and, after some beers with René I felt compelled to write a work log, but I left it for today. And I’m glad, because yesterday was important.
I woke up with a very different sensation, the cloudy mood of the last few weeks was lifted, and I was mystified by it, since I couldn’t pinpoint to a specific source. In my sleep I had many dreams, among them one in which I won a modest lottery of 1,054 euros and I was incredibly relieved. The dream was not the source of my uplifted state, but it pointed to the fact that some of the stress is financially induced, and that relief will be found if I make even a modest amount of money.
I had proposed to myself to work from the library, but then I sat down at the computer and had an incredible focus run from 8am to 12, and only then I took work to the library, where my focus was somewhat diminished. Throughout the day I could only notice the difference in experience my mood was causing, and despite my best efforts to simply enjoy it, the ego was constantly trying to find the signs where I found this oasis in the desert.
Though various candidates were found, I had to admit it was simply a fluke. I have no control over my mood any more than I have control over the weather. And today, with a very minor hangover, the positive mood has dissipated. The sun came out briefly through the clouds and illuminated everything, then it was obscured again. Assigning a personal reason for this would be superstition. But it’s a big consolation to be reminded that that the grayness is not in the world itself, it’s simply a veiled sun.
But it’s become impossible to express that you really are concerned about the state of privacy on the web. Major websites have turned phrases like _ we care about your data_ and we value your privacy meaningless.
Go to, say, BuzzFeed. From the EU, you are presented with a Quancast Consent Management System sheet. Well, let’s see what this is about…
476 partners! The phrase we value your privacy should be appended with because we sell it for cash!. It’s madness.
It’s not that there’s a creepy person stalking our browsing history on the internet, it’s almost literally a big machine which is fed a lot of data so that it can serve you better targeted ads. BuzzFeed today has news on the death of Karl Lagerfeld, say you click on it, there is a signal that you are interested in fashion, and by piece by piece a profile of you is formed in this advertising panopticon.
My first experience with the panopticon was one time I wanted to reserve a specific hotel in Mexico. I introduced my dates to quote a price, and decided it was too expensive. This must have been a very strong signal for the panopticon, because from that day on, every website I visited had urgent advertising for this hotel “Last rooms available for Hotel Conchita, reserve now!”. It only ceased when my reservation dates passed.
As I programmed The Boolean Game, a question on the back of my mind was how I was going to monetize it. The easiest way would be to allow sponsors to include a marketing pixel, which gives them stats about the amount of people encountering their logo on a stage. The majority of companies simply want to know if the amount of money they are putting in advertising is money well spent, the problem is with the service provider who knows who did what and that’s when things start getting intrusive.
It would also justify charging a monthly fee to sponsors: if the play count was reliable and done by a third party, I could charge by event, and if the (popularity of my other games)[https://method.ac/writing/articles/gettingtractionwithwebgames.html] was any indication, I could be sitting on a significant amount of recurring revenue.
But allowing marketing pixels is connecting the game to the panopticon. And this is a dangerous thing in a game like this: if you know how a logo is built, it’s difficult to ignore when you encounter it. The value of the game is leaked into the advertising machine, which could figure out that a person who has played a stage sponsored by Acme is more likely to click on a banner with the logo of Acme.
This would leave a bad taste in my mouth. Dots connected, I couldn’t even dare to use Google Analytics to count the number of times a stage was played. I gave it much thought: either I paid for a premium tracking service which wouldn’t share the data, or I somehow devised a home-brewed solution.
In the end I opted the home-brewed solution. Visitor stats are already available in my nginx server logs, and I could parse them with [GoAccess]:https://goaccess.io/. I spent a day setting it up, and when I had it ready I thought: if this is something sponsors will see, then users can see it too.
So the (stats of the game)[https://boolean.method.ac/stats.html] are public.
Here rundown of how your data is used:
My web server (nginx) registers you visit on a log file. IPs are anonymized.
The data is parsed and only what is relevant to sponsors (unique visitors, mainly) is put in this public report.
The data never goes through a third party tracking service.
Cookies are not used, but your your game data is saved to localStorage. The game doesn’t have a backend, so none of this data is transferred to a server.
The data saved in localStorage is simply your settings (muted, animation speed), the stages you’ve completed, and the last stage you’ve played.
My overall approach is: the less visitor data I keep, the less I have to worry about privacy. If I don’t transfer data to third-parties, I don’t have to be concerned about what they do with it.
So, in essence, the title is accurate: we don’t value your privacy, because we don’t hold or transfer private data.
Resistance to work again. I once saw a TED Talk on introspecting where the main point was that introspecting should be done trying to examine the why, but the what. In essence, we can come up with ten thousand reasons why we feel like we feel, but useful thought is not directed at the why, but how do I change what I feel. Looking at the why only makes up unhappy.
My release date was set for tomorrow, but I won’t make it in time, at least not in the scope I was planning. But I will make a run anyways, and at the end of the day I will decide if I shall have a private release or a public one. Towards this end, I will need to put myself in a library instead of working from home, where resistance seldom finds me.
I’m not even sure why I don’t do this every day. I know I’m more productive from the library, but then at home I have my coffee, my bathroom, my desk, my large monitor. There I am getting into the why!
I was walking towards the gym feeling quite miserable, and I thought: even the most wildly successful release wouldn’t excite me. But, as usual, exercise put things into place, and as I was coming back I thought: It may be true, but failure wouldn’t sink me down either. I ought to take note to see if any of these outcomes truly matches the predictions that I’m making in this state.
I was about to write a closing sentence, and then I remembered that today is my birthday. It went by like Christmas and New Year’s: working, thinking nothing about it. I spoke with mom on the phone, and she told me a story which I hadn’t heard before: my father left for Canada while my mom remained in Mexico with my older brother. She called him to let him know that her period was a couple of days late. When it was confirmed that she was pregnant the family was reunited in Canada. While there, my grandmother counted the days and predicted I’d be born in the first days of February.
My mother interpreted this as doubt of fatherhood by her mother in-law, which would be verified by the date of birth. So she grew anxious as the days of February dragged on without me being born. Fortunately the effect of my father’s genes on my physical appearance is evident, more for the relief of my mom, because I don’t think my grandmother meant it this way.
So I had predicted my project would be born tomorrow, but in creative endeavors it’s the project itself whom chooses the date of birth. I’ll just nurture it until it’s ready.
I spent the day trying to implement the sponsored stages, and I found great resistance in doing so. There seems to be a friction between ideals and the urgent task of making some money. The inner conflict left me quite depleted, and when I met up with René at the gym, the conversation naturally turned towards monetization and then money in general.
It’s a really strange feeling: I honestly understand the motivation and the compatibility between creative endeavors and money making. I understand there is a transaction of value, and that it’s never wrong to take money from someone, provided that you provide them with equal value. But I seem to resent that the need for money is what is directing my actions.
A memory I have from my early internet days was a design blog which I admired. The author had become hooked to a telenovela and wrote a blog post about it. Suddenly, his blog became flooded with Google traffic, which was really positive for his AdSense income. Soon one out of every three posts was about telenovelas. The need for money subtly or evidently has an effect on our creative output.
It would seem the solution to this conundrum is that the transaction of value happens between the author and the end-user. Things get messy when the value is sold to a third party (Facebook selling users to advertisers, or writers selling to publishing houses, for example).
What am I selling then? I’m not selling users, for sure. I’m not selling my skills, that can only happen in commissioned work. René said it seems to be a rare chance where the advertising doesn’t get in the way, and the user gives it attention willingly. I think I’m selling brand recognition in a pleasant package.
Hmmm… that’s not a bad aim. I think the resistance has to do (at least in part) with the uncertainty over how much control to give a sponsor. The guiding principle seems to be: if it gets in the way of the user, then it’s a no go. We have enough annoying advertising on the internet, let’s not litter anymore.
Whew. I feel a bit of relief. With this in mind, I’ll create the landing page for sponsors sometime soon. I was dreading it, nothing good could come out of the feeling that I’m selling something out of need rather than conviction that it’s good value both for the user and the sponsor.
This morning I found great difficulty putting myself to work. I was strangely shifting between thoughts of great success and great failure. I was reminded of a reading that helped me go through a creative block: Karma Yoga by Swami Vivekananda. I read it again, and this time I understood much more.
A passage which particularly stuck in my mind is (paraphrasing), a man can have a library of ten thousand books, but he will only understand those which he deserves, and it’s by his actions (karma) that he will come to understand them. As the old reading offered fresh insights, I could only realise I’m not the same man that read this text some years ago.
I then went to a new library and found three hours of deep focus, then I came back home and I had a nap.
When I woke up I didn’t like what I had done. When one is in a less than ideal state of mind it’s difficult to distinguish between bad work and a perception of bad work due to mood. I undid what I didn’t like and I kept what was useful.
I then went to a yoga session at the gym. I had gone before, and despite the apalling quality of the teacher, I found myself much improved after then session, so I was willing to give it another try with a different teacher. This session was much better, and when I layed down for savasana I came into a profound state of relaxation. I hit a peak experience, I remembered why I’m doing all this, things fell into place and I thanked the teacher for the class with the outmost gratitude.
For a time I’ve been thinking it’s time to wind down this frenzy, it’s taken a tremendous emotional and health toll, but I was saying to myself I’d have to wait until the game was released to begin. But this experience told me it’s time already. I intend to hit my release date, but I’ll do it as I detach from the work that has been done.
The ideal man is he who, in the midst of the greatest silence
and solitude, finds the intensest activity, and in the midst of the intensest activity finds the silence and solitude of the desert. He has learnt the secret of restraint, he has controlled himself. He goes through the streets of a big city with all its traffic, and his mind is as calm as if he were in a cave, where not a sound could reach him; and he is intensely working all the time. That is the ideal of Karma- Yoga, and if you have attained to that you have really learnt the secret of work.
Therefore the sage goes about doing nothing, teaching no-talking.
The ten thousand things rise and fall without cease,
Creating, yet not possessing.
Working, yet not taking credit.
Work is done, then forgotten.
Therefore it lasts forever.
I had a melatonin pill and I’m near dozing off. I felt tempted to leave the work log for tomorrow, but I opened write.now to let my fingers do the typing. I will write stream of consciousness and see what comes out.
Let’s see… I wanted to change the initial stages. I feel that, in apps as in real life, first impressions count a lot, so I wanted to get it right. I thought: perhaps it would be cool that the first thing you do is the logo, this way I can forego the intro screen and have the user basically build it. My clever idea hit many rough spots, it was not ideal as a first stage.
But then I thought: what if it is done sequentially? Not the entire logo, but piece by piece, and then at the end of the tutorial you have the full logo. Ahhh, and then you could set the favicon—but that would be a nice to have, and probably people wouldn’t notice it at all, even if you pointed it out. But what if you make it explicit? “Build the Favicon”… Hmmm… I hadn’t thought about that. It would be cool. After this, you could have a call to action to save it as a PWA on your home screen.
My thought is diverting: calls to install a PWA always happen at the wrong time, I don’t know if I want to install it until I know that it is useful or interesting to me. Notifications would be cool so that you know when there’s new stages installed, but that requires work beyond what I’m willing to invest at this time. I’ll leave this for later, this is not necessary for release.
The tutorial mechanics seem to be working: non-obtrusive, non-verbal, simply a touch pointer showing you what to do that disappears when you interact with the app. Even if you tap on it, the tap goes through and the animation disappears.
I think, what I ought to do tomorrow, is to think of the game in a narrative way. I’m completing the game from start to finish, and all steps along this experience have to be pleasant. Yes, I’ll try this out tomorrow. Time to go to bed.
Do you hate onboarding instructions? I do. With all my heart. skip skip skip just let me try it dammit, I’ll figure it out!. But when it comes to creating my own products, I fear people may get stuck. To this day I receive a couple of emails per month telling me the Bézier Game doesn’t work, despite having animated instructions (which could be improved, but anyways).
I came to this challenge again. I’d say the interface is self-explanatory, but there are some features which are not obvious and need to be pointed out. I was reminded of my time as an airbnb host: you either drop off the keys and wish them good luck, or you provide a full tour of the house, but you can’t just show them the quirks of the washing machine and leave them to their own devices.
This particular washing machine had a peculiarity where some people got stuck: the door needed to be opened by pushing instead of pulling. At first I’d mention it in passing, but when I got contacted by whatsapp I noticed people weren’t paying attention. And I can relate, after arriving from a long trip I’d be thinking about the bed and not the washing machine. So I devised a way in which they would remember: I’d point out the quirk and then ask someone to actually open it.
I’m trying to translate this concept to the onboarding, where you can interrupt the animation by simply interacting with the interface, no need to skip: you skip by doing what you’re supposed to do.
Something intrigued me today: I was finding great difficulty designing in the morning, so I looked at my todo list and chose the opposite: figuring out how to install an nginx log parser so that I could get visitor stats (more on this later). This went extremely smooth, I was deeply engaged with the challenge and I found myself speeding through the task, understanding what I was doing at every step.
After lunch I had a nap and my REM activity was purely auditory: mostly rambling voices. Weeks ago I had a period when my REM activity was visual, and one morning I sat down to meditate and I could project how things would look even while in motion. At this time this is unthinkable, yet programming tasks seem easier. My hypothesis is that REM sensory hallucinations reflect on the ability to do certain kinds of work. Some years ago I asked my mother if she saw images or heard voices before sleep (I suppose this is an ongoing topic) and she said she always saw faces. She is a visual artist. When I come out of this isolation I’ll surely ask around.
The reason why I put so much effort towards installing custom software for visitor stats is because I’ve been circling around an idea on how to give advertisers what they need, while respecting user privacy.
I recall one time when I searched on a travel website for a specific hotel in Mexico and introduced my dates of travel. Some days later I booked it on a different website, but the advertisement for this website, telling me that there were still rooms available on the dates I had selected, was following me all over the internet. I was disgusted at their tactics, and soon installed an ad blocker.
At the same time, now that I need to cater to the needs of advertisers I see that it is utterly unreasonable for them to take a leap of faith and just buy something which they don’t know if it will be a good return on investment. The mechanics are valuable, since I will be selling stages. Advertisers usually track their effectiveness with a single empty pixel, so they know how many visitors are seeing their ads. The problem is, as far as I understand, if you have a Facebook account this pixel will identify you to it, and thus your privacy is breached, and the logo could follow you all over the internet.
This breaks the don’t do to others what you don’t want done to you maxim, so I could just register unique visitors and sell the stage on people who loaded the game. The problem is: there’s no warranty that a person who loads the website will play a sponsored stage, they would need a good idea of how many visits a sponsored stage would get. Here Google Analytics shine, you just send an event and this is registered independently from unique visitors, but this would entail the horrible experience of cookie consent and all that “we care about your privacy… but we have no idea what google is doing with our data” hypocrisy that pervades the web nowadays.
After many deliberations I realized I already had the capability in my own server. I could get the information I needed from nginx’s logs, I will use a marketing pixel on a sigle “sponsored” stage and this will register as the event, and then I could confidently sell a stage saying: “this sample sponsored stage has had XXXX plays this week”, and the information would never leave my ecosystem.
I opened my eyes with the strangest sensation of waking up to a different reality. Instead of a confused mind and an exhausted body, I was alert and well rested, and I came out of bed to prepare coffee to put myself to work at 6:30am. I wanted to hit the gym in the morning, but I couldn’t pull myself away from the computer until the sun began hitting the monitor at 5pm.
The work tackled was very challenging, and I had been putting it off because I knew I wasn’t in the right frame of mind. I noticed myself no longer grinding my teeth or holding my breath, no voice in my head complaining, and I took no unnecessary breaks. A metaphor came suddenly to my imagination: I was a hot knife cutting through butter. What was I before? I thought: a dull saw cutting through metal.
After lunch I had a brief nap, and I dreamed I was sitting at the table with my brother and a friend. “Have you ever dreamed that you are working?” I asked them. They both rolled their eyes like saying jeez, not this again. The subconscious was kind enough to provide two characters who never appear in my dreams so that I didn’t err the meaning: it’s time to broaden the perspective, my life has been nothing but dreams and work for the past ten weeks.
I finally hit the gym and found a great working spot where I put another hour of work before my workout. Then I relaxed myself at the sauna and meditated with a clear mind for a long time. I left the gym somewhat mystified at the sudden upswing in mood. I’m not attached to it (I only know too well that by trying to hold on to it, it would squeeze right out of my hands), but I can only help at being disconcerted at the seemingly disproportionate effect on mood.
A memory from almost a year ago came to mind: I was beginning my sabbatical, and I had the opposite problem that I have now: I wasn’t getting attached enough to my projects as to bring them to conception (let alone gestation and birth). The enthusiasm for my ideas would fizzle out as soon as I began working on them. So I decided I needed a break, and I head to Alicante to explore some caves.
Though I accomplished what I planned, I didn’t really feel connected to my adventure. It was exhausting and it felt pointless. I was coming back home dejected, and when I arrived to the bus station in Alicante City I saw that I had lost my bus, and the next one was leaving in three hours. Unenthusiastcially, but with nothing else to do, I left my backpack in a locker and head out to explore. In the middle of the city there’s a high hill with a fort called Castell de Santa Bàrbara, I approched the hill through the city streets, trying to find a way up, but everything seemed closed off.
After sorting through some narrow pedestrian corridors I came across a sun bathed patio full of flowers, and a beautiful young woman was helping a young toddler take her first steps. I asked her if this was the way up, pointing to the narrow alley up ahead.
She looked up and smiled “Well, yes, you could go up that way, but I wouldn’t recommend it. It’s steep and a bit dangerous. But if you head back in the direction you were coming from, eventually you will find a staircase, and on the way up you will find a very nice viewpoint shaded by trees where you can rest a bit”.
In an instant the heavy clouds that sorrounded me were dispelled, the beauty and the kindness of the moment unthawed my heart and I smiled for the first time in weeks. I thanked her profusely, turning around just in time so that she could not see my eyes filling with tears.
On my way up I sat down at the viewpoint she had recommended. The setting and the view were indeed beautiful. My photo makes no justice to the effect it caused upon the soul, but I was glad to find it in my library. The entire trip had become worthy just for that moment of kindness.
And walking back from the gym it hit me: it’s kindness which struck my heart once again.