Everything

I’m on PTO for a few days because Iggy had surgery on Thursday and because it was high time I took some vacation for myself. I want to enjoy my time off, but also I really struggle with how productive I should be when I’m out of my normal day-to-day. Work productivity is unaffected and not something I worry about — The Man is a well-oiled machine and already has mechanism in place for planning what to do with my wage-labour. I’m more worried about the labour I do in the remaining “free” time. I was raised on capitalism, so my habits are bad and my sense of what feels “right” is out-of-whack.

From time-to-time I revisit David Allen’s Getting Things Done — I think I own several copies at this point over various forms of media — and today I followed the advise of one Wheezy Waiter to try the summary of the book on Shortform. I’m not done with the first fifteen minute summary yet but already my head is abuzz with what one word implies: “everything”. I have to track and organize “everything”? This book was written in 2001, when “everything” entailed a lot less, even less so if you were an adult at the time and not raised on the Internet. “Everything” for me is sifting through archives of data — probably mostly useless data — and figuring out what’s relevant to what I want to get done. Allen details a very algorithmic approach, but unfortunately that approach runs in linear time (O(n)) and that type of time complexity doesn’t scale well for people. After all, that’s why we have computers.

And is “everything” realistic? I understand the goal of tackling “everything” is having confidence to not lose track of things, and therefore feel safe to jettison thoughts from the brain. My problem with that is obviously the aforementioned scale of “everything”, but also that ADHD will jettison things for me whether or not I want it to. So keeping track of “everything” is as much for me a stress-relief mechanism as it is a survival tool to get anything done at all.

Recently one of my friends created a group calendar for us to organize events we want to go to and ones we have already committed to, and let me tell you: I AM EXCITED. I thought it was worth mentioning here because having that calendar element is crucial to the GTD way of doing things, and was something I used to survive college. I would put every rehearsal and gig in Google Calendar and it was how I could be a successful musician despite not having the discipline to practice. I would also put in work shifts and deadlines for homework.

I still use a personal calendar to organize when I go to scheduled events, but I will admit its usage has withered a bit during the pandemic. So while I’m starting to flex the personal calendar muscle more, I think it’s a good idea to put in personal project deadlines too and block out time for me to work on things. After all, that’s what I did when I rehearsed music, and it’s what basically do when I go to work!

So yeah — I think I’m gonna give this GTD thing another try, and make use of that Todoist subscription I’ve had since forever. I’ll try to muscle past the first part of the book I’ve reread a dozen times — it’s about filing reference items and honestly it’s really boring. I wanna focus on new projects, and those don’t even really have reference items since they’re so new! And everything is digital now so how do I consolidate items from so many different places?

I used to joke I’d write a business book with a bunch of obviously stupid metaphors like “Sea of Despair” and it’d sell really well and that’d be how I make my fortune. Still not ruling it out, but I always think about it any time I revisit a book like GTD.

The Murder of Sonic the Hedgehog

I had such a fun time with this game. I heard about it being an April Fools’ game but not much else, but it was really a nice, short little free game that had my attention the whole time. It’s mostly a point-and-click murder mystery with a sonic minigame thrown in every now and then when you need to “think” and come to a deduction. There are also accessibility options to make this minigame as easy or difficult as you want / need it to be.

I’m re-visiting indie game dev and this was a satisfying part of that journey. I also recently went to a Bit Bash event this weekend. I’m starting to feel that passion I felt when I quit my cushy software job in 2014 and looked into what it would take to make indie games. I’m excited to see where I end up this time around.

Also, why does this boss music slap so hard?

LSDJ Tutorial

Before the Pandemic, I once saw Chipzel play Bit Bash and it was phenomenal. Since I don’t really know much about writing chiptune music, I did some research and found out she uses Little Sound Dj (LSDJ) for some of her more recent stuff. And also a longgggg time ago I messed around MilkyTracker. So I don’t really know what the point of this post is other than to post some resources and reflect openly about how I want to write video game music. Should I compose it like I’d compose for a music theory class? Should I record some instrumental licks and go from there? I have no idea what I’m doing haha

  • Download Little Sound Dj https://www.littlesounddj.com
    • Currently messing with BGB as my emulator
  • Milky Tracker https://milkytracker.org
    • I didn’t need a Gameboy emulator when I used it but the interface is similar to other Chiptune programs
  • Flat https://flat.io
    • I used to use Sibelius and Finale way back in the day but this is basically the modern version of that

Indexing JetBrains Toolbox Application

I’ve had Alfred search issues on my M1 MacBook Pro when it came to trying to run applications installed by JetBrains Toolbox. I used the Alfred self-diagnostics tool to figure out what was going on with one of the apps, Rider, and received the output below:

Starting Diagnostics...

File: 'Rider.app'
Path: '/Users/bergren2/Applications/JetBrains Toolbox'

-----------------------------------------------------------

Check file cache database...

✅ File cache integrity is ok

-----------------------------------------------------------

Check if file is readable...

✅ Alfred has permissions to read this file.

Unix Permissions: 493
Underlying Type: NSFileTypeDirectory
Extended Attributes: (
    "com.apple.macl",
    "com.apple.provenance",
    "com.apple.quarantine"
)

-----------------------------------------------------------

Check if volume '/' is indexed by macOS...

✅ Indexing is enabled on this drive

-----------------------------------------------------------

Check direct file metadata...

⚠️ Direct metadata is missing, this file is likely not indexed by macOS

Display Name: 
 Other Names: 
Content Type: 
   Last Used: 

-----------------------------------------------------------

Check mdls file metadata...

❌ macOS metadata missing essential items

kMDItemFSContentChangeDate = 2023-01-20 02:20:40 +0000
kMDItemFSCreationDate      = 2023-01-20 02:20:40 +0000
kMDItemFSCreatorCode       = ""
kMDItemFSFinderFlags       = 0
kMDItemFSHasCustomIcon     = 0
kMDItemFSInvisible         = 0
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery      = 0
kMDItemFSLabel             = 0
kMDItemFSName              = "Rider.app"
kMDItemFSNodeCount         = 1
kMDItemFSOwnerGroupID      = 20
kMDItemFSOwnerUserID       = 501
kMDItemFSSize              = 1
kMDItemFSTypeCode          = ""

-----------------------------------------------------------

❌ Troubleshooting failed

The root of the issue was that the application wasn’t showing up in Spotlight, so I took to the Internet to search for a way to re-index or add the application. It led me to run this:

mdimport ~/Applications/

And while this seemed to do the trick, I was still getting the instance of Rider that exists in ~/Library/Application, but only in Alfred. And Alfred is supposed to ignore it! So knowing that Spotlight was correct — it was only showing the version in ~/Applications/ — I typed “reload” into Alfred to reload the cache and remove the extra instance.

I first became an Alfred user back when Spotlight wasn’t as powerful, and tools like it and Quicksilver were a must-have. Now? I’m not so sure. However Alfred has become a staple part of my workflow, even when it comes to generating GUIDs or quickly opening Jira links when I have ticket ID. And remember Ubiquity for Firefox? Most of that functionality is replicated just fine in Alfred, but I still dream about highlighting an address and seeing it pop up on a map. That was peak Late Aughts.

Edit: I ran into issues indexing core Mac apps — things like Mail.app and Messages.app weren’t showing in Spotlight. It turns out they aren’t actually in /Applications and are instead in /System/Applications — you can easily verify this in terminal using ls on the respective directories. The solution was to delete ~/Library/Preferences/com.apple.spotlight.plist and restart, which I found out about through this guide. Now that I know that this file was being buggy, I wouldn’t be surprised if it was another buggy casualty of the transfer from my old MacBook Pro.

More Cantonese

I’m learning more! I modified my first post to include more Instagram links and removed the “resources I want to try” (they didn’t pan out). Below I embed a few videos from creator Adam Tan that I enjoyed because they encapsulate the subtleties in learning Cantonese — things that I haven’t seen explicitly stated elsewhere, even in some of the resources I’m already using to learn.

Homebrew M1 Migration

As part of my MacBook upgrade, I directly transferred my old laptop’s data into my new one. So when I naively ran brew update I received the following:

/usr/local/Homebrew/Library/Homebrew/cmd/update.sh: line 37: /usr/local/bin/git: Bad CPU type in executable

Rather than try to debug this and countless other libraries not working because they were intended for Intel instead of ARM, I used the opportunity to uninstall Homebrew and start fresh. After reinstalling Homebrew and adding the recommended commands to my .zprofile to add Homebrew to my PATH, I was in good shape.

Hello Vim, my old friend

When checking my .zprofile for errors, I noticed Vim was yelling at me. That reminded me of my dotfiles repo, so I ran to its README to run the installation instructions. And they worked! So while Vim these days is used more for the occasional commit message edit and not my entire workflow, I’m still very grateful for having a good jumping off point for a fresh install. It also reminds me I should add things like fnm and gh if I want them to be part of my toolchain by default.

Speaking of Git

As soon as I finished that thought I ran into this error trying to commit:

error: gpg failed to sign the data
fatal: failed to write commit object

Great! So now I need to figure out how to get my signing working again.

1Password CLI and SSH Signing

1Password has a CLI that can be downloaded directly or installed via brew install 1password-cli. I just had to check a few boxes and told 1Password to configure my ~/.ssh/config correctly.

1Password Developer configuration screen

After I imported my old key to 1Password it prompted me to set-up commit signing with SSH — I didn’t know that was a thing! So after adding my SSH key as a signing key (instead of as an auth key — it was already added as such), I was able to see the fruits of my labor:

My latest dotfiles repo commit, in all its verified goodness

Because the new MacBook has a fingerprint reader, I can easily add that as an additional check whenever I need to sign my commits. Maybe not the most necessary given what I do day-to-day, but I think it’s neat and glad it was so easy to use.

MacBook Upgrade

I finally caved and upgraded my 2015 MacBook Pro to a 2021 M1 Pro MacBook Pro. I had toyed with upgrading the battery on the 2015 MBP because that was the major pain point (couldn’t really go anywhere unplugged), but I also missed having more screen real estate and the fan would kick on for the simplest tasks. Now that my data transfer is complete, I’m taking inventory of the applications I use and figuring out which ones are worth keeping around. So far, here is my list:

Most of these apps “just worked.” The few that didn’t I just had to redownload the M1 image and I was fine — all of the data was preserved, and at most I just needed to re-login.

Annoyances

  • I had to rebind Caps Lock to Esc
  • Edge didn’t sync some settings, such as default search engine or remembering passwords 🙄

Next Up

  • JetBrains silliness listed above
  • Fork is crashing on launch, so will need to figure that out
  • Homebrew updates, key updates, etc
  • Because I transferred my old MacBook directly to my new one, there’s seven year’s worth of cruft I need to work through

Cantonese Learning Resources

Charmander: "Person speaking to me in Chinese"
Ditto as Charmander: "Me trying to reply in Chinese"

Howdy! Since the pandemic I’ve put a little more effort into learning Cantonese. I didn’t learn growing up but was surrounded by it on my mom’s side. This first table is the resources I’ve found so-far that are pretty helpful:

ResourceLinkNote
Jyutpinghttps://jyutping.org/en/Learn the romanization scheme
Mango Languageshttps://mangolanguages.comMight be free with your library! It is in Chicago. Good for phrases and hearing pronunciation, plus they explain cultural differences.
Plecohttps://www.pleco.comDictionary app
Flashcards Deluxehttps://orangeorapple.com/FlashcardsI can setup the flashcards in Google Drive and then it’ll sync
Cantonese Keyboardhttps://github.com/yuetyam/jyutpingKeyboard app that uses Rime-Cantonese as a backbone
Dropshttps://languagedrops.comGood for vocab, learning characters and hearing pronunciation

So far I think the trick with a lot of these apps is a) making sure I’m using vocabulary and phrases that a native Cantonese speaker would use, and b) learning in such a way that I can write both by hand and by typing. The former comes with any language, and the latter comes with the day and age we live in. A big part of learning anything at a later age is getting over making mistakes and trying to be a perfectionist, so it helps me to write out these challenges explicitly so I can hopefully overcome them as obstacles.

Also to address the former, I follow a bunch of creators, many of whom I found via CantoTok. Here are some of the ones I could easily find:

Second post of 2022 wooo

I haven’t been blogging a lot — since the pandemic, really — and my posts have been more focused on the technical rather than on the details of my life. But given the recent collapse of Twitter, I revisited the notion of self-publishing. This blog post made the rounds on Mastodon (yes, I’m on Mastodon), and I resonated with the following:

You are pouring your words into increasingly closed and often walled gardens. You are giving control – and sometimes ownership – of your content to social media companies that will SURELY fail.

Scott Hanselman, Your words are wasted

As if the Universe wanted to reward me for scratching that itch, I recently regained access to my Flickr account that had all of my old blog photos, and I found my blog backups that in theory should date back to 2005 — the year I started this blog.

Now that I’m older, I know I don’t have the same appetite for “being online” like I did when I was 16. But I want to attempt to re-unify all of the parts of my online presence, even if it’s just gathering the pieces for myself and not publishing them back out to the world.

Happy New Year

Growing up, New Year’s Eve used to be an annual tradition of code updates to my blog. I don’t have the same drive that I did back then, but I did get a chance to update my list. Below are the fifty resolutions I want to tackle in 2022:

  1. Rock climb more
  2. Workout regularly to lose weight
  3. Learn Cantonese
  4. Learn drums
  5. Play more double bass
  6. Write more
  7. Learn SketchUp
  8. Fantasy football site
  9. Get new glasses
  10. Publish a video game
  11. Learn Godot
  12. Learn Blender
  13. Learn Procreate
  14. Practice guitar
  15. Learn mandolin
  16. TI4 rules app
  17. Fix record player
  18. Königsberg for a single language
  19. Catalog books
  20. frame and hang the posters
  21. Raspberry Pi project
  22. Become a home inspector 
  23. Finish movies on scratch poster
  24. catalog board games
  25. Finish CS masters degree
  26. Get a Real ID + renew passport
  27. Teach Iggy ASL
  28. Practice tarot regularly
  29. Re-learn piano
  30. Play mahjong regularly
  31. Get really good at Excel
  32. Revitalize your blog
  33. Create a budget!
  34. learn a fighting game on a fight stick with decent netcode
  35. information radiators for the office
  36. Bike more (ebikes or your own)
  37. Author a children’s book
  38. Get good at using the sewing machine
  39. Get good at solving math contest problems
  40. Write a D&D campaign 
  41. Arduino project to monitor plant soil humidity levels
  42. Grace Lee Boggs learning project
  43. Start a software co-op
  44. Start cooking again
  45. Write sheet music regularly
  46. Eat healthier
  47. Set up Hubitat
  48. Learn how to make chiptune music
  49. Contribute to civic open-source software
  50. learn data viz (https://flowingdata.com/, https://www.kaggle.com/, etc)

It spans from simple to ambitious and everything in-between. We’ll see what sticks!