Welcome to The Coded Message! on The Coded Message
thecodedmessage.com-
Welcome to The Coded Message! on The Coded Message Large Language Models Should Have to Obey Copyright
Large Language Models Should Have to Obey Copyright
Jimmy Hartzell thecodedmessage.comAI, particularly this new round of large language models, scares me on behalf of society and the future. I don’t just say that because it’s transformative. I don’t say that as a generic warning that we haven’t considered the consequences (as in this XKCD comic). No, I have specific consequences in mind, consequences that I have considered, and I am rather worried about them! They are not so much problems about the...
-
Welcome to The Coded Message! on The Coded Message Can C++ fix its biggest problem?
Can C++ fix its biggest problem?
Jimmy Hartzell thecodedmessage.comC++, like all things, has numerous problems. Pointing out how Rust addresses many of them is a major topic of my blog, but some of the problems are bigger than others. The biggest, most famous, loudest problem, the problem that got the federal government’s attention and resulted in a surreal flame war between Dr. Bjarne Stroustrup and the NSA (which I also commented on/contributed to), is C++’s lack of memory...
-
Welcome to The Coded Message! on The Coded Message There's Always Problems
There's Always Problems
Jimmy Hartzell thecodedmessage.comI was Googling for sources about nuclear power for my new political views garden, and I came across the following statement in reference to nuclear waste: I know that burning fossil fuels is bad, but we can’t just start another problem just because we can’t fix the first one. I’m not trying to single out the person who wrote this (and therefore no link, and the quote has been edited for spelling and grammar which I...
-
Welcome to The Coded Message! on The Coded Message Asahi Linux Again
Asahi Linux Again
Jimmy Hartzell thecodedmessage.comSince my previous post, I haven’t posted about Asahi Linux. This is for a simple reason: I wasn’t using it. I never took the time to set up a tiling window manager, get dropbox working, and all the things I felt I needed, and I slipped back to using my trusty Dell Ubuntu laptop for Linux, and using my MacBook M1 just for macOS. But then I tried again! And wow, has Asahi Linux changed!
-
Welcome to The Coded Message! on The Coded Message What Bits Mean: Meta-Data and Static Typing
What Bits Mean: Meta-Data and Static Typing
Jimmy Hartzell thecodedmessage.comThis is part of my new series on what the 0’s and 1’s in computers mean, how computers use them to store various kinds of information, and why all of this works the way it does. When I was a boy, my schoolmates, knowing that I was interested in computers, would sometimes ask me if I could read binary. They imagined I would see some binary, and be able to read it out loud like they could read letters, perhaps some...
-
Welcome to The Coded Message! on The Coded Message Asking Nicely: Avoiding Passive and Aggressive Communication
Asking Nicely: Avoiding Passive and Aggressive Communication
Jimmy Hartzell thecodedmessage.comHow do we ask the other people in our lives for the things we need and want? This can be difficult for everybody. Many of us have trauma from a society that continually tells us that we don’t deserve to have help meeting our needs, or from past situations where our needs have been neglected. We are also often aware that asking for things can sometimes be upsetting to the people we ask.
-
Welcome to The Coded Message! on The Coded Message What Bits Mean: Binary Integers and Two's Complement
What Bits Mean: Binary Integers and Two's Complement
Jimmy Hartzell thecodedmessage.comI was explaining two’s complement recently1 to a friend, and I thought my explanation was decent, so I decided to write it up and share it with you, my general blog audience, as well! If you already know about two’s complement, this will pretty much just be a review. If not, you may learn something, and you may not understand all of it. Try to get what you can without getting too anxious, there will not be a test!
-
Welcome to The Coded Message! on The Coded Message Sorting Polymorphically in Many Languages
Sorting Polymorphically in Many Languages
Jimmy Hartzell thecodedmessage.comPolymorphism is a powerful programming language feature. In polymorphism, we have generic functions that don’t know exactly what type of data they will be operating on. Often, the data types won’t even all have been designed yet when the generic function is written. The generic function provides the general outline of the work, but the details of some parts of the work, some specific operations, must be tailored to...
-
Welcome to The Coded Message! on The Coded Message A Review of Self-Help as a Genre, and Atomic Habits in Particular
A Review of Self-Help as a Genre, and Atomic Habits in Particular
Jimmy Hartzell thecodedmessage.comI enjoyed reading Atomic Habits, which was recommended to me by my therapist. I found this blog post basically finished in my attic folder while sorting through things, and I found it up to posting, even though my records show I read Atomic Habits way back in … October 2022. Self-Help in General Atomic Habits is pretty fundamentally a “self help book.” This is a pretty controversial genre in my experience.
-
Welcome to The Coded Message! on The Coded Message Minor News: Some Repos on GitHub
Minor News: Some Repos on GitHub
Jimmy Hartzell thecodedmessage.comSo, there are now two additional repos of my code on GitHub that recently got published, both under the MIT license. Neither is any show-stopping major project, but I figured I’d let everyone know nevertheless, and write up a few notes about it. Both have been added to my programming portfolio garden. Repo #1: Crate Version of Prefix Ranges Arvid Norlander (blog, GitHub) reached out to me to ask if I wanted to...
-
Welcome to The Coded Message! on The Coded Message Review: One Billion Americans, by Matthew Yglesias
Review: One Billion Americans, by Matthew Yglesias
Jimmy Hartzell thecodedmessage.comThis was a great read about how the United States should reframe many of its basic political assumptions. It is tempting to think of life as a zero-sum game. Having more for me, even enough for me, means less or even not enough for others. Usually, we have the open-mindedness to feel like we can cooperate with some few – our family, our community, or perhaps our nation or religion or even (problematically) our...
-
Welcome to The Coded Message! on The Coded Message Is Section 3 of the 14th Amendment Undemocratic?
Is Section 3 of the 14th Amendment Undemocratic?
Jimmy Hartzell thecodedmessage.comUS politics continue to be interesting. As many of you know, the Colorado Supreme Court has recently ruled that Donald Trump should be struck from the ballot in Colorado. Under Section 3 of the 14th Amendment to the US Constitution, if you’ve sworn to support the Constitution, and then engaged in (or “given aid or comfort to”) an insurrection, you are no longer eligible to serve in office. The Colorado Supreme Court...
-
Welcome to The Coded Message! on The Coded Message 2023 in Retrospective and 2024 in Prospective
2023 in Retrospective and 2024 in Prospective
Jimmy Hartzell thecodedmessage.comAnother year has gone by And in response, I simply sigh Another year has taken place I guess I’ll handle it with grace? Another year, the same old grind… And yet I feel I’ve fallen behind As you might know if you’ve read my equivalent post from last year, I am now 35 years old (and 3 days). If we consider “working years” to range from 20 to 65 – which seems a decent definition – then I am 1/3 of the way through...
-
Welcome to The Coded Message! on The Coded Message Rust Is Beyond Object-Oriented, Part 3: Inheritance
Rust Is Beyond Object-Oriented, Part 3: Inheritance
Jimmy Hartzell thecodedmessage.comIn this next1 post of my series explaining how Rust is better off without Object-Oriented Programming, I discuss the last and (in my opinion) the weirdest of OOP’s 3 traditional pillars. It’s not encapsulation, a great idea which exists in some form in every modern programming language, just OOP does it oddly. It’s not polymorphism, also a great idea that OOP puts too many restrictions on, and that Rust borrows a...
-
Welcome to The Coded Message! on The Coded Message Are You Sure? (Revised)
Are You Sure? (Revised)
Jimmy Hartzell thecodedmessage.comThis is a revision of a flash fiction piece first published in 2018. After a year of talking, and another year of planning, the project was complete. Mothers Against Drunk Driving, the local clergy, and the town council had finally done it: Right in the town square, they installed a giant loudspeaker. From thenceforth, every two minutes, a booming voice would spread all over town, announcing: ARE YOU SURE? Foolhardy...
-
Welcome to The Coded Message! on The Coded Message Endianness, and why I don't like htons(3) and friends
Endianness, and why I don't like htons(3) and friends
Jimmy Hartzell thecodedmessage.comEndianness is a long-standing headache for many a computer science student, and a thorn in the side of practitioners. I have already written some about it in a different context. Today, I’d like to talk more about how to deal with endianness in programming languages and APIs, especially how to deal with it in a principled, type-safe way. Before we get to that, I want to make some preliminary clarifications about...
-
Welcome to The Coded Message! on The Coded Message Operating Systems: What is the command line?
Operating Systems: What is the command line?
Jimmy Hartzell thecodedmessage.comThis is my newest post in my series about operating systems. Yes, it was last updated in 2019 – I’m a hobbyist blogger. This is a post about the command line, a computer topic, but it is for educating a non-technical (but tech-curious) audience. Most of the programmers in my audience will already know everything I have to say, and may be bored by some explanation of things they already know, though I intend to...
-
Welcome to The Coded Message! on The Coded Message Can computers think things?
Can computers think things?
Jimmy Hartzell thecodedmessage.comThis blog post isn’t about ChatGPT. It isn’t about machine learning, neural nets, or any mysterious or border-line spiritual form of computing. That’s a whole ’nother set of philosophical and metaphysical conundrums (conundra?). This is about a way people sometimes speak, informally, about bog-standard boring non-AI computers and computer programs. You’ve probably heard people speak this way. You’ve probably spoken...
-
Welcome to The Coded Message! on The Coded Message Verbal Tics
Verbal Tics
Jimmy Hartzell thecodedmessage.comI remember hearing an idea once – I’d like to cite it, but proper citation seems difficult, as I heard it from an acquaintance, and Mr. Google isn’t being his usual helpful self. The idea was, different politicians have these verbal tics, these filler catch-phrases, that indicate their deepest conversational anxieties. For President Obama, it’s “let me be clear.” According to this thesis, he is really concerned...
-
Welcome to The Coded Message! on The Coded Message My Dream C++ Additions
My Dream C++ Additions
Jimmy Hartzell thecodedmessage.comUPDATE: I have updated this post to address C++ features that address these issues or have been purported to. I have long day-dreamed about useful improvements to C++. Some of these are inspired by Rust, but some of these are ideas I already had before I learned Rust. Each of these would make programming C++ a better experience, usually in a minor way. Explicit self reference instead of implicit this pointer UPDATE:...
-
Welcome to The Coded Message! on The Coded Message In Defense of 'C/C++'
In Defense of 'C/C++'
Jimmy Hartzell thecodedmessage.comOne of the minor points I discussed in my response to Dr. Bjarne Stroustrup’s memory safety comments was the controversial, apparently deeply upsetting term C/C++. It is controversial and interesting enough that I decided to say a little more about it here. A little background: Many people, especially outside the C and C++ communities (which, to be clear, don’t always like each other that much) use the term C/C++ to...
-
Welcome to The Coded Message! on The Coded Message C++ Papercuts
C++ Papercuts
Jimmy Hartzell thecodedmessage.comUPDATE: Wow, this post has gotten popular! I’ve written a new post that adds new papercuts combined with concrete suggestions for how C++ could improve, if you are interested. Also, if you want to read more about C++’s deeper-than-papercut issues, I recommend specifically my post on its move semantics. Thank you for reading! My current day job is now again a C++ role. And so, I find myself again focusing in this...
-
Welcome to The Coded Message! on The Coded Message New Link: Technical Only RSS
New Link: Technical Only RSS
Jimmy Hartzell thecodedmessage.comTLDR: I am adding a new link for RSS subscribers who just want to subscribe to technical posts. The RSS feed has always been available, but it is now explicitly one of the links across the top, for those who want their RSS feed to only give them my new technical posts. I am writing this post primarily to let people know about this new link, but I also want to muse on it a little.
-
Welcome to The Coded Message! on The Coded Message The Curse of Coffee
The Curse of Coffee
Jimmy Hartzell thecodedmessage.comTRIBUNAL PROCEEDING TRANSCRIPT SUB LEGIBUS ORDINIS SACROSANCTI IMMORTALIUM PROVISIONAL PROOF TEXT IN THE CASE OF: ŌRDŌ SACROSANCTUS VERSUS THE NAMELESS DAUGHTER OF MUŠMAḪḪU THE SEVEN-HEADED SERPENT, SHE WHO IS KNOWN TO THE MORTALS AS EUNICE LORD JUSTICE MEPHISTO, PRESIDING LORD JUSTICE DRACHENMILCH, LORD JUSTICE BA’AL-HA-KHUMUS, AND LORD LADY JUSTICE XYXXYZ MR. AZAXAZALIA, ESQ., PROSECUTOR MS. “EUNICE”, DEFENDANT A...
-
Welcome to The Coded Message! on The Coded Message On ADHD Medication
On ADHD Medication
Jimmy Hartzell thecodedmessage.comHere’s a story; stop me if you’ve heard it before. There’s a child, an energetic, enthusiastic child, perhaps hard to deal with in some ways, but all around just beautiful. And then they go to a parochial school – or perhaps they just have a rather strict public school teacher. In either case, the authority figure makes it their wicked mission to suppress all the beautiful children’s personalities into identical,...
-
Welcome to The Coded Message! on The Coded Message Walk-Through: Prefix Ranges in Rust, a Surprisingly Deep Dive
Walk-Through: Prefix Ranges in Rust, a Surprisingly Deep Dive
Jimmy Hartzell thecodedmessage.comUpdate: Arvid Norlander has gone through the trouble of refactoring this code into a crate and publishing it. Thank you, Arvid! Rust’s BTreeMap and corresponding BTreeSet are excellent, B-tree-based sorted map and key types. The map implements the ergonomic entry API, more flexible than other map APIs, made possible by the borrow checker. They are implemented with the more performant but more gnarly B-Tree data...
-
Welcome to The Coded Message! on The Coded Message Fiction Review: The Long Way to a Small Angry Planet
Fiction Review: The Long Way to a Small Angry Planet
Jimmy Hartzell thecodedmessage.comI already enjoyed the Monk and Robot series by Becky Chambers (A Psalm for the Wild-Built and A Prayer for the Crown-Shy). It’s now one of my favorite books. so I was excited to also read her earlier work, the Wayfarer series, starting with The Long Way to a Small, Angry Planet, and it did not disappoint me. Both these series are science fiction. While Monk and Robot is solarpunk, a relatively new sub-genre focused...
-
Welcome to The Coded Message! on The Coded Message Debt Ceiling, Redux
Debt Ceiling, Redux
Jimmy Hartzell thecodedmessage.comSo you might or might not be aware about the debt ceiling argument currently taking place in the US. I’ve already written about this, but President Biden for some reason didn’t listen to me (perhaps because he doesn’t read my blog – which is disappointing). Other, more famous people have written about it too,, but the President insists on pretending he has to make a deal with the Republicans. So, to catch everyone...
-
Welcome to The Coded Message! on The Coded Message There is No One True Best Programming Language (but some are still better than others)
There is No One True Best Programming Language (but some are still better than others)
Jimmy Hartzell thecodedmessage.comI am no stranger to programming language controversy. I have a whole category on my blog dedicated to explaining why Rust is better than C++, and I’ve taken the extra step of organizing it into an MDBook for everyone’s convenience. Most of them have been argued about on Reddit, and a few even on Hacker News. Every single one of them have been subject to critique, and in the process, I’ve been exposed to every...
-
Welcome to The Coded Message! on The Coded Message x86S: A Long Time Coming
x86S: A Long Time Coming
Jimmy Hartzell thecodedmessage.comIntel has just released a new white paper, where they discuss removing a lot of the legacy cruft of the Intel/AMD architecture they call Intel64. Only 64-bit operating systems – and a narrow set of 32-bit legacy apps that don’t use segmentation (a small subset in theory but basically all of them in practice) – will be supported. I am surprised at how excited I am, although after all this time perhaps the better word...
-
Welcome to The Coded Message! on The Coded Message Voice is Hard
Voice is Hard
Jimmy Hartzell thecodedmessage.comI was reading my ADHD blog post today, considering whether to send it to a friend, and it was surprisingly hard for me to bring myself to. I realized I was embarrassed at the voice, the phrasing, the lack of beauty in the individual words, all of which is something I paid relatively little attention to before – and which my friend, who also writes, will definitely notice. It’s something I’ve paid less attention to...
-
Welcome to The Coded Message! on The Coded Message A New Garden: Rust vs C++ mdbook
A New Garden: Rust vs C++ mdbook
Jimmy Hartzell thecodedmessage.comHere it is, the Rust vs C++ mdbook. I’ve wanted for a while to re-organize some of the content on my blog into gardens. I got the idea from the blog post “The Garden and the Stream: A Technopastoral”. Basically, some content is ill-suited to date-based, time-organized systems like blogs. In fact, most of my content remains valid over a long period of time, rather than participating in conversation (with some...
-
Welcome to The Coded Message! on The Coded Message This Little Piggy Did Crime
This Little Piggy Did Crime
Jimmy Hartzell thecodedmessage.comThis little piggy went to market This little piggy stayed home This little piggy had roast beef… This little piggy had pork This little piggy arrested the last two little piggies …For their heinous crimes against barnyard solidarity …And put them in little piggy jail
-
Welcome to The Coded Message! on The Coded Message Rust: A New Attempt at C++'s Main Goal
Rust: A New Attempt at C++'s Main Goal
Jimmy Hartzell thecodedmessage.comI know I set the goal for myself of doing less polemics and more education, but here I return for another Rust vs C++ post. I did say I doubted I would be able to get fully away from polemics, however, and I genuinely think this post will help contextualize the general Rust vs. C++ debate and contribute to the conversation. Besides, most of the outlining and thinking for this post – which is the majority of the work...
-
Welcome to The Coded Message! on The Coded Message Strattera in 100 Words
Strattera in 100 Words
Jimmy Hartzell thecodedmessage.comIt is half past noon. I have done no work, not even from bed, where I somehow still am. My laptop is on, to-do list open. I’ve checked messages, even replied to one or two, but when I go to do something, I find myself several minutes later not having done it. I’d used the bathroom instead. Or something else? What was it? What was I going to do first, again?
-
Welcome to The Coded Message! on The Coded Message Guest Collaboration: Paradigm Shift
Guest Collaboration: Paradigm Shift
Jimmy Hartzell thecodedmessage.comDoes the choice of programming language matter? For years, many programmers would answer “no”. There was an “OOP consensus” across languages as different as C++ and Python. Choice of programming language was just a matter of which syntax to use to express the same OOP patterns, or what libraries were needed for the application. Language features like type checking or closures were seen as incidental, mere...
-
Welcome to The Coded Message! on The Coded Message Rust Tidbits #1
Rust Tidbits #1
Jimmy Hartzell thecodedmessage.comThis is a collection of little Rust thoughts that weren’t complicated enough for a full post. I saved them up until I had a few, and now I’m posting the collection. I plan on continuing to do this again for such little thoughts, thus the #1 in the title. serde flattening What if you want to read a JSON file, process some of the fields, and write it back out, without changing the other fields?
-
Welcome to The Coded Message! on The Coded Message Treat Tolkien's World Like Other Mythologies
Treat Tolkien's World Like Other Mythologies
Jimmy Hartzell thecodedmessage.comTolkien was trying to make a new mythology, a new set of deeply resonant stories, for modern (especially English) culture, and he succeeded. He transformed fantasy, and founded the concept of high fantasy. His detailed legendarium (as his mythology is called) is a masterpiece of world-building, with deep symbolism and emotional complexity, a mythology with arguably more depth and room to explore than many ancient...
-
Welcome to The Coded Message! on The Coded Message The Importance of Logging
The Importance of Logging
Jimmy Hartzell thecodedmessage.comIntro programming classes will nag you to do all sorts of programming chores: make sure your code actually compiles, write unit tests, write comments, split the code into functions (though sometimes the commenting and factoring advice is bad). Today, however, I want to talk about one little chore, one particular little habit, that is just as essential as all of those things, but rarely covered in the CS100 lectures...
-
Welcome to The Coded Message! on The Coded Message Write Everything Down (Part 4): My Desktop Environment
Write Everything Down (Part 4): My Desktop Environment
Jimmy Hartzell thecodedmessage.comI’d like to share with you how I use my computer, in a way that is (for me) ADHD friendly and well-suited for implementing my organization system. Tools are important to any organizational and productivity system, and optimizing your tools for your brain and your workflow are important. My computer is my most important productivity tool, where my work happens, and where my life/chore/errand/calendar organization...
-
Welcome to The Coded Message! on The Coded Message Rust Is Beyond Object-Oriented, Part 2: Polymorphism
Rust Is Beyond Object-Oriented, Part 2: Polymorphism
Jimmy Hartzell thecodedmessage.comIn this post, I continue my series on how Rust differs from the traditional object-oriented programming paradigm by discussing the second of the three traditional pillars of OOP: polymorphism. Polymorphism is an especially big topic in object-oriented programming, perhaps the most important of its three pillars. Several books could be (and have been) written on what polymorphism is, how various programming languages...
-
Welcome to The Coded Message! on The Coded Message The Debt Ceiling Is Unconstitutional, and Biden Should Just Say So
The Debt Ceiling Is Unconstitutional, and Biden Should Just Say So
Jimmy Hartzell thecodedmessage.comThe validity of the public debt of the United States, authorized by law, including debts incurred for payment of pensions and bounties for services in suppressing insurrection or rebellion, shall not be questioned. US Constitution, 14th Amendment, Section 4 The debt ceiling is unconstitutional. We’ve let the Republicans play their games for long enough, in the interest of “stability of the economy” and a general...
-
Welcome to The Coded Message! on The Coded Message My Reaction to Dr. Stroustrup's Recent Memory Safety Comments
My Reaction to Dr. Stroustrup's Recent Memory Safety Comments
Jimmy Hartzell thecodedmessage.comThe NSA recently published a Cybersecurity Information Sheet about the importance of memory safety, where they recommended moving from memory-unsafe programming languages (like C and C++) to memory-safe ones (like Rust). Dr. Bjarne Stroustrup, the original creator of C++, has made some waves with his response. To be honest, I was disappointed. As a current die-hard Rustacean and former die-hard C++ programmer, I...
-
Welcome to The Coded Message! on The Coded Message Complexities of Defining ADHD
Complexities of Defining ADHD
Jimmy Hartzell thecodedmessage.comADHD is a controversial topic, and it’s never been more relevant. Diagnoses are soaring right now, driven up by a variety of interacting forces. Open discussion about ADHD – and the related general concept of “neurodiversity” – has been exploding on the Internet. And recently, there’s been a very unfortunate Adderall shortage. So I wanted to take an opportunity to share some thoughts about it. I would say that I was...
-
Welcome to The Coded Message! on The Coded Message Rust and Default Parameters
Rust and Default Parameters
Jimmy Hartzell thecodedmessage.comRust doesn’t support default parameters in function signatures. And unlike in many languages, there’s no way to simulate them with function overloading. This is frustrating for many new Rustaceans coming from other programming languages, so I want to explain why this is actually a good thing, and how to use the Default trait and struct update syntax to achieve similar results. Default parameters (and function...
-
Welcome to The Coded Message! on The Coded Message Christmas Disappointment: Smashing Princes and Cities
Christmas Disappointment: Smashing Princes and Cities
Jimmy Hartzell thecodedmessage.comToday, in liturgical Western Christianity, it is the 10th day of Christmas. Merry Christmas to those who celebrate the extended edition of the holiday! Unfortunately, this essay is not a celebration of Christmas, but rather an explanation of why I have often found it disappointing recently in life, because of a disconnect between the promise and the reality. Every time Christmas comes around, I think of a classical...
-
Welcome to The Coded Message! on The Coded Message A Life (and Blog) Theme for the Coming Year
A Life (and Blog) Theme for the Coming Year
Jimmy Hartzell thecodedmessage.comHappy December! Happy Winter Holidays! We’re almost done with 2022! I just had my birthday yesterday, on December 20. I am now 34 years old, which is more than a third of a century! I generally take the opportunity on my birthday to do some reflection on the previous year, and to set a theme for the next year. I wanted to share both with you, my audience. The past year has been intense for me personally.
-
Welcome to The Coded Message! on The Coded Message Rust Is Beyond Object-Oriented, Part 1: Intro and Encapsulation
Rust Is Beyond Object-Oriented, Part 1: Intro and Encapsulation
Jimmy Hartzell thecodedmessage.comRust is not an object oriented programming language. Rust may look like an object-oriented programming language: Types can be associated with “methods,” either “intrinsic” or through “traits.” Methods can often be invoked with C++ or Java-style OOP syntax: map.insert(key, value) or foo.clone(). Just like in an OOP language, this syntax involves a “receiver” argument placed before a . in the caller, called self in...
-
Welcome to The Coded Message! on The Coded Message How to Write a JIRA Ticket in ... Relatively Few Steps
How to Write a JIRA Ticket in ... Relatively Few Steps
Jimmy Hartzell thecodedmessage.comIf you’re confused by how to use JIRA effectively, do not worry! If you learn this process, which is very simple not literally impossible, you too can become good at JIRA passingly competent at JIRA not liable to being fired for being bad at JIRA. Here are the steps: Create personal TODO item to write JIRA ticket Accumulate requirements for JIRA ticket in personal notes Often more complicated than the feature itself...
-
Welcome to The Coded Message! on The Coded Message First Impressions of Asahi Linux
First Impressions of Asahi Linux
Jimmy Hartzell thecodedmessage.comI bought my M1 Mac over a year ago with the intention of installing Asahi Linux on it, but I never got around to it until now. I am still thrilled to be using an ARM workstation made by a major computer manufacturer, and it’s good to be able to run the operating system of my choice on it (though macOS is acceptable for entertainment and video calls, Linux is what I work and do my organization in).
-
Welcome to The Coded Message! on The Coded Message RAII: Compile-Time Memory Management in C++ and Rust
RAII: Compile-Time Memory Management in C++ and Rust
Jimmy Hartzell thecodedmessage.comI don’t want you to think of me as a hater of C++. In spite of the fact that I’ve been writing a Rust vs C++ blog series in Rust’s favor (in which this post is the latest installment), I am very aware that Rust as it exists would never have been possible without C++. Like all new technology and science, Rust stands on the shoulders of giants, and many of those giants contributed to C++.
-
Welcome to The Coded Message! on The Coded Message Write Everything Down (Part 3): My Personal Organizational System
Write Everything Down (Part 3): My Personal Organizational System
Jimmy Hartzell thecodedmessage.comAs promised in my previous posts about organization, I will now go into some detail about my own organizational system. But before I start talking about it, and how I came to develop it, I’d like to emphasize a few points, or more specifically, three caveats, lest Zeus strike me down with a thunderbolt for my hubris: Caveat the First: My system is a work in progress. Even though it is overall very helpful, it’s...
-
Welcome to The Coded Message! on The Coded Message Write Everything Down (Part 2): Failed Organizational Systems
Write Everything Down (Part 2): Failed Organizational Systems
Jimmy Hartzell thecodedmessage.comIn my previous post on organization, I concluded with this statement: As everyone’s brain works differently (whether ADHD or not), people differ tremendously in what their ideal organizational systems are. For me, I am much less productive if I have a less than ideal system – the stakes are very high. But even for people who can be productive on any system, I think that tailoring their system to their brain, their...
-
Welcome to The Coded Message! on The Coded Message A Strong Typing Example
A Strong Typing Example
Jimmy Hartzell thecodedmessage.comI’m a Rust programmer and in general a fan of strong typing over dynamic or duck typing. But a lot of advocacy for strong typing doesn’t actually give examples of the bugs it can prevent, or it gives overly simplistic examples that don’t really ring true to actual experience. Today, I have a longer-form example of where static typing can help prevent bugs before they happen. The Problem Imagine you have a process...
-
Welcome to The Coded Message! on The Coded Message Exploring Traits with Erased 'serde'
Exploring Traits with Erased 'serde'
Jimmy Hartzell thecodedmessage.comI came across a programming problem recently where I wanted to use dynamic polymorphism with serde. This turned out to be much easier than I expected, and I thought it was an interesting enough case study to share, especially for people who are learning Rust. A Brief Discussion of Polymorphism in Rust As most of you will know, Rust’s system for polymorphism – traits – supports both static and dynamic polymorphism,...
-
Welcome to The Coded Message! on The Coded Message Write Everything Down (Part 1)
Write Everything Down (Part 1)
Jimmy Hartzell thecodedmessage.comMemory Leak I have an excellent memory. I have a terrible memory. Well, which one is it? This is a confusing state to be in. It can be frustrating to people around me. How is it – my father used to ask me when I was in high school – that I could remember all the lessons and readings for my tests in school, and get all the good grades, but couldn’t ever remember to do the simplest task or household chore, or to bring...
-
Welcome to The Coded Message! on The Coded Message Blocking Sockets and Async
Blocking Sockets and Async
Jimmy Hartzell thecodedmessage.comUsing async in Rust can lead to bad surprises. I recently came across a particularly gnarly one, and I thought it was interesting enough to share a little discussion. I think that we are too used to the burden of separating async from blocking being on the programmer, and Rust can and should do better, and so can operating system APIs, especially in subtle situations like the one I describe here.
-
Welcome to The Coded Message! on The Coded Message Why Rust should only have provided `expect` for turning errors into panics, and not also provided `unwrap`
Why Rust should only have provided `expect` for turning errors into panics, and not also provided `unwrap`
Jimmy Hartzell thecodedmessage.comUPDATE 2: I have made the title longer because people seem to be insisting on misunderstanding me, giving examples where the only reasonable thing to do is to escalate an Err into a panic. Indeed, such situations exist. I am not advocating for panic-free code. I am advocating that expect should be used for those functions, and if a function is particularly prone to being called like that (e.g. Mutex::lock or regex...
-
Welcome to The Coded Message! on The Coded Message Fiction Review: Plain Truth
Fiction Review: Plain Truth
Jimmy Hartzell thecodedmessage.comI enjoyed Plain Truth by Jodi Picoult. I finished it a couple of months ago, when I was feeling very restless and impatient about everything going on in my life. At the time, I desperately needed fun books to read, but I was simultaneously having a lot of trouble finishing books. This book pulled me the whole way through when other books were failing to: It was in a setting, the Amish communities, that had always...
-
Welcome to The Coded Message! on The Coded Message Another Confusing Haskell Error Message
Another Confusing Haskell Error Message
Jimmy Hartzell thecodedmessage.comThe Error Message I’ve written before about just how befuddling Haskell error messages can be, especially for beginners. And now, even though I have some professional Haskell development under my belt, I ran across a Haskell error message that confused me for a bit, where I had to get help. It’s clear to me now when I look at the error message what it’s trying to say, but I legitimately was stumped by it, and so,...
-
Welcome to The Coded Message! on The Coded Message Command Line Interface UXes Need Love, Too
Command Line Interface UXes Need Love, Too
Jimmy Hartzell thecodedmessage.comIt took me a long time to admit to myself that the venerable Unix command line interface is stuck in the past and in need of a refresh, but it was a formative moment in my development as a programmer when I finally did. Coming from that perspective, I am very glad that there is a new wave of enthusiasm (coming especially from the Rust community) to build new tools that are fixing some of the problems with this very...
-
Welcome to The Coded Message! on The Coded Message Command Line Interface UXes Need Love, Too
Command Line Interface UXes Need Love, Too
Jimmy Hartzell thecodedmessage.comIt took me a long time to admit to myself that the venerable Unix command line interface is stuck in the past and in need of a refresh, but it was a formative moment in my development as a programmer when I finally did. Coming from that perspective, I am very glad that there is a new wave of enthusiasm (coming especially from the Rust community) to build new tools that are fixing some of the problems with this very...
-
Welcome to The Coded Message! on The Coded Message Why I Won't Correct You're Grammar (unless you ask)
Why I Won't Correct You're Grammar (unless you ask)
Jimmy Hartzell thecodedmessage.comI am an Ivy League-educated professional who regularly has to write for my job, who was always in the top English classes in school. And sometimes, I mix up “your” and “you’re.” I know how grammar works. I always, if I stop to think about it, can figure out which one to use. I know all the tricks. Most of the time, I don’t have to think about it, and the right one comes out.
-
Welcome to The Coded Message! on The Coded Message Trivia About Rust Types: An (Authorized) Transcription of Jon Gjengset's Twitter Thread
Trivia About Rust Types: An (Authorized) Transcription of Jon Gjengset's Twitter Thread
Jimmy Hartzell thecodedmessage.comPreface (by Jimmy Hartzell) I am a huge fan of Jon Gjengset’s Rust for Rustaceans, an excellent book to bridge the gap between beginner Rust programming skills and becoming a fully-functional member of the Rust community. He’s famous for his YouTube channel as well; I’ve heard good things about it (watching video instruction isn’t really my thing personally). I have also greatly enjoyed his Twitter feed, and...
-
Welcome to The Coded Message! on The Coded Message Function Overloading in Rust
Function Overloading in Rust
Jimmy Hartzell thecodedmessage.comI just made a pull request to reqwest. I thought this particular one was interesting enough to be worth blogging about, so I am. We know that many C++ family languages have a feature known as function overloading, where two functions or methods can exist with the same name but different argument types. It looks something like this: void use_connector(ConnectorA conn) { // IMPL } void use_connector(ConnectorB conn) {...
-
Welcome to The Coded Message! on The Coded Message Reviews and Reactions: 2022 Short Story Hugo Nominees
Reviews and Reactions: 2022 Short Story Hugo Nominees
Jimmy Hartzell thecodedmessage.comWe decided to write up our thoughts on each of the short stories nominated for the 2022 Hugo awards. Of course, here be spoilers, spoilers galore. If you don’t want these stories spoiled, go read them, and then come back here. This is the same concept as Jimmy’s review of the 2021 nominees, and so we shall adapt the explanation from that post: As an exercise, we read each of these stories and told each other what we...
-
Welcome to The Coded Message! on The Coded Message Netflix Should Become a Tech Company
Netflix Should Become a Tech Company
Jimmy Hartzell thecodedmessage.comNetflix should become a tech company. I hear the obvious response already: Jimmy, Netflix is already a tech company! Counterpoint: Is it though? Somehow, after two dot-com booms, the markets still have an aesthetic-based definition of what constitutes a “tech company”: If a company – any company – has an expensive enough app, and if its founders talk enough about “disrupting” industries, then it is a “tech company”...
-
Welcome to The Coded Message! on The Coded Message Can you have too many programming language features?
Can you have too many programming language features?
Jimmy Hartzell thecodedmessage.comThere’s more than one way to do it. Perl motto There should be one– and preferably only one –obvious way to do it. The Zen of Python (inconsistent formatting is part of the quote) When it comes to statically-typed systems programming languages, C++ is the Perl, and Rust is the Python. In this post, the next installment of my Rust vs C++ series, I will attempt to explain why C++’s feature-set is problematic,...
-
Welcome to The Coded Message! on The Coded Message Can you have too many programming language features?
Can you have too many programming language features?
Jimmy Hartzell thecodedmessage.comThere’s more than one way to do it. Perl motto There should be one– and preferably only one –obvious way to do it. The Zen of Python (inconsistent formatting is part of the quote) When it comes to statically-typed systems programming languages, C++ is the Perl, and Rust is the Python. In this post, the next installment of my Rust vs C++ series, I will attempt to explain why C++’s feature-set is problematic, and...
-
Welcome to The Coded Message! on The Coded Message A Checklist of Dev-Ops Disciplines
A Checklist of Dev-Ops Disciplines
Jimmy Hartzell thecodedmessage.comI have worked on a lot of programming projects in my time, and while I was a programming consultant I have worked in a lot of different corporate environments. At some of them, it was easy to be concretely productive: I was able to contribute immediately, and at a rapid rate. At others, actual useful contributions would be impossible until I had a month or more of experience with a codebase, and even then every...
-
Welcome to The Coded Message! on The Coded Message God grant me patience... and I want it RIGHT NOW!
God grant me patience... and I want it RIGHT NOW!
Jimmy Hartzell thecodedmessage.comI’ve been feeling recently like I’ve been spinning my wheels in my personal life. I’m pressing on the metaphorical accelerator as hard as I can, probably too hard for safety, and instead of moving forward, the wheels are just spinning, spinning, spinning. I think a large part of it is my perspective of time. “Time is canceled,” my friends and I would say continuously during the lockdown. And it isn’t back, not yet,...
-
Welcome to The Coded Message! on The Coded Message More on Mortgages
More on Mortgages
Jimmy Hartzell thecodedmessage.comMortgage interest rates have recently risen, and are currently very volatile. At the time of this writing, PSECU, my credit union, is offering mortgages at 5.125%, much higher than the 3.125% I locked in at, but lower than the peak above 6% I had recently read about in the news. But what does this mean in practice? Well, let’s run some numbers. Understanding how expensive a house is can be confusing.
-
Welcome to The Coded Message! on The Coded Message Reviews and Reactions: 2021 Short Story Hugo Nominees
Reviews and Reactions: 2021 Short Story Hugo Nominees
Jimmy Hartzell thecodedmessage.comNB: These are for the 2021 Hugo awards, not the recently-announced 2022 Hugo awards. That one is coming soon. I decided to write up my thoughts on each of the short stories nominated for the 2021 Hugo awards. Of course, here be spoilers, spoilers galore. If you don’t want these stories spoiled, go read them, and then come back here. As an exercise, a friend and I read each of these stories and told each other what...
-
Welcome to The Coded Message! on The Coded Message Review: The Comic Book Story of Beer
Review: The Comic Book Story of Beer
Jimmy Hartzell thecodedmessage.comI like beer, and I like comic books, so I was excited to read The Comic Book Story of Beer. And it was overall quite a fun read! It contextualized how important beer was in antiquity – including theories that beer catalyzed the agricultural revolution – and how important it’s been in society ever since, taking a social approach to the entire history, while also explaining a lot of the science alongside the primarily...
-
Welcome to The Coded Message! on The Coded Message Can you reproduce it?
Can you reproduce it?
Jimmy Hartzell thecodedmessage.comNOTE: This post has the #programming tag, but is intended to be comprehensible by everyone, programmer or not. In fact, I hope some non-programmers read it, as my goal with this post is to explain some of what it means to be a programmer to non-programmers. Therefore, it is also tagged with “nontechnical”. What is the most important skill for a software engineer? It’s definitely not any particular programming...
-
Welcome to The Coded Message! on The Coded Message A Rust Gem: The Rust Map API
A Rust Gem: The Rust Map API
Jimmy Hartzell thecodedmessage.comFor my next entry in my series comparing Rust to C++, I will be discussing a specific data structure API: the Rust map API. Maps are often one of the more awkward parts of a collections library, and the Rust map API is top-notch, especially its entry API – I literally squealed when I first learned about entries. And as we shall discuss, this isn’t just because Rust made better choices than other standard libraries...
-
Welcome to The Coded Message! on The Coded Message Biking to Philly
Biking to Philly
Jimmy Hartzell thecodedmessage.comI am out of biking shape. I know I am out of biking shape. The pandemic has not been good to my physical fitness. (For the record, this isn’t a proper edited and outlined and triaged essay, just some notes on my past weekend.) But as out of shape as I am, I also know it’s only 25 miles from here to Philly on the Schuylkill River Trail, and so I figured maybe I could do it without any additional prep.
-
Welcome to The Coded Message! on The Coded Message Crank-'em Out
Crank-'em Out
Jimmy Hartzell thecodedmessage.comFor a time, I tried to cultivate an interest in Go. Not this Go, but this Go. The interest didn’t last long – like chess, I had a hard time getting up to even a fairly basic level of competence. And I quickly developed another enthusiastic interest to replace it – sometimes, an interest just doesn’t work out, and it’s nobody’s fault, and you have to just move on and not get too sad, because there’s plenty of fish in...
-
Welcome to The Coded Message! on The Coded Message The Good Ol' Days of QBasic Nibbles
The Good Ol' Days of QBasic Nibbles
Jimmy Hartzell thecodedmessage.comLet’s talk about an ancient programming language! I think we can all learn things from history, and it gives us grounding to realize that our time is just one time among many, to see what people in the past did differently, what they got wrong that we would never do now, and also to see what they got right. Do you remember MS-DOS? Do you remember that it came with an interpreted programming language?
-
Welcome to The Coded Message! on The Coded Message Warnings and Linter Errors: The Awkward Middle Children
Warnings and Linter Errors: The Awkward Middle Children
Jimmy Hartzell thecodedmessage.comWhat is “bad” Rust? When we say that a snippet of code is “bad” Rust, it’s ambiguous. We might on the one hand mean that it is “invalid” Rust, like the following function (standing on its own in a module): fn foo(bar: u32) -> u32 { bar + baz // but baz is never declared... } In this situation, a rule of the programming language has been violated. The compiler stops compiling and does not output a binary.
-
Welcome to The Coded Message! on The Coded Message Haskell Error Messages: Come on!
Haskell Error Messages: Come on!
Jimmy Hartzell thecodedmessage.comI am a big fan of strongly typed languages, and my favorite GC’d language is Haskell. And I want you, the reader, to keep that in mind today. What I am writing is some commentary about a language I deeply love, some loving criticism. So here’s what happened: A few days ago, I was showing off some Haskell for a friend who primarily programs in Python. The stakes were high – could I demonstrate that this strange...
-
Welcome to The Coded Message! on The Coded Message Mortgages are Interesting
Mortgages are Interesting
Jimmy Hartzell thecodedmessage.comI just bought a house, and it came with a mortgage. I bought the house and committed to the mortgage all in one ceremony, in a cute little office where I signed enough papers that the sellers were able to solemnly hand me the keys to my new castle. In the lead-up to this, I was told how early payments, mortgage insurance, and refinancing works, and it’s – I think very reasonably – been on my mind since.
-
Welcome to The Coded Message! on The Coded Message Burying the Lede
Burying the Lede
Jimmy Hartzell thecodedmessage.comImagine you don’t know who Napoleon was. You know he’s a figure from history, but you don’t even know he has to do with France. And imagine, when you read the Wikipedia article, for some reason you skip the opening paragraphs above the fold, and you’re reading about his upbringing in Corsica as a petty Italian noble under French rule. And you just want to know, why’s this guy important, what’s his deal, why do...
-
Welcome to The Coded Message! on The Coded Message Being Fair about Memory Safety and Performance
Being Fair about Memory Safety and Performance
Jimmy Hartzell thecodedmessage.comFor this next iteration in my series comparing Rust to C++, I want to talk about something I’ve been avoiding so far: memory safety. I’ve been avoiding this topic so far because I think it is the most discussed difference between C++ and Rust, and therefore I felt I’d have relatively little to add to the conversation. I’ve also been avoiding it because I wanted to draw attention to all the other little ways in which...
-
Welcome to The Coded Message! on The Coded Message In Defense of Async: Function Colors Are Rusty
In Defense of Async: Function Colors Are Rusty
Jimmy Hartzell thecodedmessage.comFinally in 2019, Rust stabilized the async feature, which supports asynchronous operations in a way that doesn’t require multiple operating system threads. This feature was so anticipated and hyped and in demand that there was a website whose sole purpose was to announce its stabilization. async was controversial from its inception; it’s still controversial today; and in this post I am throwing my own 2 cents into...
-
Welcome to The Coded Message! on The Coded Message Endianness, API Design, and Polymorphism in Rust
Endianness, API Design, and Polymorphism in Rust
Jimmy Hartzell thecodedmessage.comI have been working on a serialization project recently that involves endianness (also known as byte order), and it caused me to explore parts of the Rust standard library that deals with endianness, and share my thoughts about how endianness should be represented in a programming language and its standard library, as I think this is also something that Rust does better than C++, and also makes for a good case study...
-
Welcome to The Coded Message! on The Coded Message C++ Move Semantics Considered Harmful (Rust is better)
C++ Move Semantics Considered Harmful (Rust is better)
Jimmy Hartzell thecodedmessage.comThis post is part of my series comparing C++ to Rust, which I introduced with a discussion of C++ and Rust syntax. In this post, I discuss move semantics. This post is framed around the way moves are implemented in C++, and the fundamental problem with that implementation, With that context, I shall then explain how Rust implements the same feature. I know that move semantics in Rust are often confusing to new...
-
Welcome to The Coded Message! on The Coded Message Sayonara, C++, and hello to Rust!
Sayonara, C++, and hello to Rust!
Jimmy Hartzell thecodedmessage.comThis past May, I started a new job working in Rust. I was somewhat skeptical of Rust for a while, but it turns out, it really is all it’s cracked up to be. As a long-time C++ programmer, and C++ instructor, I am convinced that Rust is better than C++ in all of C++’s application space, that for any new programming project where C++ would make sense as the programming language, Rust would make more sense.
-
Welcome to The Coded Message! on The Coded Message A Modern Version
A Modern Version
Jimmy Hartzell thecodedmessage.comHumpty Dumpty sat on a wall Humpty Dumpty had a great fall All the king’s horses and all the king’s men Were too busy deciding who would be king… To even TRY to put Humpty Dumpty together again. And he’s just sitting there, all yolk and shell, waiting…
-
Welcome to The Coded Message! on The Coded Message Apple Silicon
Apple Silicon
Jimmy Hartzell thecodedmessage.comThis year, Apple released, to much fanfare, a somewhat obscure technical change to how its computers work: Macs will transition away from Intel’s CPUs to in-house processors known as “Apple Silicon,” more similar to the technology Apple already uses in its phones and tablets. It is a tremendous amount of hype for something rather technical, and to people used to more user-visible feature announcements, this can be...
-
Welcome to The Coded Message! on The Coded Message A Prudent Quarantine
A Prudent Quarantine
Jimmy Hartzell thecodedmessage.comFive Members sat in council. There are some activities, some patterns of human group behavior, that transcend era and culture, and meeting in council is one of them. In spite of the youth of the participants – they were in their late teens and early 20’s – and the informality of the setting – leather couches covered in scratch marks, unfinished walls – they still clearly were sitting in council. The seriousness with...
-
Welcome to The Coded Message! on The Coded Message A Respectable Octopedian
A Respectable Octopedian
Jimmy Hartzell thecodedmessage.comIn front of Penny in line was a 7 foot tall humanoid with glowing blue skin. She suppressed the urge to ask what species they were, and let the alien order their vegan breakfast burrito. The barista at United Planets’ first-floor Starbucks looked human except for the extra hands. Polycherian, Penny remembered. When the barista handed Penny her order – an egg and cheese sandwich on a bagel – Penny bowed respectfully...
-
Welcome to The Coded Message! on The Coded Message All Rent Should Be Cancelled
All Rent Should Be Cancelled
Jimmy Hartzell thecodedmessage.comEven early last week, before restaurants were closed, before we were banned from unnecessary gatherings, when many people still had to go into their office jobs, the bars were empty on my street. I walked into one, ordered a cocktail, asked the bartender why it was so slow. It was usually slow on Tuesdays, of course, but normally there was at least one other customer. But the pandemic had already scared everyone...
-
Welcome to The Coded Message! on The Coded Message Open Internet, Closed Web
Open Internet, Closed Web
Jimmy Hartzell thecodedmessage.comThe Internet promised — and still promises — a revolution in democratic, decentralized, and open communications. And yet, we see today a tech world controlled by a few central players, as Elizabeth Warren promises to break them up and Congress summons Mark Zuckerberg to explain his company’s role in privacy-violating election-manipulating foreign conspiracies. But Presidential use of anti-trust laws and new...
-
Welcome to The Coded Message! on The Coded Message Just Jump
Just Jump
Jimmy Hartzell thecodedmessage.comKayleigh needed a break from work. When you need a break from work, sometimes you go to the bathroom. Sometimes you stop by the coffee machine, chat with a colleague while it brews. And sometimes, you straight-up leave the office and walk to a nearby bar. Today, Kayleigh found herself taking that last option. She didn’t normally do this — she felt that, as the boss, she had to hold herself to a higher standard than...
-
Welcome to The Coded Message! on The Coded Message The Haskeller's Hungarian Notation
The Haskeller's Hungarian Notation
Jimmy Hartzell thecodedmessage.comWhen I was first learning to program, a long time ago, it was in BASIC, and you had to annotate your variable names to indicate what type something is. foo would be a number, whereas foo$ would be a string. This meant that there could only be as many types of information as there were symbols to put after your variable, but that was okay for the sort of programming BASIC was used for.
-
Welcome to The Coded Message! on The Coded Message The Letter from the Trees
The Letter from the Trees
Jimmy Hartzell thecodedmessage.comENVELOPE HEADER: Date: January 5, 2027 To: Rachel Friedman, President of the United States and Leader of the Free World From: The Roots of the Great Trees of Galaxy-Wide Civilization Subject: An Offer, an Apology, and an Explanation The Offer In the name of the One Almighty God: in the name of the Many Stars through which God is made manifest, in the name of the manifestation of God you call the Sun, and in the name...
-
Welcome to The Coded Message! on The Coded Message Components of a Modern Operating System
Components of a Modern Operating System
Jimmy Hartzell thecodedmessage.comIn previous posts, we discussed historic operating systems and where various OS features come from, but we only gave a brief overview of how they worked. Now that we have a modern operating system’s full complement of features, we can look at what components need to exist in a modern operating system to get those features. As discussed with MS-DOS, an operating system, even today, is partially code, and partially...
-
Welcome to The Coded Message! on The Coded Message Extra Version
Extra Version
Jimmy Hartzell thecodedmessage.comThere’s a lot of books and articles out there about how to interact with, or be, an introvert. Society really looks down on introverts, we hear, and even when it doesn’t, it certainly isn’t designed to be navigated by introverts. They’re a very misunderstood bunch, but they have a lot to contribute. Here’s how you can properly cherish them, etc. etc. Katelin couldn’t relate to any of this at all. Society not...
-
Welcome to The Coded Message! on The Coded Message Father, Forgive Them
Father, Forgive Them
Jimmy Hartzell thecodedmessage.comFather, forgive them, for they do not know what they are doing. Jesus, on the cross (Luke 23:34) My grandfather always used to love telling a certain anecdote about Calvin Coolidge. He was a man of such few words that one time, President Coolidge went to hear a world-famous preacher preach. Upon returning from the sermon, his wife asked what it was about. He replied “sin.” Not satisfied with the answer, the wife...