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.
Engineering beautiful software | jon aquino labs | personal blog |
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.
posted by Jonathan at
8/14/2022 04:51:00 p.m.
|
0 comments
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.
posted by Jonathan at
6/23/2022 05:49:00 p.m.
|
0 comments
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.
posted by Jonathan at
5/13/2021 12:10:00 a.m.
|
2 comments
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.
posted by Jonathan at
3/05/2021 09:48:00 a.m.
|
0 comments
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:
posted by Jonathan at
1/24/2021 02:40:00 p.m.
|
1 comments
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.
posted by Jonathan at
12/29/2020 11:42:00 p.m.
|
0 comments
Go lacks some basic features that I am going to document here:
posted by Jonathan at
12/23/2020 11:06:00 a.m.
|
2 comments
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:
posted by Jonathan at
11/18/2020 09:28:00 a.m.
|
0 comments
posted by Jonathan at
6/05/2020 10:49:00 p.m.
|
2 comments
posted by Jonathan at
3/07/2020 12:28:00 a.m.
|
0 comments
posted by Jonathan at
2/10/2020 07:55:00 p.m.
|
1 comments
posted by Jonathan at
1/19/2020 04:20:00 p.m.
|
0 comments
posted by Jonathan at
1/19/2020 12:43:00 a.m.
|
0 comments
posted by Jonathan at
11/29/2018 10:44:00 p.m.
|
0 comments
posted by Jonathan at
11/09/2018 03:28:00 p.m.
|
0 comments
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 |
posted by Jonathan at
9/22/2018 10:35:00 p.m.
|
0 comments
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 |
posted by Jonathan at
2/24/2018 12:47:00 a.m.
|
0 comments
posted by Jonathan at
2/08/2018 08:11:00 p.m.
|
0 comments
Voters who are unsure of who to vote for should check out these two resources:
posted by Jonathan at
4/29/2017 08:54:00 a.m.
|
0 comments
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.
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!
The sorted strings are:
posted by Jonathan at
4/01/2017 01:25:00 p.m.
|
1 comments
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.
posted by Jonathan at
3/11/2017 10:03:00 p.m.
|
0 comments
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.
posted by Jonathan at
1/30/2017 07:37:00 p.m.
|
0 comments
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 |
posted by Jonathan at
1/30/2017 07:31:00 p.m.
|
0 comments
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.
posted by Jonathan at
12/29/2016 12:53:00 a.m.
|
0 comments
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.
posted by Jonathan at
7/12/2016 12:51:00 a.m.
|
0 comments
When driving, there are a lot of things you need to consider when turning right on a red light:
It seems like a huge amount of factors to consider.
posted by Jonathan at
6/07/2016 06:15:00 a.m.
|
0 comments
posted by Jonathan at
4/29/2016 11:38:00 a.m.
|
0 comments
I used Google Sites to create free websites for a couple of businesses for my friends and family. First, my friend's electrical contractor business: Trivino Electrical Services. Second, my dad's tutorial center: Young Ones.
They have a bunch of average-looking templates that you can use to quickly create the website.
It's free, but if you want a custom domain, you need to pay $10-$20/year to Namecheap or another domain name registrar.
posted by Jonathan at
3/02/2016 08:53:00 p.m.
|
1 comments
Here is Fr. John McCloskey's Catholic Lifetime Reading Plan, sorted by subject:
Catholicism Explained/Theology – Adams – The Spirit of Catholicism
Catholicism Explained/Theology – Bouyer – Spirit and Forms of Protestantism
Catholicism Explained/Theology – Catechism of the Catholic Church
Catholicism Explained/Theology – Hahn – Rome Sweet Home
Catholicism Explained/Theology – Kreeft – Christianity for Modern Pagans
Catholicism Explained/Theology – Newman – Essay on Development of Christian Doctrine
Catholicism Explained/Theology – Ott – Fundamentals of Catholic Dogma
Catholicism Explained/Theology – Pieper – The Four Cardinal Virtues
History and Culture – Belloc – How The Reformation Happened
History and Culture – Belloc – Survivals and New Arrivals
History and Culture – Belloc – The Great Heresies
History and Culture – Carroll – History of Christendom (All Volumes)
History and Culture – Crocker – Triumph
History and Culture – Dawson – Christianity and European Culture
History and Culture – Guardini – End of the Modern World
History and Culture – Hannam – God's Philosophers
History and Culture – Knox – Enthusiasm
History and Culture – Leclercq – Love of Learning and the Desire for God
History and Culture – Walsh – Our Lady of Fatima
Holy Men and Women – Chesterton – St. Francis of Assisi
Holy Men and Women – Day – Long Loneliness
Holy Men and Women – John XXIII – Journal of a Soul
Holy Men and Women – Merton – Seven Storey Mountain
Holy Men and Women – Muggeridge – Something Beautiful for God
Holy Men and Women – Newman – Apologia Pro Vita Sua
Holy Men and Women – Simon Peter – Chevrot
Holy Men and Women – St. Thomas Aquinas – Chesterton
Holy Men and Women – Suarez – Mary of Nazareth
Holy Men and Women – Trochu – Cure of Ars
Holy Men and Women – Wegemer – Thomas More
Holy Men and Women – Weigel – Witness to Hope
Literary Classics – Benson – Lord of the World
Literary Classics – Bernanos – The Diary of a Country Priest
Literary Classics – Cervantes – Don Quixote
Literary Classics – Dante – Divine Comedy
Literary Classics – Eliot – Christianity and Culture
Literary Classics – Endo – Silence
Literary Classics – Hopkins – Hopkins: Poetry and Prose
Literary Classics – Kristen Lavransdatter 1
Literary Classics – Kristen Lavransdatter 2
Literary Classics – Kristen Lavransdatter 3
Literary Classics – Newman – Idea of a University
Literary Classics – O'Connor – Flannery O'Connor: Complete Stories
Literary Classics – Percy – Lost in Cosmos
Literary Classics – Percy – Love in the Ruins
Literary Classics – Sienkiewicz – Quo Vadis
Literary Classics – Tolkien – Lord of Rings
Literary Classics – Waugh – Brideshead Revisited
Misc – Benedict XVI – Day by Day with the Pope
Misc – Benedict XVI – Opera Omnia
Misc – Bennet – The Emotions God Gave You
Misc – Bennet – The Temperament God Gave You
Misc – Enzler – My Other Self
Misc – John Paul II – Opera Omnia
Misc – Masson – Companion Guide to Rome
Misc – Neuhaus – Catholic Matters
Misc – Rice – 50 Questions on the Natural Law
Misc – Sertillanges – Intellectual Life
Misc – Stein – Woman
Misc – The Privilege of Being a Woman – Hildebrand
Spiritual Classics – Augustine – City of God
Spiritual Classics – Augustine – Confessions of St. Augustine
Spiritual Classics – Chesterton – Everlasting Man
Spiritual Classics – Chesterton – Orthodoxy
Spiritual Classics – John of the Cross – Dark Night of the Soul
Spiritual Classics – King's Good Servant but God's First – Monti
Spiritual Classics – Lewis – Mere Christianity
Spiritual Classics – Lewis – Problem with Pain
Spiritual Classics – Lewis – Screwtape Letters
Spiritual Classics – Mother Teresa – Meditations from a Simple Path
Spiritual Classics – Oursler – The Greatest Story Ever Told
Spiritual Classics – St. Catherine – Little Talks with God (modernized version of "The Dialogues")
Spiritual Classics – St. Teresa of Avila – Interior Castle
Spiritual Classics – St. Therese of Lisieux – Story of a Soul
Spiritual Classics – St. Thomas Aquinas – My Way of Life
Spiritual Classics – Teresa of Avila-Way of Perfection
Spiritual Classics – The Lord – Guardini
Spiritual Classics – Transformation – Hildebrand
Spiritual Reading – Aumann – Spiritual Theology
Spiritual Reading – Baur – Frequent Confession
Spiritual Reading – Baur – In Silence with God
Spiritual Reading – Boylan – Difficulties in Mental Prayer
Spiritual Reading – Boylan – Tremendous Lover
Spiritual Reading – Burke – Covenanted Happiness
Spiritual Reading – Caussaude – Abandonment to Divine Providence
Spiritual Reading – Chautard – Soul of Apostolate
Spiritual Reading – Cizek – He Leadeth Me
Spiritual Reading – d'Elbee – I Believe in Love
Spiritual Reading – de la Palma – The Sacred Passion
Spiritual Reading – de Sales – Introduction to Devout Life
Spiritual Reading – de Sales – Treatise on the Love of God
Spiritual Reading – Escriva – Christ is Passing By
Spiritual Reading – Escriva – Way of the Cross
Spiritual Reading – Escriva – Way, Furrow, Forge
Spiritual Reading – Faber – All for Jesus
Spiritual Reading – Garrigou-Lagrange – Three Ages of Interior Life, I
Spiritual Reading – Garrigou-Lagrange – Three Ages of Interior Life, II
Spiritual Reading – Granada – Sinner's Guide
Spiritual Reading – Holzner – Paul of Tarsus
Spiritual Reading – Kelly – Rediscovering Catholicism
Spiritual Reading – Kempis – The Imitation of Christ
Spiritual Reading – Liguori – 12 Steps to Holiness and Salvation
Spiritual Reading – Liguori – The Practice of the Love of God
Spiritual Reading – Liguori – Uniformity with God's Will
Spiritual Reading – Lovasik – The Hidden Power of Kindness
Spiritual Reading – Manzoni – Betrothed
Spiritual Reading – Martinez – True Devotion to the Holy Spirit
Spiritual Reading – Montfort – True Devotion
Spiritual Reading – More – Sadness of Christ
Spiritual Reading – Opera Omnia – (Jacques?) Phillipe
Spiritual Reading – Perquin – Abba Father
Spiritual Reading – Plus – Winning Souls for Christ
Spiritual Reading – Rohrbach – Conversation with Christ
Spiritual Reading – Scupoli – Spiritual Combat
Spiritual Reading – Sheed – Theology for Beginners
Spiritual Reading – Sheed – To Know Christ Jesus
Spiritual Reading – Sheen – Life of Christ
Spiritual Reading – Sheen – Three to Get Married
Spiritual Reading – Tanqueray – Spiritual Life
Spiritual Reading – The Divine Pity – Vann
Spiritual Reading – The Rule of Our Warfare – Newman
posted by Jonathan at
2/15/2016 02:20:00 a.m.
|
0 comments
A schizophrenic method is a method that is begging to be split into two. It has a lot of if statements, but closer inspection reveals that most of the ifs can be eliminated by splitting the method into two. It may take some effort to unravel the two cases from the hodgepodge of ifs on various variables, but it's beautiful if you can do it.
posted by Jonathan at
1/28/2016 05:08:00 p.m.
|
0 comments