Jon Aquino's Mental Garden

Engineering beautiful software jon aquino labs | personal blog

Saturday, March 30, 2024

What i like about the Microsoft Edge browser

 I'm really liking the Microsoft Edge browser on Mac:

  1. The Read Aloud feature is really good. The voice quality is as good as Speechify
  2. I like the vertical tabs. The only thing I don't like is the vertical tabs snap shut after you click X on one of them, so it's tedious if you want to close a bunch of them.
  3. I like the Split Screen feature. You can right-click a link and choose Open Link In Right Split Screen

Saturday, February 10, 2024

Workaround for AI hallucination: Make them sound less sure

 At work I asked our Confluence (wiki) AI, "What does BADF stand for?" It answered

BAMDF stands for Bidder Advertiser Metadata Framework

But I couldn't find “Bidder Advertiser” anywhere in our wiki.

It turns out this was completely wrong. My coworkers told me it actually stands for "Binary Augmented MDF".

To work around the hallucination problem, maybe AIs should prefix everything they say with “I think that...” or  “It seems to me that…” instead of sounding 100% certain all the time.

Wednesday, January 24, 2024

Myers-Briggs code: ISTJ

 Apparently, my Myers-Briggs code is ISTJ. 9 years ago, I thought I was an INFJ.

Sunday, December 31, 2023

My Holland Code

My Holland code is still CIA, as it was in 2020. In 2004, it was different: IAR.

C = Conventional. I like to work with data and numbers, am detail-oriented, and am good at following instructions.

I = Investigative. I like to learn, figure out how things work, and solve problems.

A = Artistic. I have a bit of an artistic bent, using intuition and imagination. I'm a visual person.

Sunday, December 03, 2023

Favourite Things

Here is a list of some of my favourite things.

  1. Chocolate chip mint ice cream
  2. Trying new technological devices and apps
  3. Audiobooks, like Jane Austen novels
  4. Podcasts, like Called to Communion or The Journey Home
  5. Wrestling with my son
  6. Assisting at Mass
  7. Eating out with my wife
  8. Harrison Hot Springs
  9. Fettuccini Alfredo
  10. Computer programming, especially UI projects or small backend projects
  11. Reading tech news
  12. Producing quick data visualizations
  13. Comparison shopping, researching products, reading reviews
  14. Conversion stories
  15. Tools and books for self-improvement
  16. Being a great dad
  17. Personal finance
  18. Lord of the Rings, Narnia, other imaginative fiction
  19. Watching tech documentaries
  20. Visiting the beach with my family
  21. ChatGPT, GitHub Copilot
  22. Computer programming tools
  23. Smart home devices
  24. Lex Fridman podcast - interviews remarkable people

Sunday, August 14, 2022

One Mouse

One mouse, two mice.

One house, two hice.

One louse, two lice.

One blouse, two blice.

One nouse, two nice.

One rouse, two rice.

One twouse, two twice.

One ouse, two ice.

Thursday, June 23, 2022

"Grug Brained Developer" in a Yoda voice

 A couple of days ago, The Grug Brained Developer was posted to Hacker News. It is a collection of programming wisdom written in a caveman style, like:

Instead grug try to limit damage of big brain developer early in project by giving them thing like UML diagram (not hurt code, probably throw away anyway) or by demanding working demo tomorrow

When I shared the link at work, one of my co-workers said, in her head, she was reading it in a Yoda voice.

Well it turns out I actually do have a speech synthesizer app with a Yoda voice! It's a pricey app called Proloquo4Text and it has a voice called Little Creature which sounds like Yoda.

For your enjoyment, here is the app reading “The Eternal Enemy: Complexity” from The Grug Brained Developer, in a Yoda voice.


Thursday, May 13, 2021


Maybe I'm the only one in the world who needs this tool, but I made a webpage called Wordblender. You paste in a bunch of text and it will chunk it up into chunks of 3 consecutive words. It then shuffles the chunks and outputs it.

Use this if you have a long piece of text and you don't want to understand the overall meaning, but you do want to scan it for small runs of local meaning that might be interesting to you.

Like I said, pretty unique use case. Leave a comment if you find this useful for some reason.

Friday, March 05, 2021

Love static typing

I'm currently working in an all-TypeScript codebase, and have also recently been working in Go, and I must say I'm really loving static typing, especially compared to huge JavaScript and Python codebases. Why? Simply because it adds some checks to make sure that the connections between pieces of my code are still sound when I move code around. It doesn't check that everything is correct, but checking connections is an essential sanity check.

Sunday, January 24, 2021

Don't follow Marie Kondo's advice to give your books away - you'll regret it

 A couple of  years ago, I read Marie Kondo's The Life Changing Magic of Tidying Up and one of its recommendations was to part with a bunch of books you don't use. I dutifully followed it and gave 1 bookshelf of books to Value Village (keeping 1 bookshelf of books for myself).

How I regret that decision.

Years of accumulated books, books I wanted to read someday, books I want to read today – gone, just like that. I warn my fellow bookophiles to not follow Marie Kondo's advice. Do not part with your books. Or if you must part with some, part with the ones you hate. Keep the ones you haven't read yet but plan to read someday, or the ones you plan to re-read someday.

Some books I regret throwing out:

  • My undergraduate physics textbook (Halliday and Resnick). In fact, all of my university textbooks. Engineering Physics was my major and I just threw out everything I'd learned. Fortunately lists an old edition of Halliday and Resnick for $20 so I will at least recoup that.
  • A great undergraduate biology textbook – I think it was by Mader.
  • Dialogues of St. Catherine of Siena. Never got around to reading much of it, but I'd like to sometime.

Tuesday, December 29, 2020

What to say during 1:1s

My old manager challenged me to do 1:1s with all 22 engineers in my business unit (RollWorks), and out of that came the following three topics that I would enjoy sharing in any 1:1, whether with someone above me or someone below me.

  1. Anything fun done recently or any hobbies. For them and for you. This helps to connect on a personal level, which is always good.
  2. Main worries or priorities (or what is currently being worked on). For them and for you. It's good to know someone's top concerns or what they are working on.
  3. Anything learned recently or new tools. For them and for you. It's fun to share something you learned recently.
I'm going to try this with 1:1s with my manager.

Wednesday, December 23, 2020

Annoying basic things that golang lacks

 Go lacks some basic features that I am going to document here:

  • abs() for integers
  • min() and max() for integers
  • sets

Wednesday, November 18, 2020

Lego City piece count vs price

 It is interesting to look at a chart of Lego piece counts vs. price. The higher the set is, the better the value. Here is a spreadsheet of Lego City piece counts vs. price for November 18, 2020:

Friday, June 05, 2020

Why IntelliJ is better than VSCode

I've been trying to use VSCode as my main text editor for several months, for Python/Java/JavaScript. But there are important things that VSCode can't do that a dedicated IDE can do with ease. For example, I just got this Java exception when running my code in VSCode:

But will VSCode let me click the line to jump to the code? No it won't unfortunately. IntelliJ will. In fact, IntelliJ will even let me set a breakpoint in the code so I can stop and look around.

And I was really hoping that VSCode could serve my editor needs for any language.

Saturday, March 07, 2020

Favourite authors and influences

The following authors and people have had a big influence on my life.

  • Kent Beck
  • Dave Thomas
  • Marshall Rosenberg
  • Stephen Covey
  • Richard Bolles
  • Edward Feser
  • St. Joseph
  • Fr. Jacques Philippe
  • John Gottman
  • Gordon Neufeld
  • Jane Austen
  • St. Francis de Sales
  • Josef Pieper

Monday, February 10, 2020

Contexts vs Witch

I'm evaluating a couple of Mac task-switcher tools: Witch by ManyTricks and Contexts. I think I'm going to go with Contexts for the following reasons:

Advantages of Witch:

  • Can switch to a specific tab in Chrome and some other apps
Advantages of Contexts:
  • Faster than Witch. Sometimes Witch takes a few seconds to open for some reason.
  • Reliably binds to Command+Tab. When Witch is bound to Command+Tab, sometimes the old switcher opens on Command+Tab, for example, when the Google login screen is being shown. Contexts doesn't have this problem.

Sunday, January 19, 2020

My Holland Code

My Holland Code is CIA/CIR. This code is one way of summing up your interests.

My main ones are Conventional and Investigative. Conventional folks are people who like working with data and math and who are detail-oriented. Investigative people love to learn, analyze, and evaluate things. Yes I am detail-oriented and yes I like researching stuff (especially when shopping 🙂).

My secondary ones are Artistic and Realistic. Artistic people like to use their creativity and have artistic abilities. Realistic people like to work with machines and tools. I have a bit of both although they aren't my primary strengths. I am a visual person and I like to show data visually. I also like to use my tools to do minor household repairs.

Great software engineers I love working with

This is a list of some good software engineers I have really enjoyed working with closely. I love how they code and the depth of their knowledge.

  • Andrey Sukhachev - Ning
  • Thomas Dudziak - Ning
  • Jon Hartlaub - Ning
  • Henning Schmiedehausen - Ning
  • David Sklar - Ning
  • Martin Traverso - Ning
  • Miguel Lara Encabo - AdRoll
  • Emmanuel Garcia - AdRoll
  • Piyush Srivastava - AdRoll
  • Kushagra Verma - AdRoll
  • Nathan Clegg - AdRoll/Ning
  • (to be continued)

Thursday, November 29, 2018

Meld: A good diff for OSX

Aside from the very expensive Araxis Merge, I think Meld is the best diff for OSX, at least for me, because:

  • It has the option to start with two blank textareas that you can paste text into.
  • It allows you to edit the textareas.
  • It gets the diff right almost all of the time.
  • It has optional line wrapping. Some other tools do not have this (such as Beyond Compare).
  • It can compare directories.
Check out this example of Sublimerge getting the diff wrong:
It fails to recognize that what is happening is that there were four removals. Meld gets it right:

Beyond Compare I just don't get. I know a lot of people praise it, but it seems buggy to me. For example, when I want to paste in the above example, I paste the code on the left:

And then to paste the code on the right, I click in the middle of the right textarea and press V, and now things are messed up:
So then I press ⌘A, ⌘V, thinking that will fix it, but it's still messed up:
Only when I press ⌘A, ⌘V on the left side are things finally fixed:
I don't know – there is something funny about the way Beyond Compare handles alignment. Like if the right side is blank, why is it letting me paste on different lines present on the left side, instead of pasting on the first line like a normal empty textarea?

I have also noticed that DeltaWalker gets diffs wrong too - I don't have an example at present, but will provide one when I can.

Friday, November 09, 2018

Slack: green z vs gray z

Today I learned the difference between the green z icon and the gray z icon in Slack:

From Slack support: "Green means they are currently online. The "z" indicates they have Do Not Disturb turned on which prevents notifications popping up on their screen."

Saturday, September 22, 2018

Comparison of Surrey BC municipal political parties

This is a comparison of the Surrey BC municipal political parties, drawn from articles in the Surrey Now-Leader newspaper.

LRT (Light Rail Transit) Municipal police force instead of RCMP
Surrey First Go ahead with LRT Hold a referendum
Safe Surrey Coalition SkyTrain instead of LRT Change to municipal police force
Surrey Integrity Now Go ahead with LRT for Guildford-to-Newton. More consultation for Phase 2. Weigh options first. Leaning toward keeping RCMP.
Proudly Surrey Go ahead with LRT + cross-border US bus network
Progressive Sustainable Surrey Interurban over LRT or SkyTrain
People First Surrey SkyTrain instead of LRT

Saturday, February 24, 2018

Comparison of smart water bottles

Hidrate Spark Thermos Smart Lid Ozmo H2OPal
Price 60 CAD 90 CAD 133 CAD
CamelCamelCamel reasonable price 60 CAD 90 CAD 133 CAD
Fakespot grade/adjusted rating F/ B/3 F A/3.5
Pros - alert: app, glow - rechargeable
- alert: app
- easy setup
- rechargeable
- alert: LED, vibration
- easy setup
- alert: app
Cons - paint peels off
- quality issues
- sync issues
- coin battery
- complex setup
- corny notifications
- quality issues
- sync issues
- skips sips
- quality issues
- sync issues
- don't need coffee detection
- quality issues
- coin battery
Other reviews PCMag PCMag

Thursday, February 08, 2018

Handy prioritization categories

I was googling for some tips on prioritizing home-improvement projects, when I came across a great list of prioritized categories for such projects. It occurred to me that the same list of categories could help to prioritize any to-do list, not just home maintenance:

  1. Safety
  2. Urgent damage
  3. Prevent long-term health hazards
  4. Maintenance / Prevent long-term damage
  5. Money-saving upgrades
  6. Low cost, high impact improvements
  7. Big nuisance factor
  8. Cosmetic improvements
Simply categorize your to-do list into the above categories, then work through them in approximately that order. 

See the original post for more details on each of those priorities.

Saturday, April 29, 2017

BC Provincial Election resources

Voters who are unsure of who to vote for should check out these two resources:

Saturday, April 01, 2017

Parachute Randomized Prioritizing Grid

This tool helps you to rank a list of your preferences by comparing them a pair at a time. The idea is based on Richard Bolles' Prioritizing Grid (as implemented by Beverly Ryle). But one think I don't like about it is that the pairs aren't randomized, which makes the exercise a bit more boring than it has to be. Also once you start getting as high as 30 items, the grid becomes hard to use (the online version scrolls off-screen on my laptop).

So this version presents random pairs to you. It still uses the same sorting scheme (by number of wins). I basically took my Elo Preference Ranker UI and modified/simplified it.

Simply paste in a list of items to rank, one per line (e.g., your favorite skills). Then press "Start ranking!". You will then be presented with a pair of items at a time, and you are asked to choose which is better or more important. As you go, the sorted list will appear at the bottom.

Input Strings

Enter the strings to rank, one per line. Then press "Start ranking!". You will be presented with pairs of strings - click the button corresponding to which item is more important or better.


Click the button corresponding to which item is more important or better. You can also press "J" for the left item and "L" for the right.

Something. Something else.

0 remaining

You have finished comparing all items!

Sorted Output Strings

The sorted strings are:

Saturday, March 11, 2017

Slides from "Prayer and Scripture" talk

I gave a half-hour talk on Prayer and Scripture for Couples For Christ, Our Lady of Good Counsel Parish, Surrey BC on March 11, 2017.

The slides are here (38 MB), but won't make sense without the accompanying talk.

Monday, January 30, 2017

Hacker News favourite categories

It can be instructive and fun to figure out what your interests are by looking at what kind of Hacker News articles you link.

I am going to tabulate my interests here - try the same if you like.

  • 2 - Work: How to make it better
  • 3 - Work: How to make it worse
  • 1 - Improvements to software engineering 
  • 13 - Promising new coding practices or tools
  • 4 - Product successes
  • 13 - Product failures
  • 3 - Promising new technology
  • 3 - Retro tech
  • 4 - Low tech
  • 4 - Personal self-improvement

Pressure-mounted baby gate comparison

After spending way too many hours on researching this topic, I have come to the conclusion that when looking for a pressure-mounted baby gate, you have the following options:

Price Example Comfortably wide door Latch is easy to open Gate auto-closes behind you
$40 Regalo Easy Step Walk Thru      
$60 Evenflo Easy Walk-Through Yes    
$80 Brica/Munchkin Wood & Steel Designer Yes Yes  
$100 Munchkin Auto Close Designer Yes Yes Yes

Thursday, December 29, 2016

An objective definition of beautiful software

Beautiful software is code that you can add features to while only needing to modify a few lines to allow the change to come in.

So the most beautiful software is code that requires 0 line changes before adding a feature.

But if it requires a handful of line changes, it's still beautiful to me.

Ugly software needs shotgun surgery when a feature needs to be added - changes in a bazillion places.

Tuesday, July 12, 2016

5-minute journal

I'm trying out a cool thing called the 5-Minute Journal. It is a journal that you buy for $25 CAD (there is also a $5 app, but I think I prefer pen and paper). Basically it is a guided journal that asks you the same set of questions each day (with some variations: inspirational quote, weekly challenge). I have always had trouble keeping a journal, but I think this will really help.