A modern-day Dokkōdō

Prioritize mental, physical and financial health.

Use all of the day. Don't spend all your time in virtual worlds.

Accept inconvenience. Don't complain.

Think about what, ten years from now, you will wish you had gotten out of life now.

Spend some time in the sun every day.

Eat in moderation. Don't eat bad things.

Throw away things you don't need.

Meditate every day.

(Inspired by the original Dokkōdō).

Posted in Daily Life , Thoughts | Tagged

Raspberry Pi powered Legobot: latency

I've blogged before about my neverending attempts to build the perfect robot to drive around my apartment remotely. I've gone through a lot of mechanical designs, and had a lot of failures. Eventually I settled on something that was very much simplified compared to my initial ambitions, but it works alright now. It's been serving as my remote camera every time we go on holiday, so it's doing its job. Here's a writeup on the software latencies involved.

At the core of this contraption is a Raspberry Pi that controls a whole bunch of Lego motors, and one set of lights. I wrote my own Python+Django web app to control access to the device from the internet. It uses Django Channels to send the user input to the server-side, where the web app controls the Raspberry Pi's GPIO ports directly. This means it's not very thread-safe, but then it was never really meant to be controlled by more than one user at a time anyway.

For the video stream, I tried a lot of different solutions, but all of them had terrible latency. The problem is that the Raspberry Pi just does not have enough CPU power to encode the video into a stream and send it over a websocket. However, after a long search, I did eventually find a solution someone else developed that's pretty nifty: it uses the native Raspberry Pi video tool to stream the raw (H264-encoded) camera stream directly to a websocket, hosted by a Node.js webserver. This means that the video stream has to be decoded client-side, in the javascript executed by the client's browser, using a nifty js library. (I'll eventually get around to placing links to these libraries, once I remember where I got them from). Turns out this works pretty well!

Here's a really terrible video that shows the latency of the controller software, as served from a web page on my mobile phone, over the phone's 4G connection, so not on the wifi.

This video was taken on my old Canon S110 camera, which has a super slow-mo mode which records at 240 frames per second. So, counting the frames between events, I get these results (averaged over a couple of different videos):

  • Time between pushing the 'lights on' button in the mobile phone browser and the UI registering the event (client-side-only lag): ~31 frames = ~129ms.
  • Time between the button being pushed, and the lights turning on in the video: ~12 frames = ~5ms. I'm guessing this is very short because the actual action is being sent to the Raspberry Pi well before the UI update begins, so it'll overlap with the first action. Time between finger push and real-life consequence: about 135ms.
  • Time until the mobile phone video stream shows the lights being turned on (since the lights actually turned on): ~55 frames = ~229ms.

All in all it's close to half a second between requesting the action, and actually seeing confirmation of the action on-screen. And that's on a fairly reliably mobile connection close to my home. It's a different story altogether on crappy hotel wifi halfway across the world, although I've also been to some amazing hotels in Japan where the speed was very similar to the speeds in this test.

Still to do: open-source the Raspberry Pi software I wrote for this. More to come!

Posted in Tech | Tagged ,

Moving the goalposts

This blog is finally on https! It's been a while in the making. I first tried this over a year ago but couldn't get AWS from generating an infinite redirect loop. In the end I think it was a combination of the Cloudfront distribution doing redirects and the S3 bucket that this blog is now served from also doing redirects. I think I may have actually solved it at the time, because I did the same thing again this week and it worked, but it turns out the changes take quite a while (over a day from what I've seen) to propagate, so I never knew that my fix worked the last time I tried it.

So, 2019 now. Middle age has definitely struck. I've found myself very busy last year. Busy enough to not have enough mental energy for side projects or hobbies. My major peave of the year is definitely my commute. My commute to work is, by my own standards, way too long. It's one of the things I'd like to improve on this year, if at all possible. Currently I've got perhaps 3-4 hours of free time after work, which, after dealing with all the adulting (house chores, mortgages, that sort of thing) leaves me with no time during the week where my brain is actually functioning. While I'm unhappy about that, it's also a path I've chosen for myself, and the benefits (which I won't go into here) outweigh the costs. And there's things I can do to optimize that.

One thing I definitely should reflect on when thinking about last year is the concept of moving the goalposts. I keep perceiving my life in a way that makes it seem that I haven't accomplished what I wanted to accomplish, but I forget that I had very different goals a few years ago. While I was kind-of-sort-of aware that I had been doing this over the past year, lack of free time and preoccupation with other things left me until the December holidays to really realize how much my life has changed in the past few years. Whilst all of the world around me was going to shit in 2018, for me things have improved massively in terms of knowledge, financials, living quality, and all kinds of other things. When I'm busy living the daily life it's easy to overlook that and just focus on optimizing the next thing that's not quite perfect yet, without realizing that I've already dealt with 99.9% of the biggest worries I could be having. I think it's ridiculous to value the remaining .1% of quality of life as high as the 99.9%, but that's naturally what my brain does, and it needs conscious effort for me to stop thinking that way. My goal is to try and be more aware of that in 2019.

Here's to a good 2019. May your goalposts be moved ever further.

Posted in Daily Life , Tech , Thoughts

Hello blog!

Hello, blog. It's been a while.

Last year, after the previous blogpost, I felt a good sense of closure for the blog, so I decided to take the plunge and turn the entire site into a static site. No more wordpress, no more new comments, no more new posts. This turned out to be pretty easy to do: all I had to do was scrape all the pages on the domain and upload them to S3. I had been meaning to get an https certificate set up, but ran into some snags that I couldn't be bothered to work out. It's still on my to-do list, but at the time it was just yet another thing that prevented me from continuing the blog.

Continuing? But why? Didn't I say that I was done blogging? Well, yeess.. but..

Everything I said in the Goodbye post holds true, and I stand by what I said. The internet is not the same place it was when I first started blogging. Compared to 10 years ago I still feel quite strongly that it's way less appealing now to to put content online. The second argument, about my own life, also still holds true. I really do have way less things I want to blog about, and way less time to write blogposts. It compounds, of course: because the internet feels less inviting to me now, I feel the need to structure new blogposts better, more coherently. That costs more time. It all compounds.

But despite all that, during the past year I did find myself occasionally having the desire, the inspiration and the time to blog. Even if the amount of things I write is cut down ten-fold, there will still be the occasional blogpost. So, while the desire to blog was occasionally there, I was blocked by having made the site static: with no wordpress interface it's just a major pain to manually write something: I'd have to manually edit HTML files, update the index page, update the category pages, tag, pages, archive pages.. It's simply a non-starter. I had to make this easier.

There's a bunch of static blog generators out there. Some of them look nice. I'm willing to bet that there's a very large change that whichever one I pick won't be maintained any more ten years from now, and if there's one thing I hate it's dealing with someone else's codebase in my free time. Big nope. Since I'm a web developer anyway, I decided to build something myself. That was in January..

I got pretty stuck on doing something simple. If there's ever a second thing I hate, it's dealing with my own codebase in my free time, so I wanted to make things as simple as possible. This often meant that, as soon as I wrote something, I immediately discarded it for being too complicated. Perfect is the enemy of good, and nothing got done for months. I had decided that I wanted a flat file format consisting of a yaml section for each post's metadata, and markdown(+HTML) for the post content. But I really didn't get further than that, because I desperately tried to pretend that it was just a small project and could be contained in one simple file. I finally found myself with a lot of free time this week and decided to tackle the problems head on.

The result-for-now is that I ended up with more code than I wanted, but nothing too crazy. Since I'm the most familiar with Python, I ended up writing a template renderer using jinja2, a generator which gathers all the pages that need to be updated for each article, and a publisher that uploads to Amazon S3 using boto3. No other dependencies, although I did write a little preview site in Django just so I could get instant gratification as I was doing all the template and CSS tweaks.

I ran into major issues with transforming my original blogposts from Wordpress to the new yaml+markdown format. At first I was working on a scraper-like tool that would read my old blog's static HTML files and do some parsing. Then I found out that for some reason my old static blog was missing all posts before 2007. So I had to deal with the Wordpress SQL backup. I wasted an hour trying to import the bloody thing into SQLite, but ran into countless SQL dialect errors. Eventually I gave up and installed MySQL and ended up wasting another hour getting all the settings right and connecting to it from Python. In the end I did manage to extract all the posts from the database and into happy little human-readable flat files.

Then I hit another snag: turns out a lot of posts on this blog use special [block] tags for extra functionality, and that of course wouldn't work as-is. So I had to convert those to HTML. Since I was doing some search-replaces anyway I decided to do some anonymization as well: my goal for this blog is for it to be a one-way street: if you already know me it should be easy for you to discover this blog, but if you don't know me already, searching my name should not bring up this blog as the topmost hit. I realize I am completely failing at this at the moment by having a Github link in the header. That'll probably go away at some point.

Another snag was the post count: since each page shows the number of posts in each category, I'd have to update very single page every time I add a post for a category, just so the counts are updated. What a pain. I decided to remove the counts from the HTML entirely, and I added a separate stats.json file that adds the counts in through javascript. No javascript required for this blog, but it does do enhancements.

It was at this point that I realized that I was getting very carried away with everything and that I had to put a stop to this: I ended up spending the better part of five days rather than the two or three mornings I had estimated. But finally I am in a state where I can relatively easily write a new post and publish it. I need to have the python code and the raw blog contents on the machine that I'm writing from, and it currently only works via a command line one-liner, but it works. I intend to make a very basic front-end for it at some later point in time so I can publish from any machine using a Django app. Another thing I'd like to add back is the comments section. Who knows, perhaps I'll get around to that before 2020..

There's a lot of things I want to do, both in terms of adding features as well as things to write about. I still want to write down in detail what the Lego Raspberry Pi project ended up becoming, and I also want to publish the static blog generator on github after I'm done cleaning up the code. Who knows, I might even be tempted to write about my personal life again at some point. In any case, stay tuned for more exciting content.

More to come!

Posted in Daily Life , Tech , Thoughts

Goodbye blog

It's time for me to acknowledge that this blog is becoming less and less of a priority in my life. I've tried to re-motivate myself for blogging by attempting to open a Patreon account last year, but that hasn't been very successful. For good reasons, I should add, because if you're going to spend money on Patreon there's a lot better places to spend money on than this silly place. I'm not intending to wipe this blog off the internet or completely stop posting, but the content of this blog has definitely changed from "I am posting at least weekly about important experiences in my life that have affected me deeply" to "I am posting once every few months about stuff that I have trouble motivating myself for". So I guess some closing words are in order.

There have been some major changes in my life lately. I got married. Bought an apartment. Bought and sold a car. Changed jobs. But I think the one major change that is a constant throughout everything is: I got older. I continue to get older. And as I get older, the amount of importance I place on my own life only decreases with time. I believe this is strongly correlated with intensity of experience. Ten years ago I experienced everything for the first time and was amazed at what life could be like. It was something that I felt I had to record, not even necessarily for others, but at least for myself. Formative experiences. The internet was a more innocent thing at the time, and a blog seemed like the right place. The internet was full of friends, not of crackers.

On all these fronts the zeitgeist has moved on. I am at a point in my life where I don't have many truly 'new' experiences any more. There's still loads of stuff I've never done, but I've done enough similar things often enough to be able to relate and use my experience in new areas. For example, my experience in touring cycling gives me a broader knowledge that can be applied to backpacking. It also gives me a starting point if I ever wanted to venture into speed cycling. My experiences in traveling to various countries means I've learned how to get started on exploring other new countries. My experiences in learning several programming languages and countless frameworks-du-jour means that it's pretty easy for me to pick up other new software technologies. It's a kind of meta-experience: it's the experience you need to be good at experiencing new things.

Having meta-experience is nice, but also not nice. It definitely seems easier for me to start any random new thing at this point in my life compared to ten years ago, but also, I could not possibly derive the same kind of enjoyment, the same kind of 'new-ness', from it. Less intense experience means less desire to blog about it.

Another thing that's changed since I started this blog is 1) social media, and 2) my relationship with my friends. When I started this blog Facebook was only just becoming popular. Video calls existed but kind of sucked, especially if you had to explain to non-tech-savvy people (my parents) how to do them. This blog was a great means of staying close to the friends that I made in Japan after we all went our separate ways. That was ten years ago though, and the amount that I communicate with my friends today seems to be a better fit for Facebook than for blogging. Even my un-tech-savvy parents figured out how to use Facetime, so there's no shortage of communication methods.

It's definitely worth mentioning here that the internet has changed. If you're applying for a job, companies you apply for will without fail find out everything about you that's publicly available. That's only rational. I've had a negative experience once where a potential contact called me out on something I wrote on my blog. That's fair game, but if, like me, sometimes you write things that could be taken negatively out of context, then you need to consider that your online presence can only have negative consequences for you in real life.

There's also the hacker angle. The more you put up online about yourself for anyone to find, the easier it is for someone to impersonate you, or to find out starting points that they can use to find out more about you. This was something that you only vaguely had to be aware of ten years ago, but is becoming way more important lately. There's probably already web crawlers out there whose sole purpose is to crawl information on the internet and group it by person.

I'm sad to write this, but I'm even worried about what governments can find out about me. Imagine you're on a plane to some country, go to passport control and get taken aside for a 'random' check. Then you're confronted with some silly blogpost that you wrote ten years ago that casually mentions "but country X is a shit country anyway and president Y is an asshole". This is not a far-fetched scenario. I have read reports of this happening to other people online. All it takes is for one person to jump on one silly thing that you wrote years ago and you're in for a terrible experience. You could argue "but then you should think a bit more about what you write on the internet", which is a totally valid argument, but also that's kind of what makes blogging fun for me and (hopefully) for the few people in the world who are actually reading my blog, so if given that choice I'd rather just quit blogging.

I am coming to terms with all of these things. The meta-experience/getting older thing in particular has caused me to review parts of my life that I always took for granted, that I am now starting to feel that I could live without. Cycling is one of those areas. It fitted my bohemian persona from ten years ago, but nowadays I find that I've got some direction in life. With that direction, my cycling hobby has been reduced to 'staying fit', which is something I can actually do indoors. It doesn't help that the UK is a lot less cyclograph-friendly that Japan either. Blogging is on the list of things that used to matter a lot to me but are just not having any effect on my life lately. So it's time to cut them out. Spring cleanup. I have gained (meta-)experience from all of these activites, but now it's time to let it go.

See you later, perhaps.

Posted in Daily Life , Thoughts

How to find out if your phone is spying on you

<tinfoil-hat>

I browse 9gag a lot during my commute. Sitting shoulder-to-shoulder with my fellow commuters I find it uncomfortable to do something on my laptop, and at least in the mornings I'm not awake enough yet to properly enjoy a book or audiobook. So instead, I turn to 9gag for my cheap entertainment. As such, I see quite a lot of ads.

Over the past few months I've managed to convince myself somehow that the ads that I'm seeing are targeting things that I've only ever mentioned verbally, but never digitally. It's just extremely suspicious to see an ad for one particular brand the day after you've spoken about it to someone. This kept happening to me, so I thought of a way to try and 'prove' that my phone is indeed listening in. My wife and I had a running joke for a while where we'd shout odd terms ("ARNE JACOBSEN CHAIR!", "NISSAN MICRA!") at my phone to see if ads for them would show up. (No for the Arne Jacobsen chair, yes for the Nissan Micra, but cars in general are already a natural search term for me and there's a digital trail showing that I like cars, so no solid evidence there).

To take it one step further I devised an experiment. For a few days my wife and I brainstormed about topics that we would never ever look up naturally; topics that are so far removed from our daily (digital) lives that it would be very unlikely for us to see targeted ads for them. We tried to focus on popular topics that people or companies would actually buy ads for. All this was done offline, on a small piece of paper, and to the best of my knowledge neither of us ever uttered one of these topics out loud or typed it in digitally until the experiment was over.

While we were devising the list of topics I took screenshots of all the ads I saw on 9gag, as well as a few on Facebook and in my browser. The idea is to compare these to the ads I got served after uttering each of these topics out loud.

With the list of topics finished, rather than manually conversating through them in the vicinity of my phone, I instead prepared an old laptop of mine with a text-to-speech script which I ran overnight. I downloaded PyTTSx, made sure that it worked, then disconnected the laptop, which had a clean Windows installation with no personal information about myself, from the network, and uninstalled the network drivers. Then I wrote a Python script to run some plausible conversations about the topics we had written down on paper thought the TTS engine, and set it to loop. I had to listen through each topic several times to make small adjustments to the spelling because the TTS didn't quite pronounce all the words right unless you spelled it slightly wrong. I added in a few voices and a few speeds and ran the script overnight with my phone charging right next to the laptop, far far away from the bedroom. Because listening to a computer having a fake conversation about topics you couldn't possibly be less interested in does get boring after a while.

At this point the topics did exist digitally, but only on a laptop that was disconnected from the internet. I continued my daily routines as usual and again took screenshots of all the ads that I saw. I kept this up for 2 days before I got bored of taking screenshots, after which I categorized all the ads I saw into one or two categories and tallied up the results. 

The Topic column contains whether the category would be something I'd expect to see naturally anyway, or one of the "highly unlikely taboo topics" that I would otherwise never search for or would never even come up in my daily life. The rows highlighted in yellow are where the taboo topics overlap with the ads I saw, and the rows highlighted in red are the particularly suspicious rows of topics of which I suddenly got served a lot more ads after running the taboo topic script. There were also a whole bunch of taboo topics that I never saw ads for, presumably because no company paid for ads for those topics, or because I'm a crazy tinfoil-hat guy who's just a bit too paranoid.

I'll try and be generous and explain away both the medical category and the pets category. I was already served one ad in the medical category before running the script (which uttered some new and much more.. un-science-y medical keywords), so a slight increase is not entirely unbelievable. The same goes for pets: although the keywords in the taboo script were very heavily focused on dogs (whereas my wife and I are very much of the cat persuasion), we do have a pet and it's not unlikely that this information could have crept up in our digital life during the course of the experiment, outside of the TTS script.

Then there's the third red category that shows a sharp increase, for which I just can't find a reasonable explanation: loans. The ads in this category were for 1. credit ratings, 2. leasing cars, and 3. short term loans. I've been employed pretty much continuously over the past 12 years, have never searched for or had a loan (other than my mortgage, which is a very specific loan category that hasn't popped up either before or after the experiment). The TTS script contained several passages about wanting to buy or build (expensive) DIY things as well as the actual term "pay day loan", and some other words that could perhaps imply increased gullibility to these kind of ads. When I was categorizing the ads I saw a very clear distinction between ads that focused on investing capital (category 'Investing' in the image) and ads that focused on how to loan things or improve one's ability to loan things.

I can think of several explanations of why the ads changed after the experiment:

  • Coincidence. Ads change over time. Maybe the loan companies just didn't buy any (targeted) ads until in the middle of my experiment. I didn't run the experiment anywhere near long enough to rule this out.
  • Leaks. Maybe I changed something about my online behaviour that changed the ads I was served.
  • Something on my phone or in my house is listening in. Could be the phone OS, could be an app on the phone, could be a nearby TV or PS3.
It would be possible to go one step further and intercept the network traffic coming from my phone, but I don't think I would be able to conclusively prove anything one way or another. If the speech recognition happens client-side then I wouldn't see any speech data over the network. Or it could be encrypted. It might be worth a try, but I suspect I won't find anything obvious.

Is this enough evidence for me to say that my phone is definitely listening in on me? Definitely not. But this, combined with earlier incidents of ads matching conversation topics over the course of the past few months, I think is more than enough reason for me to be suspicious. It would be interesting to see other people try the same experiment. If they find the same results then we could start comparing phone OS, installed apps, other nearby electronic devices, etc.

For now, since I hardly ever speak on my phone anyway, I've put a little bit of blu tac over the microphones. I tested this with by calling my wife to confirm that no audio is heard on her end when I speak. If, over the course of the next few weeks, I find myself not noticing a single instance of an ad matching a conversation topic, I would consider that pretty strong proof that something on my phone is listening in. No matter the outcome, it's probably worth a followup experiment. Time to think of new categories.. (Don't send ideas for new categories to me, obviously! Unless it's a handwritten letter..)

</tinfoil-hat>

Posted in Daily Life , Tech | Tagged , , , , , ,

Sofia

We did a city trip to Sofia, the capital of Bulgaria. Things we learned:

  • Stamp your bus tickets. We took a but into town from the airport and didn't (know to) stamp our tickets. A stop later a bus conductor came in and charged us an 80 lev fine for not stamping them. Some websites describe this as a scam, but it technically isn't. Those are the rules of the country and the transport service which you should abide by. Counterpoint to that is that the driver knew we had just bought the tickets from him so were not reusing them on multiple trips, and the conductor knew we came straight from the airport and clearly didn't speak the language or knew anything about the country. If it were any other country the people would be reasonable enough to just let us stamp the tickets and let us off, but nope. Our first impression of Bulgaria was that people want to fine you.
  • Don't take pictures in museums. Your standard ticket does not include taking pictures. No one will tell you this until after you've taken a picture so that they can charge you extra money and you have no way to back out since you've already taken a photo.
  • Not personally experienced by us, but after the two experiences above we researched some more potential fines/scams, and apparently taxi scams are quite common too. I'm not surprised. The taxis looked extremely dodgy. Pickpockets are reported to be quite common too, although we had no issue with that.
  • Our hotel, one of the better ones on booking.com, somehow was unable to regulate room temperature to be below 28 degrees C, even though it was 10 degrees outside. Complaining about it didn't help.
  • Not many tourists on the streets. Or people. 
  • Graffiti everywhere. Broken potholes everywhere.
  • Hot spring steam coming up from the ground!
  • Beautiful mountains in the background.
  • The food was pretty good. Amazing desserts. Excellent fish. Lots of pork.
What a 'fine' country.

 

Posted in Travel | Tagged ,

Closing thoughts

(Written on the 13th, scheduled with time delay.)

Right after I gave my bike to Kuroneko for airport delivery I was in shock. After one busy event after another, I had some free time to think. I sat down at a random 'park' (that is, a free bit of concrete) and after a while finally calmed down. I had anticipated this moment, because I thought that moment would clearly show how I felt about the impulsive decisions I had been making recently. Instead, what came was only a mild rationalization with no clear sway towards thinking it was a good or bad decision to go back early. My mind was still full of worry about the day's hotel and if I would be able to cancel all the next hotels without financial damage. The rest moment wasn't quite there yet.

I know very well that what I'm doing is a pretty weird thing, even for my doing. Impulsive booking a cycling trip, and then impulsively cancelling it and returning early for no tangible/external reason, not many people would do that. Of the small group of people that does touring cycling, an even smaller group does touring cycling alone, and even smaller group would plan (and unplan) a trip the same way I do. This does not bother me in one bit, but I can see that other people may have trouble understanding my motivations. Hell, I have trouble understanding my motivations. That's why I write blogposts like these.

Yesterday I awoke from the love hotel quite early. I never managed to turn the lights off and I left the outside door ajar just to cool the damn place down. It's an utterly terrible place to sleep. I'd even prefer a capsule hotel over a love hotel, but that's only because capsule hotels tend to be way cheaper. Anyway, I went for a short stroll through early morning Kochi (yes, I can say where I am now!) and walked towards the station. Not many people were awake yet on this Sunday morning. I considered taking a train back to Tokushima, which is where I came from when I took the ferry with my bike. But the connection between train stations and ferry ports seemed tedious so I got a train ticket instead. The Limited Express from Kochi to Okayama went along much of the same route that I had cycled the day before. It felt like rewinding the trip. Somehow, in retrospect, I still hadn't quite found my rest moment yet at this time.

Then I hopped on the Shinkansen to Osaka and did some shopping. Yodobashi is fantastic as always. I wanted new noise cancelling earphones since I lost some bits of my old ones on the flight in. Yodobashi provides. When it came to lunch I was deeply appalled though. Osaka station area is shockingly, disgustingly busy on a Sunday. Every restaurant had a queue of people waiting in front of it. I absolutely hate this. Queueing for food is just not my thing. I'm definitely not a city person. I also thought about finding a quiet cafe after lunch but that was clearly impossible as well. Yet somehow on my way back towards the station I found one place inside the station building that wasn't very busy, and I managed to have quite a decent curry there.

My final hotel is near the airport, and only a short train ride away from Osaka. And a bit of a walk, it turns out. Unfortunately my Google Pixel GPS chose exactly this moment to stop working, so I had to navigate the old-fashioned way. It wasn't much of an issue though. But at the end of the day (again, in retrospect), still no 'closure' moment about the trip.

The closure moment finally came today. I have a day free to do whatever I want since my flight is not until tomorrow, so I took a local train to Wakayama. I went on the train, put my new earphones in, put some music on and just sat back and enjoyed the scenery. That's when I realized: this moment is all I really wanted from this trip. One quiet, peaceful moment, to experience Japan the way I remember it, without any stress, or worries, or hurries. All I needed was one day.

That's when I knew I was comfortable with my decision. I knew what the way forward was. The way forward for me is not Japan, because I have been there before. You can never go back. There is only forward. You can never derive the same enjoyment from the same thing twice. It diminishes every time. That is why you must do new things. It may seem like common sense, or a thing you can make yourself realize just by thinking about it, but you can't. You really can't. You need to confront yourself with this reality somehow, otherwise it just doesn't hit home. For me, making an impulsive decision was the way to make me truly realize this. A lesson I learn in this way is a lesson I will never forget.

As an interlude and totally secondary reason, one very practical reason for feeling great about my decision is this: it's raining. It's a gray and miserable day today, and the area I'd be cycling in is even worse according to the weather report. Wind and rain are pointless hardships. At least when you're climbing a mountain you're suffering for a payoff, but there is no payoff for cycling in the wind and the rain for the whole day. All it does is make you feel more miserable.

That's the lesson of this for me: you can never go back, and repeating past experiences diminishes the value over time. You can compare it a bit to playing games: after you've leveled up sufficiently, you don't go back to the first level to hang around and repeat the same quests over and over again, right? There's always a next level, but the levels you've completed, they're done. They're fun to revisit after you've done them, but you'll never again feel the same challenge that you felt the first time you did it.

I imagine people will read the previous paragraph and think of it as something negative. I don't see it that way though. I'm quite stoically inclined, with a (healthy?) pince of nihilism added to the mix. It's just an unchangeable part of reality for me. I have tested my words on myself and by experimentation have confirmed that they are true, in so far as a statement about a state of mind can be true. So, not 'True' truth, but 'true for me'. I'm very happy about this, because I know it is something I can rely on. It helps me define meaning, so I no longer have to seek for it, or at least not as much as I used to when I first started doing cycling trips.

Tomorrow morning I fly back to the UK. I hope my bike will be at the airport, but now that I've rationalized my trip and my feelings about cycling I know I won't consider this trip a failure even if the bike doesn't make it or is damaged. It would be a minor setback compared to the mental clarity I found. That said, fingers crossed though. The trip's not over yet. But I'm on my way home.

Posted in Cycling , Thoughts

Impulsiveness

(Written on the morning of the 12th, set to autopublish on the 15th)

The truth is, after the cold but refreshing downhill from the last post, either before or after I went to the temple, I forget, I got a strange idea in my head and I couldn't let it go. It just kept sitting there and wouldn't move, and forced me to think about it. In my mind I imagined the steps I would need to take and the consequences it would have if it went either right or wrong. In the end, I figured it was worth doing a little investigating in real life to see if it was possible. After all, I still had plenty of time left in the day.

I decided to see if I could change my flight and go home early.

Why? Mainly because I wasn't really enjoying myself any more. I've got the "cycling in Japan" theme nailed. I can look at a map now and know exactly what kind of road I'll encounter. When I enter a new town I'll know exactly where the station is, where the hotels are, where the conbinis are, without even looking at a map. Everything is just hugely predictable, and, finally, unchallenging. I just am no longer getting out of these cycling trips what I was getting all those years ago when I first started.

Besides that main reason, two additional reasons that caused me to feel this way are that 1. this trip was pre-planned, and 2. it is genuinely cold and unpleasant outside if you're sweating like mad, which makes the random wandering-around kind of a non-thing for me. If your clothes are wet with sweat and there's a cold wind chilling you down then you don't feel like casually cycling around to see what's out there, you just want to get to a warm place as soon as possible. The pre-planned bit meant that I already knew exactly where I was going, and I knew that yesterday was both the most difficult and the most beautiful route of the trip, so the challenge kind of disappeared after that.

So, at Sukiya I put the first part of my plan into action: check if I can actually change the date on my return flight. I managed to check on my mobile phone on the wifi from the conbini next door. I could indeed change my flight! I didn't change it just yet, though.

I am 200 kilometers away from the airport. I needed to check how I would get back there if I'm not cycling back. The train would take me back there in a day, but as I expected and confirmed after checking, it would take quite a few transfers, and either a very long time or a little trip on the Shinkansen. I've learned from experience that the last thing I want to do is haul an ultra-heavy bike bag around from train to train, walking from platform to platform, going up and down stairs, passing through heavily populated stations.. That is something that would make for a very miserable day for me, so I preferred to avoid that option.

My preferred option, which I've used once before on a previous trip, is to bag the bike and send it via the Yamato Kuroneko delivery service straight to the airport. Kuroneko, for me at least, is not a sure bet. I do not have absolute confidence that they'll accept my bike as bagged, that they'll deliver it to the airport on time, and that they'll deliver it at a reasonable price. Everything changes when it comes to bikes. No one knows how to deal with it. To be fair, I've never had negative experiences with Kuroneko, but if I mess this up I'll lose my bicycle, so I needed to be absolutely sure that it was possible.

So I held off on changing my flight and first cycled onwards to Kochi, where I found a Kuroneko facility. A clueless guy tried to help me but gave up almost immediately and passed me on to a very helpful lady, who provided me with all the details I needed. It was indeed possible, could be delivered within 3 days if I gave the bike bag to them today, and although she didn't say directly I inferred that she wouldn't charge me an insane amount of money.

This was around 16:00/16:30, and I still hadn't changed my flight. So I excused myself from the Kuroneko and immediately went to the nearby conbini to get wifi so I could change my flight. I had to present my bike them before closing time at 18:30 so I was suddenly very rushed. But of all the luck in the world, in a giant city, this conbini did not have wifi! So I cycled onwards towards the station and the center in the hopes of finding a conbini, warcycling to find wifi. Not too far away I managed to find a Joyfull family restaurant which had an open wifi, so I hopped onto my phone to change the reservation. I could still make it.

But then the website broke! The Cathay Pacific site was very mobile-friendly, very easy to use and walked me right to the final step of changing the dates on my return flight, but then it errored saying I didn't put dates for my departure flight. Well, no shit, I already took that flight, can't change it now. I hoped it was perhaps a mobile site issue, so I grabbed my laptop and, in the parking lot of a family restaurant, tried to change my booking on my laptop. Again, no luck.

This was a good point to give up. I could simply cycle back to my hotel, never see Kuroneko again and continue on with the rest of the trip. But I felt annoyed that the Cathay site wouldn't let me change my booking even though it clearly allowed it, so I called them up. Still from the family restaurant parking lot. With my laptop resting on my bike. I connected immediately and the guy I spoke to helped me in record time to change my booking with no issues whatsoever. Excellent customer service. I'm flying back on the 14th.

Then I cycled, quite hurriedly, back to the Kuroneko building, where I started to take my bicycle apart. I'm getting better at this every time, but the rushed-ness of the situation caused me to dirty myself quite a lot. I sprayed a lot of chainspray on that chain in the morning, and it was making marks everywhere. I didn't do nearly as good of a job bagging it as on the way in, but hey, whatever. I'm going home. The friendly lady was still there and accepted my bike without issue, and only charged me 4400 yen. I'm pretty sure that the last time I used them the price was at least double. She also didn't check the weight. Perhaps they changed their policy, or I was overcharged last time, or it's just that the distance is less this time. In any case, I'm not complaining.

The sense of relief I got when my bike was finally accepted was amazing. I had a very good walk along various canals on the way back to my hotel, finally realizing what I had done. This trip started out as an impulsive thought made reality in only a day, and now I had undone the entire trip, also on an impulsive thought, also in only a day. That's probably not a good thing. Then again, the best way to learn is by making mistakes. At least, that's how I rationalized it as I was walking the many kilometers to the incredibly sleazy love hotel I wrote about last time.

I wasn't done yet though. I still had to cancel all my reservations and book a hotel for the next two nights. I managed to change my existing booking for the airport hotel and even ended up a little bit cheaper. All other hotels had free cancellation except one, and that one was kind enough to waive the fee. I've mentioned before how booking.com is fantastic, but it really is worth saying again. Everything can be done through the website and I was done with the whole process in only a few minutes. Way better than calling up hotel after hotel to get it done.

As of the moment of writing I am still in the love hotel. The door made a noise at midnight which scared the crap out of me because I thought it was going to unlock the room and let some random couple come in, but everything was quiet throughout the night. I never did manage to find out how to turn the lights off, though. What an inconvenient place.

I'm about to check out and head over to the station, where I'll take all those trains back to the airport. My plan is to stop over at Osaka on the way and buy some new noise-cancelling earphones, because I lost the rubbery bit on one of the earphones on my old ones, and I think it's time for something better anyway. No plans for tomorrow yet, but I think I'll go on walkabout somewhere and take some random photos.

I think I'm done with cycling trips for a while. At least until I find adequate motivation to do another one.

Posted in Cycling , Thoughts

The love hotel

As I mentioned before, all of my current cycling trip was pre-booked in advance, except one night. It's the only time I'm staying in a big-ish city, so I assumed that there would be loads of hotels available to choose from. But it was also a Saturday night and by the time I started booking my trip everything was sold out. I kept checking back on booking.com and Google maps but nothing became available, until a few days ago. One hotel, just added to booking.com, had some rooms available. It actually had rooms available before, but at insane prices. Now prices were reasonable. Still way higher than regular business hotels, but reasonable. The only catch: it's a love hotel.

I pondered a lot about whether or not I should reserve it. On the one hand I felt it wasn't in the spirit of my cycling trip to pre-book any accommodation that was above the bare-minimum business hotel level of service. The only available cheap business hotel was 30 miles away though. I considered booking that and going there by train and then back again to my parked bicycle in the morning, but that definitely wouldn't have been in the spirit of the cycling trip. In the end my fear of the rain and the cold won out, so I booked the love hotel.

I actually considered just winging it and maybe sitting at the steps of the train station looking like a poor lost foreigner wanting help and waiting for a good samaritan to show up and offer me to stay at their place. Given the kindness of Japanese people I actually suspect this would have worked, but that's also kind of the reason I didn't want to do it, since I'd be taking advantage of their kindness. I'm not a lost foreigner any more; I have the technological, linguistic and financial means to book a hotel on the fly no matter where I am. So, better to save that kindness for someone who really needs it. The other reason I ended up pre-booking is that I was still worried that it would rain. Not having an overnight plan sucks a lot more if you're drenched with rain and icy cold.

My only previous experience with a love hotel was indirectly via a story told by a (non-Japanese) friend, who actually got thrown out of a love hotel because he couldn't figure out how it worked and couldn't communicate what he wanted. I quite dreaded that this would happen to me. After almost 90 kilometers of cycling and some unintended extra exercise (more on that later) I really needed some uninterrupted sleep. So when I showed up at the reception desk I was mildly anxious. Fortunately the man at the reception was quite helpful and quickly helped me get set up. He even fixed the wifi for me, although it broke again soon after he left. But hey, I managed to get into my room and was left alone, so I was happy.

Except for the fact that the door wouldn't stop talking and wouldn't let me out. There's a little something I could have known had I investigated a bit first: once you're in the room, you have to pay to get out. Since I had booked the hotel on booking.com and was expecting to pay by card I was reluctant to use the machine at the door, since I kind of suspected that any overpayment on my part would end up not getting refunded. So I stayed in my room, which wasn't too bad, since the hotel provided a free welcome beverage (alcoholic or non-alcoholic) and a dinner menu to order from, delivered to the room. The door finally shut up as well so all was good.

The room itself was fairly decent. It was a bit as if a karaoke room and a regular hotel room had sex and squirted dildos and condoms everywhere. It was soundproof, had a PS2, karaoke machine, dildo vending machine and even the mini-fridge was vending-machine-style. You have to pay for everything. The view was excellent. You can tell the owners wanted to go for the premium kind of feel to make it feel nicer than a business hotel, but they went about in a really sleazy way so the end result somehow felt worse than a business hotel. If I wanted to impress a girl I'd never ever take her to a love hotel, unless my goal was to show her how messed up Japan is.

There were two major issues with the room, both of which I had to leave unsolved. The first was that the bloody lights didn't turn off. I looked all throughout the room, pressed every switch I could find, but the lights would not turn off. I guess that must have been on purpose. The other thing that annoyed me hugely was that the heating was set way too high and there was no way to turn it down. Again, I suspect that was on purpose. Helps to get people to take their clothes off, I guess. After dinner I was just so tired that none of these things even bothered me, and I fell asleep just like that, with the lights on in a room that was way too hot.

I was sound asleep in my bed when the door machine started talking to me again at 23:30. I didn't wake up fast enough to hear what it actually said but I was worried that it had unlocked the door. The last thing I want is for some horny couple to show up expecting the room to be available. I stayed awake in my now insanely hot room for a few minutes to see if anything would happen, but everything seemed fine. I assume the owner reserved the room for the whole night since I booked online. I solved my overheating problem the only way I could think of: I opened the balcony door just wide enough to get a pleasant temperature. The heating didn't seem to care anyway and was full open all the time. Still couldn't get the lights to turn off, though..

All in all it was a really strange experience. Japan is absolutely fantastic in being convenient. Everything you can imagine is convenient, and the way of thinking of making things convenient is embedded in everything they do. You could clearly tell that the love hotel was made with the concept of convenience in mind, yet somehow it executed that concept incredibly poorly. I really don't know how much of that is on purpose because of the cultural concept of what a love hotel is, or how much of it is just because of lack of thinking things through. I also don't know which of those options is worse. This is a country that has a 'play soothing sound' button on toilet seats so that other people don't hear you take a shit, so anything's possible really.

I could have done a late start on the following day and even could have gotten a free breakfast at the hotel, but I just felt like leaving early and getting on with the trip. Love hotels are definitely not for me. It'll do in an emergency, but it's pretty low on my list of places I would stay at.

Right, back to travelling. I'm still going through my backlog so I've got some fun blogposts coming up. Stay tuned.

Posted in Cycling , Japan