My GitHub contributions have gone from 6 months of grey nothing to a forest of green, I think I'm using it as a coping mechanism.

Since my gym closed down, I decided to make a clone of the app it had been using for posting Workout of the Day and logging results, to keep learning more Flutter and try Firestore for the first time - I developed it entirely on Android but this is me trying it on the iPhone Emulator for the first time:

https://www.youtube.com/watch?v=DvWJgZKj7cw

I've learnt so much from doing that, including implementing a signup/login flow with Firebase Auth, using Firebase Storage, how to get fancy with custom screen transitions in Flutter, how to implement, uh… that thing where a sticky UI element slides in/out as an overlay when you scroll down and up again - does that have a specific name?

I also went back to the basic Flutter VLC Remote app I wrote for myself a while back and having been adding as many features and as much polish as I can for the sake of learning:

https://www.youtube.com/watch?v=8eXJX4GVGhA

I'm in the middle of redesigning its controls, having just figured out how to implement a nice full-width slider which acts as a floating divider between the playlist and controls. I've also started breaking out individual Flutter things I'm learning into a Codepen collection (titled with phrases I failed to find help with when searching for these things myself): https://codepen.io/collection/nqpzvz

I also brought the React/Preact/Inferno toolkit I created in the pre-create-react-app days back to life after an 18-month hiatus, by finishing the Babel 7 upgrade branch I started in January 2018. Despite what they say about the JavaScript ecosystem, Babel and Webpack were still at the same major version as when I stopped maintaining it!

https://github.com/insin/nwb#nwb

It now has support for using the experimental build of React, the new automatic runtime in Babel's React transform which depends on it and the latest hot reloading implementation, which has come on leaps and bounds since I was away. Here's a recent demo of one of the main features I keep it around for:

https://www.youtube.com/watch?v=U0DwgoYq5WI

I accidentally took a head-first dive into TypeScript type definitions and back into writing Babel AST transforms - a particular phrase ("host elements") in a tweet about not being able to use HTML attributes in React gave me an idea for a new major version of a Babel plugin I had written to do basic class → className and for → htmlFor transforms on JSX attributes:

https://github.com/insin/babel-plugin-react-html-attrs

It now lets you use _all_ HTML attributes on host elements in JSX, and I ended up spending too much of a weekend forking the React type definitions off the back of it, to add support for using all numeric and boolean HTML attributes and transforming them to the form React expects.

I've always wanted to learn some Lua, as my kids love Roblox and I'd like to try making games in Roblox Studio with them some time, so I wrote my first ever Lua script to do a fun thing in OBS:

https://github.com/insin/obs-bounce#obs-bounce

At the start of April, Twitter broke my extension for making it halfway tolerable, so I went back to maintaining that, making it capable of stripping even more crap out of your timeline and making the separated Retweets timeline it adds to Twitter more robust:

https://github.com/insin/tweak-new-twitter#tweak-new-twitter

I also dove much deeper into Gatsby than my previous experience with it of cloning and tweaking a blog template, as my wife needed to set up a marketing website quickly for a new business being spun out at her work. I've ended up with a setup which is easily reusable for the next site, easy to edit for non-technical users, and is zero cost for a really decent amount of functionality (mostly thanks to Netlify).

I even went back and resurrected my (OG) React Hacker News API client and added a new feature: a new story list containing every item you view the comment thread for, displayed in reverse-chronological order for ease of reading new comments on them:

https://insin.github.io/react-hn/#/read