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).
Tanzawa 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.
Sunbottle 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.
Health
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...
Family
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
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.
Conclusion
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.
I thought mapping using htmx would have been more difficult than it was, but it was dead easy. As such, Tanzawa Exercise can now display the route of your activity. An example from a run this past summer.
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!
Hard to believe that this is the last full week of 2022. I haven't yet gathered my thoughts for the year or made a roundup post as I usually do, but I'm relatively pleased with how the year's gone.
I finished work for the year on Wednesday. I think this might be my first big break since this time last year. Otherwise it's been days off here and there because someone needs to watch Leo or we're sick with Covid. I felt like I really needed this break a couple weeks ago, which means I waited too long to take proper leave.
The big event this week was the double-whammy of Christmas and my wife's birthday. We celebrated at the in-laws house with a small feast and cake on Christmas Eve. I went full American and made some rosemary-garlic roasted potatoes, a shredded carrot/apple/raisin salad, and cheeseball(!!). The cheese ball was only possible because my dad sent heaps of ranch dressing mix packets along with the heaps of Christmas cookies. So good. Much fat.
As we're planning to visit American we decided not to get presents for each other, but as usual, Leo scored. Santa brought him the Adventures with Mario Lego Starter pack. It's about 10x cooler than I had anticipated. The Mario actually takes batteries which powers some scanners in his bottom. He audibly/visually reacts to the color that he's standing on, e.g. on red, he makes noises like he's in lava, and blue like he's in water and so forth. Even cooler though is the goomba / ? blocks / Bowser Jr. have a barcode block on them that Mario reads and he makes sound effects, or gets an item. If you lay him down his gets sleepy and falls asleep.
From mom and dad he got a Jet Kids carry-on luggage. It's cool as he can carry his stuff, but it can be placed in front of his seat to turn it into a kind of bed. Then we found out that United doesn't allow them to be used on any of their flights... As long as he's in the window seat, I don't think it'll be a problem if we use it (unless they explictly call it out when we board, otherwise I reckon we can just feign ignorance).
Side-project wise I merged that big refactor of Tanzawa's internals and it's working as anticipated β great.Β
I also added consumption scraping to Sunbottle. This means I can now see how much electricity I actually use again. I've started using it to show how much I generated and how much I consumed the previous days and it's quite handy. This feature sets the groundwork for me to start on the "billing" code, so I'll be able to have a page that shows how much my usage would've cost without solar.
But as the billing code is a bit too much like work, I've shifted focus to another Tanzawa feature I stated as a goal at the start of the year, didn't start because of tech debt I've recently paid off ( aforementioned refactor and moving from Gunicorn to uWSGI): Strava integration. It's coming along nicely and I think it'll get in before the end of the year...which leads me to...
I've been subscribing to Apple's Fitness+ for ages, not on purpose, but because it's included in Apple Ultimate (or whatever the tier is called that gives you everything for cheaper than increased storage, music, and apple tv). I went for my first run using Time to Run, and it's great.
Usually when I'm running I'd pick some music and a timer for 30 minutes or so and just go. You're left asking / deciding "what do I want to run to today?" or running into slow songs as the worst time. It's difficult to explain with words (and that won't stop me from trying!), but it is...like a coach in your ear and a tour of a city at the same time but it doesn't matter than you're not in that city.
At the start of the run the coach explains the run (3 difference paces, repeated twice etc..) / the city/course that this run is based on. The music is set for the location, pace, and cut to match the different sections.Β e.g. The first city was Miami, which has a large Cuban/Latino community, so all of the music was in Spanish and there was a nice 2 minutes of up-tempo song when it's time to run fast, slower songs when it's time to slow down etc..
Just as important is the reminders between each section for what to focus on. Focus on your breath and keeping it steady. Use your arms, keep them close and use them like a second set of legs.Β
I've only used it once, but it made a 33 minute run fly by. Not having to select music is one less thing for me to think decide when running. Having story and photos of the location pushed my watch while I run is entertaining. The couching and encouragement while running, even if it's from an audio recording, is somehow quite motivating during the run.
Do I write the Strava integration for Tanzawa so I can get all of my running data (or lack thereof tbh) just so.Β
Or do I write some billing/electricity tariff calculations / #OctopusEnergy API integrations, so I can show just how much my solar / battery is saving me each month....
I reckon Strava is more important/less like work code... We show estimated costs on our graphs...I bet I can use that instead of calculating things meself to start?
Remember how places like LiveJournal used to have "post flair"? They were effectively different emojis for your moodΒ or the weather. I think there were even some music integrations so show the song you're listening to...I think I need that on my blog.Β Weather could be done free with OpenWeatherMap/weather-icons. Music might be trickier...