• Looking back on 2022

    It's that time of the year for me to reflect on the past year and judge how it went. See previous editions for  2021 and 2020.

    tl;dr 2022 was a good year for me, generally speaking. 

    Side Projects

    I expanded my side projects from one (Tanzawa) to two (Tanzawa and SunBottle).

    Ask me 2 weeks ago if I was going to finish everything I hoped I would in Tanzawa this year and I would've said "probably not". But with a burst of inspiration, I completed the Strava integration, which rounded out my main goals:
    • 1-click-ish deployment (close enough for me with the fly.io deployment instructions)
    • Theme support 
    • Strava plugin
    • Bonus, as to support the longevity of the project, a proper refactor.

    There's a lot yet I'd like to do in Tanzawa next year:
    • More robust Strava plugin. More stats. More maps. More bells and whistles.
    • Migrate the remaining bits of Turbo (and maybe Stimulus, if possible?) to HTMX.
    • More plugins and settings. I generally like Trix, the WYSIWYG editor I use in Tanzawa. But sometimes I want to write certain posts in Markdown.
    • Better syndication UI – so I'm not always manually syndicating things to Mastodon
    • Photo/Gallery/Video(?) post support. I've got a blog post in my drafts outlining this from August. I should finish it.

    I wasn't expecting to start this project. But after I got solar installed on my roof and I had  to use Sharp's slow/ad-filled(!) "app", I had no choice.  I don't have any real big/long-term plans for Sunbottle. I do plan to integrate it with Octopus Energy's API, so I can make a page to to breakdown my costs/savings with my small array.

    I am thankful this project came up though, because it gave me reason to stick to figuring out how to deploy simple Django apps on Fly.io, which unblocked me with getting Tanzawa onto a managed service.


    Each year people say they're going to start taking more care of themselves this year and then they do good for a month or so before falling back into their old patterns and habits. I am no different.

    Last year I set myself a goal to run 100 times. I missed it by quite a bit – only 57 runs. If I include proper rides, I get up to 69 events. BUT! This is the most I've ever run in a year! Here's my totals:

    • 2022: 57
    • 2021: 25
    • 2020: 12
    • 2019: 4
    • 2018: 51
    • 2017: 16
    • 2016: 0
    • 2015: 9
    • 2014: 19
    • 2013: 0
    • 2012: 1

    If current trends continue, I reckon I should get to 114 - 116 runs next year. But  I'm going to keep the same short-term goal: 100 runs. I think I'm also going to set a proper long-term goal with running to help me focus more on long-term health.

    Which is to say, I'd like to try running around the earth. That's 40,075km. In an effort to support this goal, I'll be adding a tracker to my running page. I'm 37 now...better start making those runs regular...


    This year I tried to focus more on family. We made a lot of memories. We went to Disneyland, went camping, went with cousins to a big pool, and stayed the night in Yokohama. And with the flexibility of my job, I was able to take time off and tend to Leo whenever required, no questions asked. It's a huge help.

    On the other hand, I wasn't as good about contacting family back in the US. I chatted on the phone with my dad a number of times and my step-dad a handful and my mom twice? Despite the connectivity provided by modern technology, we don't talk often. Part of it is timezones. Part of it is texting feels like connection, but it's not. Part of it is conversations only seem to happen because I made the call. Each call always involves some calculus of me trying to remember who did I talked to last / when...and weekends are full....and this is how we got here. It's not good though, as you never know when you'll lose somebody.

    Next year though, we bought some tickets to visit Texas, so at a minimum, I will have seen and chatted with everyone at least once.


    Work went really well. I started properly managing people this year, which has been a challenge as there's so much for me to learn. There's currently 4 people on my team (including myself) and we will be expanding it more next year.

    I made a trip to London for work, which was really great. Not just because I'd never been there before, but because I got visit headquarters and see / meet the rest of the team I work with day-in-day-out. I also got to really give Tanzawa Trips a proper test.

    Back in Japan we had a company BBQ, which I took Leo to, so he could meet my work friends, which was a lot of fun as well.

    My hope / goal for the next year is that the team and culture inside the Japan team stay like it has been, no matter how much we may (or may not) grow in the coming year. As difficult as the tech can be, software is a social endeavor and scaling people takes more time and effort than just spinning up some more boxes in a data center.


    I'm not sure how to end this post. To reiterate that 2022's been a good year and I've learned heaps. I have some rough and some concrete goals for the next year. Like last year, this year, I will make a note of the major ones in my now page, so I don't forget them and can track them overtime.

    If you've made it to the bottom, thank you. I don't have any analytics on site, but if you do read this (or any post) and have a comment, I'd love to hear from you by email at james@jamesvandyne.com.
  • Tanzawa Strava Integration Merged

    Just in time for the new years resolutions (and the last possible moment for me to hit one of my own 2022 goals), Tanzawa integrates with Strava via a new Exercise plugin. This initial release is the absolute minimal viable integration.

    This is what the admin screen looks like:
    It works like you'd imagine: click the Import from Strava button to import your latest activities. While it's storing the mapping data, it's not displaying them yet.

    There's also a public page that's added to display some stats of your running. It looks like this:

    Again, quite minimal. I even wrote some documentation for how to enable and set it up.

    Both of these pages will be evolving a lot over the coming weeks as I now have a foundation in Tanzawa for working with Strava data in place. On the admin site, I'm planning to add mapping and more detailed information. On the public side, I'm planning more statistics and comparisons, including some fun ones that'll help us track really big goals.

    If there's anything you think is a must have or some fun ideas that one could do with the data, I'd love to hear them!
  • Running Tanzawa with Fly.io

    Taking a page out of Simon Willison's Coping strategies for the serial project hoarder presentation, I'm going to write a blog post about what I've done on my projects as part of the "unit of work".

    One of the largest hurdles to running Tanzawa is one that plagues any Django app: getting it setup properly on a server. This usually involves connecting to a server, setting up a gunicorn or uWSGI server to run the app, editing nginx configurations, and fiddling with systemd, at a minimum.

    Each of these are a large barrier to entry. All of them combined means only the most dedicated users would attempt to use it. And the reality is nobody will use it.

    Making Tanzawa easier to install and run has long been a goal of mine. For a while my approach was to basically automate my own setup on Digital Ocean. I attempted this with two puppet scripts: one, created an Ubuntu server that automatically applied security patches and installed Docker, and the second would build a Tanzawa image to run on the server. Using puppet would also allow flexibility for people to host wherever they wanted.

    Ultimately this approach was flawed because you'd still end up needing to maintain a server, even if it updates itself.

    Getting Tanzawa to run on a fully managed platform like Fly.io would lower the barrier to entry quite a bit as it would remove the need to maintain a server and fiddle with configuration files. After migrating my blog from a Digital Ocean to Fly.io, I documented how others can do the same.

    Hosting with Fly.io is now the recommended way to use Tanzawa.
  • Seeing the future

    When I was considering joining Kraken my major motivation was wanting to actively work in an organization that's combating climate change. Especially with a young son, it felt irresponsible to be so worried about something and yet not actively doing anything about it.

    One of the unique things about Kraken, besides the people, is that it's not just a software company. It's part of a larger group of companies that are all addressing different aspects of the energy transition.

    Parts of the group are working on grid flexibility. Others are working on electrifying households with solar panels, heatpumps (installation and manufacturing), and EVs. And others are building and managing wind farms and solar farms.

    And on the inside you can see the work of the entire group, the work of the energy transition, all happening  at pace. All deploying their part of the solution. It's so very clear that all of this is the future.

    When you can see the future like this, a future with clean air generated with an abundance of clean electricity used intelligently, you can't help but be motivated to show up and do your part to make it a reality everywhere.

    It's like being part of a solarpunk story, but it's not fiction. If this sounds interesting to you, we're hiring worldwide. I'm happy to answer questions as well, so email or @ me on Mastodon.
  • First billing cycle with solar

    First month/billing period for my #electricity after #solar #pv install completed! 

    My solar/monitoring wasn't installed or active until 3 days into the billing period, Oct. 15 - Nov 14th, so there's not 100% overlap.

    Total Generation 282 kWh
    Consumption hasn't changed much 283kWh (2021) vs 290.3 kWh (2022).

    Bought: 119 kWh
    Sold:        87 kWh
    Net:          32 kWh

  • Remembering Kelly Wilson

    I got a text from my brother, we lost our Uncle Kel. We knew it was coming, but it's always too soon. You're never ready. I was hoping that I'd be able to see him one more time. That he could meet our son. Life had other plans.

    I didn't see Kelly often when I was a child. But when we did, it was always a good time. One time we were standing around his house in California making guacamole and snacking on avocados. He taught me the trick of drizzling just a touch of creamy salad dressing on the avocado and eating it with a spoon. Eating an avocado directly with a spoon had never crossed my mind. I do this sometimes now, and I always think of him when I do.

    He was very mechanically inclined and took pride in his work. If something was supposed to move but didn't, be it a vehicle, a machine, or a factory, he could diagnose and fix whatever was wrong with it. When he fixed something, he'd fix it right, leaving it better than  it was before.

    One summer day in college, I joined Kelly out in the oil fields east of Houston. We left at 5:30am for the 90 minute drive out. We stopped by his usual convenience store for morning coffee. It was a good start to the day.

    The entire day, I  just tagged along, after all I'm a suburban boy who's good with computers, not much help out in the oil fields. We're pouring sweat in the Texas heat when Kelly gave me one bit of advice that I still reflect-on. He said, "Stay in school, you don't want to be working out in this heat everyday. Finishing school will let you work in comfort".

    It was simple advice. I've long since finished school, but that one day with Uncle Kelly gave me a greater sense of empathy for people working outdoors. Almost every time I see someone really working hard outside, I think of him and his advice.

    Kelly was always curious. Before moving to Japan, he asked me to send him photos of Japan. Not postcard style photos, just things that you wouldn't normally see, things that let a person know "hey, you're in Japan".

    Being a good nephew, I obliged. I'd send him random photos of the mundane: a coin laundry machine sitting outside an apartment building, traffic signs giving you the real-time traffic delays, cigarette vending machines. For good measure I also sent photos of random wtf Japan too, like cars tricked out with LEDs all over them.

    As time wore on, I sent fewer photos of Japan and more photos of Leo, usually on big milestones (he's standing! he's riding a bike!) or on Father's Day.

    I'll miss these little back-and-forths. I'll miss seeing something Japan and thinking "Oh, Kelly needs to see this!" and snapping a photo for him. While I can't send him a photo any longer, I will continue looking for things he might enjoy and snapping photos of them.

    Thank you for everything Uncle Kel.
  • Roadrunner

    I first discovered Anthony Bourdain after graduated college when I first started work and living in Japan. I'd watch No Reservations in a tiny 1K apartment in Yokohama, not far from where I live now. His words, spoken on screen or in print, always left an impact. They encouraged me to explore the world around me.

    Here was a man who got it. Be a traveler, not a tourist.

    Each episode a new adventure. Each episode a reminder to be curious. He was – he is, a hero of mine.

    Watching Roadrunner, you see a fuller picture of the man. His struggles, his pain, and the pain he caused others. You get a glimpse at happy moments, too. Tony being just a regular human. Having never met him, it sounds odd saying this, but you also get a sense of closure. His death makes more sense.

    I highly recommend this film to any fan of Bourdain's.
  • Back in Japan from London

    I've been back in Japan for almost 3 weeks and am finally getting 'round to writing the final "wrapup" post for my trip to London. A common question people ask me is "What was the best thing/worst thing about the trip", which I'll answer here as well.

    Best thing: Hands down, the bicycle culture in London. There's heaps of bike lanes throughout the city. Some are just paint, but many are proper protected bike lanes. I saw cargo bikes, cargo bikes with children in them (wish I could do this!), and even paramedics on a bike (all of his gear was bike-packed in panniers). Perhaps my favorite though, and I saw him twice, was this morning commuter that had his pug riding with him between his hands sitting on a little platform. The only regrettable thing is my cards didn't seem to work with the Boris bikes, so I couldn't rent a bike and cycle about.

    Cycle lanes

    Cycle routes

    Cycle shortcuts

    Worst thing: I had to think about this and the worst thing I could come up with wasn't even that bad, but there was trash everywhere. Not bits of paper or candy wrappers, but like a random garbage sack, only one on the street, so it's not even trash pickup day/time, sitting there smelling things up. It could be hyper-sensitivity because Japan is really clean, generally speaking.

    The flight back to Japan was good. On the flight to London, I didn't realize that I could select my seat before checkin, so I ended up with a window seat. Sitting in a window seat on long haul flights isn't fun as it makes it harder to get up and move about when you please. This time about I managed to snag one of the last aisle seats.

    The seating in premium economy is quite nice. You can't lay flat like you can in business, but you the seats slide out (so no front passenger getting in your space / nearly breaking your laptop with a sudden recline (true story))  and you have leg support.

    Premium Economy on JAL

    Food was also quite nice, though the combination was a bit odd – lasagna and soba?

    Main meal

    With everything going on in Ukraine, just like the flight there, we couldn't fly over Russia. As such we took the southern route back, which added a couple of hours to our flight time.

    14 hours of fun!

    Upon arrival in Japan we all had to do covid tests. If I had arrived 2 days later, I wouldn't needed to do the arrival test. It was just a simple saliva test, but my mouth was quite dry by then, so I had to really work to get enough. They hung a photo of a lemon to help you salivate.

    No covid for me

    Getting through the covid test queue was straight forward enough. But with the number of steps in the flow, I can see why the government has done away with it. There's no way that it could handle more passengers than it was already. 

    Most of things post has been not about London, but the trip back from London, so I'll end with this. London is great. Despite being about 36% smaller than Tokyo, the amount of diversity you experience in London is night and day different. I can't wait to go back.
  • Getting to London and First Impressions

    15 minutes before my taxi was to arrive I got a call – the driver was lost. This always happens. He put my address into his phone and it gave him the tennis courts behind my house. I can see the tennis courts, but there isn't a direct way from them to my house.

    Thankfully the call wasn't from the driver, but from the dispatch center. When I booked the taxi, they knew my neighbor's name, so she gave him guided instructions to my house. I get in the car and we're off.

    Then almost immediately he takes a right instead of a left to get out to the main road. GPS  is mostly useless in Japanese neighborhoods. A quick chat and I got him to the main road.

    Now boarding to London

    Checkin to the airport was smooth as could be. The flight was smooth too. This time I sat in "Premium Economy" and it was nice. Your seat doesn't go flat like in business class, but does manage to get you to about a 45 degree without leaning back, which means there's plenty of room to cross your legs if you choose.

    Premium Economy can pick champagne...so can't not get it.

    Upon arrival at Heathrow I was reminded just how clean and smooth things operate in Japan – which is easy to take for granted. For example, the escalator we rode immediately after getting off the plane was creaky and somehow at the top there was a bit of bread that just couldn't get over the lip so it sat there rolling around.

    Immigration was the smoothest I've ever experienced because it was all automated. There was a staff member there kind of guiding people a bit, but she seemed half-distracted by a conversation she was having with a co-worker.

    As for Customs declarations, I didn't have anything to declare, so I could just walk straight through, without talking to anyone. I looked at the area where you'd go if you had something to declare and there wasn't anyone even there. This is a stark contrast with what I've experienced in Japan, returning the US...even Sweden I had to state my purpose to a person. It's pure honor system here. Crazy. Suddenly all those movies where people think they can just smuggle stuff into a country make sense.

    In many respects, London reminds me of New York. Heaps of people, loud, gratified buildings, and a bit of a sensory overload. People FaceTime while they're walking down the street. There's pedi cabs with boomboxes. The taxi drivers don't wear suits and there's tattoos everywhere. The opposite of what I'm used to. Different, but in a good way.

    Across from my room

    There were also a number of homeless, which despite it's best efforts to hide, you do see in Japan as well. But they don't ask you for money in Japan. Having my airpods in, even not listening to anything is a godsend. I can walk and listen to the city and when the ask for cash I pretend I didn't hear, they see my earbuds and move on.

    But the largest thing to get used to is the masks – or lack thereof. Each country experienced the pandemic differently. And in Japan 99%+ of people have been wearing masks all the time in public and sometimes at home if a guest came over. And because of this we've never had any lockdowns, it's all been voluntary.

    To dive off the deep end to near zero masks is...quite a shock to the system. It's not something you can do immediately, you've got to ease yourself into it. I'm still mostly wearing my mask outside of my hotel room. And thankfully I did as the little elevator became full capacity and I was the only one with a mask (KN95) on. Coming from Japan, "no masks on a crowded and vent-less elevator, are you crazy?!" and "thank god I decided to wear this" were the two main thoughts that went through my head. It's so weird being able to see more than people's eyes in public.

    All of this said, it's not that I'm afraid of getting covid (again). Given the choice, I'd prefer not to. It's that should I get it, and should I test positive at the wrong times, it could delay me return. The "threat model" that I'm think I'm going to settle on is basically this: I trust that if my co-workers are stick, they're not going to come into the office, but all these other people...I don't know...so maybe it's better to be a bit cautious around them. In the end, it'll be what it'll be.

    After a long flight and while walking around, a beer sounded great. But I couldn't quite build up the gumption to get into a pub full of people laughing and talking loudly, sharing their droplets like it's 2019. I will, but it's something I'll have to ease myself into for sure.

    Instead of opted for a takeaway sandwich  (chicken in a "bap") and can of craft beer from the local Stansbury. It was fine, perhaps a bit dry. My favorite thing about the sandwich was the note that said something to the effect of "We made an effort to de-bone this piece of boneless chicken you're about to eat, but we might've missed some, so be careful". Thanks for trying to debone this boneless chicken for me, I guess?

    I found a nice bookshop that had a good selection of books. The nice thing is that they're all in English (duh) so there wee heaps of good options for me to bring back for Leo. So far he's getting a big shiny "Peppa Pig goes to London", and a Paddington Bear 3-story collection book.
  • Reflecting on Tokyo Disneyland

    This is the last post chronicling our trip to Tokyo Disneyland. Originally this trip was supposed to occur at the end of last month, but Leo (and the rest of us) got Covid, so we had to cancel.

    At the time, I was really disappointed. But having got it and recovered, it made the fear of catching Covid disappear. We were, and everyone else was as well, wearing masks and doing our part to prevent the spread…but it was nice to not really have to worry about the “what if”.

    Going two days before Golden Week, in pure “off season” times is definitely the way to go. I didn’t check in or blog about every ride, but we never waited more than 20 minutes for a ride (once) and mostly we had no wait at all. Go off-peak if at all possible.

    Taking the train home from Disneyland isn’t hard. Upgrading to the green car for the Tokyo - Totsuka leg of the trip (and on the way there from Totsuka - Yokohama) is well worth the charge. You don’t want to spend an hour getting exhausted on a packed commuter train before/after spending a day walking around outside all day.

    I’m glad I also booked breakfast at the same time as booking the room. Or rather, glad I noticed I needed to. As we booked the room last-minute this time, most of the time slots for breakfast were taken. 7am was perfect for me…though maybe a bit early for Leo after a day of playing hard at Disneyland.

    Spring/Fall is the time to go. Walking around outside all day int summer heat would be brutal.

    Changes for Next Time

    It’s difficult with a 4-year old to schedule exact mealtimes as each minute they get distracted by the new shiny, and there’s a lot of new shiny at Disneyland. That said, making a reservation for dinner is the right decision. You’d think you might could still get a table, but this isn’t the case.

    Print out a paper map and plan out the rides we want to ride more in advance. Paper maps aren’t a thing anymore, it’s all driven by your cellphone. This is a real shame for three reasons:

    1. It removes an artifact for kids after the trip to reminisce. As a kid I’d often revisit the maps from Knott’s Berry Farm and Disneyland and remember what I did or think about the next ride I wanted to ride.
    2. It removes kids from the decision making process. They can’t pop out the map and say “I want to go here”, they’re got to rely on their parents to being out their cellphone, open the apps and scroll around. Kids guiding their parents to the destination is a great opportunity to hone their navigation skills. And worst case scenario is you end up at a churro’s shop (which is quite great).
    3. Opening your phone and relying on the internet each time you want to verify where you are or what’s nearby is such a faff and so slow. Sure, you don’t get real-time wait times with a paper map, but it got annoying. And you have to worry about battery.

    I'm really happy we made this trip and the entire family had a fantastic time. Being able to escape to a fantasy land, if even for a day, is such a privilege. Experiencing these parks as a parent is heaps of fun – not just riding the rides, but watching how your kid reacts to seeing his favorite stories and characters come to life, is really something else.
Previous 2 of 6 Next