It was 2021. Spring pollen competed with birdsong to fill the air. Sneezes abounded. We needed to relocate my mom, but were having a rough go of it. Finding the cash to finance a move and purchase a dwelling of some kind was proving elusive.
I took an inventory of my skills:
Skill Level Construction (houses) Basic Software development High Musical talent Mediocre Busking at the waterfront on the weekends might pull in a few hundred a month — more if they pay me to stop.
So I built a nice budget app for Android and iOS. A core feature is sending you an alert when a bill is nearly due. Each platform required a very different approach to reliably schedule and trigger those notifications. This… is that story.
Scheduling stuff is hard Have you ever received an alert from an app for something you deleted? For example, you keep getting a reminder to pay your “Doggie Daycare” bill, but you don’t even have a dog anymore?
Wisdom is applied knowledge, therefore memory is the foundation of wisdom.
The physical act of taking notes enhances memory encoding and storage. Reviewing notes increases the amount and breadth of information retrieved.
Keeping notes is a useful practice with a number of benefits, some of them even monetary. The following activities are driven and enhanced by good notes.
Wouldn’t you like to know when MailGun fails to deliver an email? Or worse still, when someone complains about an email you sent?
MailGun can notify you about the following events:
Clicked Complained Delivered Failed Opened Unsubscribed There’s just one catch: You have to write your own webhook, then subscribe to those events with your webhook’s URL. If that thought left you cross-eyed, fear not! The reign of cloud computing has made this simpler than it used to be, especially the introduction of functions as a service.
Grab a bowl of buttery popcorn because the saga continues! The end of the previous chapter saw our intrepid little Rails app camping happily on Heroku. This latest chapter in the hosting chronicles brings with it a twist: not just a change in host, but a complete migration from one programming language to another.
Onward for the Why’s, How’s, and Gottchas of the switch.
I won’t kid you; the road to course creation is riddled with potholes, roadblocks, and sketchy checkpoints. It was hard. But the solution to each obstacle taught me new skills and valuable life lessons. I think it’s time to document those lessons.
Code flows effortlessly from your nimble fingers, like fine cloth from a loom. Your face is serene, focused, content. Suddenly, a wrinkle appears in your brow, breaking that pleasant mask of serenity. The frown deepens. “That can’t be right…” What happened? A bug! A hairy bug lurks fiendishly somewhere in that elegant tapestry of code love. How did the bug slip past you? You were so careful! A frustrated hour passes, then two. You comb through each strand of code, retrace your steps through the intricate lattice of if, when, and for…
We sink so much time into the deep pit that is debugging. Yet for all the time we spend on it, there is surprisingly little literature written on the subject. A notable exception is Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems, by David J Agans.
Keyboard shortcuts, it’s a love-hate relationship. On one hand, they unlock hidden cheat code levels of productivity — on the other, they unlock… What was that again? … Oh yeah, you just can’t remember them! What is it about keyboard shortcuts that makes them so hard to remember? Should you even bother? Is there a reliable way to learn them?
Why is it so hard to remember keyboard shortcuts? Simply put, there’s so many shortcuts to remember, and their use taxes a different class of memory.
Refactoring is the lifeblood of a nimble codebase, but we need to stop hand-refactoring via Ctrl-C/V and start using our automated refactoring tool. Prepare to be convinced, then watch in amazement as you memorize your favorite refactoring tools’ keyboard shortcuts in two hours flat – and remember them forever.
You need an automated refactoring tool Refactoring without tests is dangerous Refactoring without tests and without an automated tool is like walking a tightrope over Niagara falls without a safety net - with your product and entire team standing on your shoulders.
** Hotel Vim ** or: Hotel Colon q. Bang on a dark linux bash prompt, new boss in my hair hot coffee and hardware, stale conditioned air ls listing the files, i cat configs that ain't right my head so heavy and my sight so dim i'd have to work through the night there she sat in the bin dir i heard the terminal bell and i was thinking to myself 'just a quick tweak and all will be well' then she lit up the keyboard and showed me the way three letters in the dark of night i thought i heard vim say welcome to the hotel :q!