Tech on Gavin D. Howardhttps://gavinhoward.com/tag/tech/Recent content in Tech on Gavin D. HowardHugoen-us[email protected] (Gavin D. Howard)[email protected] (Gavin D. Howard)Copyright (c) 2018-2023 Gavin D. Howard. All rights reserved.Fri, 24 Jan 2025 22:02:11 -0700Advent of Code 2024: Reporthttps://gavinhoward.com/2025/01/advent-of-code-2024-report/Fri, 24 Jan 2025 22:02:11 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2025/01/advent-of-code-2024-report/Assumed Audience: Hackers and anyone interested in Advent of Code and programming languages. Epistemic Status: Kind of bummed. Almost two months ago, I said I would do Advent of Code 2024. This is my report. Results: absolutely nothing. Life got in the way. Also, Yao is missing a lot of features. Even the first puzzle would have required new features. I have now implemented a lot of those features, but since life got in the way, that’s all I could do before Christmas.Advent of Code 2024: Getting Startedhttps://gavinhoward.com/2024/11/advent-of-code-2024-getting-started/Sat, 30 Nov 2024 18:28:38 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/11/advent-of-code-2024-getting-started/Assumed Audience: Hackers and anyone interested in Advent of Code and programming languages. Epistemic Status: Not confident at all, but at least I’ll learn a lot. I love the Christmas season. First of all, I love Jesus Christ. I am hard-core Christian. I also love the music. I love the feeling, the way people act differently. I love the little things people do all of the month of December.To Broadcast or Not to Broadcast: A Nuanced Perspectivehttps://gavinhoward.com/2024/09/to-broadcast-or-not-to-broadcast-a-nuanced-perspective/Sun, 29 Sep 2024 23:24:34 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/09/to-broadcast-or-not-to-broadcast-a-nuanced-perspective/Assumed Audience: Hackers, programmers, anyone in the tech industry, and really anyone who is considering broadcasting their professional self. Epistemic Status: Confident. I have 11 years of experience. Introduction I didn’t know who Adolfo Ochagavía was until last month, but I admire him now. He wrote one of the most genuine blog posts I have ever read. It is called, “To Broadcast or Not to Broadcast,” and you really should just go read it.Rewriting Rust: A Responsehttps://gavinhoward.com/2024/09/rewriting-rust-a-response/Fri, 27 Sep 2024 01:45:49 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/09/rewriting-rust-a-response/Assumed Audience: Hackers, Rustaceans, and anyone interested in programming language design. Epistemic Status: Quite confident. The ideas are partially implemented and working. This post is partially an ad! Introduction josephg wrote a post about what he’d like to see in future Rust, or another programming language following Rust. Unbeknownst to josephg, that language is coming into existence right now! It is called Yao. I already wrote about what else Rust got wrong, but let’s go over the features josephg wants and see how Yao stacks up.Curing the Framework Cursehttps://gavinhoward.com/2024/08/curing-the-framework-curse/Fri, 30 Aug 2024 22:49:07 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/08/curing-the-framework-curse/Assumed Audience: Programmers interested in GUIs. Epistemic Status: Fairly confident, but these ideas are not implemented. So just over three months ago, I wrote about a new architecture for a GUI framework. Since then, I’ve had a smart man challenge me on several points, and the result, while still broadly the same, has a few more details I’d like to share. This friend doesn’t like frameworks, so he took immediate issue with my proposal since it was for a framework.A Better OS Design 2: Microkernel Performancehttps://gavinhoward.com/2024/08/a-better-os-design-2-microkernel-performance/Tue, 13 Aug 2024 15:17:02 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/08/a-better-os-design-2-microkernel-performance/Assumed Audience: Anyone interested in OS design. Epistemic Status: Confident, but without time. Introduction Nearly three months ago, I wrote some ideas for a better operating system. I complained about lack of time. Well, I was talking about lack of time for programming, not thinking; I have insomnia, so I got plenty of thinking time. So here’s another post. There are a lot of misconceptions about microkernels, but I have now provided a link to dispel them.Is Crowdstrike the Final Straw?https://gavinhoward.com/2024/07/is-crowdstrike-the-final-straw/Fri, 19 Jul 2024 14:15:18 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/07/is-crowdstrike-the-final-straw/Assumed Audience: Everyone affected by the Crowdstrike outage. Discuss on Hacker News and Reddit. Epistemic Status: Confident in what needs to be done, fearful that freedom will fade. So Crowdstrike happened. I have said before that the software industry must professionalize, and I even created a plan, along with a code of ethics and a standard of care. I have also warned that if we do not do this ourselves, society might do this for us.Why I Hope Rust Does Not Oxidize Everythinghttps://gavinhoward.com/2024/07/why-i-hope-rust-does-not-oxidize-everything/Tue, 16 Jul 2024 01:26:47 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/07/why-i-hope-rust-does-not-oxidize-everything/Assumed Audience: Hackers and anyone in the software industry who cares. Discuss on Hacker News and Reddit. Epistemic Status: Confident that Rust isn’t good everywhere, but not confident that people won’t try to use it where it does not fit. So let me say upfront that I think Rust is a great step forward for the industry in general. It’s great, and if you like it, great. If it fits the job at hand, great.A Plan for Professionalismhttps://gavinhoward.com/2024/06/a-plan-for-professionalism/Fri, 14 Jun 2024 15:17:11 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/06/a-plan-for-professionalism/Assumed Audience: Programmers, tech industrialists, and anyone else curious. Epistemic Status: Confident, but open to other ideas. Introduction I have said before that the software industry should professionalize. Where do we start? Well, if we professionalize, we will not be the first industry to do so, and we should learn from the paths that other industries have taken and what they have included required of professionals. As far as I can tell, there are five common elements among professionalized industries:My Programming Journeyhttps://gavinhoward.com/2024/06/my-programming-journey/Wed, 05 Jun 2024 02:00:25 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/06/my-programming-journey/Assumed Audience: No one really. Or anyone curious. Epistemic Status: I hope my memory is accurate. I recently got an email from someone with three questions. The first was simple: “Tell me about your programming journey.” I figured that I had better put it in a blog post so I could give people a link in the future. Not that any more people will ever ask. Before I was born, my father somehow went from a farmboy to a college-educated programmer at a time when programming wasn’t even a “real job” (early 1980s).A New Architecture for a GUI Frameworkhttps://gavinhoward.com/2024/05/a-new-architecture-for-a-gui-framework/Wed, 29 May 2024 00:04:03 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/05/a-new-architecture-for-a-gui-framework/Assumed Audience: Programmers interested in GUIs. Discuss on Hacker News and Reddit. Epistemic Status: Fairly confident, but these ideas are not implemented. Introduction As I mentioned in my previous post, I am losing my motivation to continue programming as a hobby. I am also losing my free time; the economy is too poor to spend labor on things that cannot provide income. And that is discouraging by itself; I have so many ideas, most of them focused on reversing terrible trends in the industry.A Better OS Designhttps://gavinhoward.com/2024/05/a-better-os-design/Fri, 24 May 2024 00:38:12 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/05/a-better-os-design/Assumed Audience: Anyone interested in OS design. Epistemic Status: Confident, but without time. Introduction I feel myself being pulled away from the programming world. This is why I wrote my last two posts: even though I worded them as though I intend to work on Yao, my language, I’m actually not sure I will ever do so. And that’s even with the fact that Yao already exists in a primitive state and works!Traits, Destructors, "Higher RAII," and Exceptionshttps://gavinhoward.com/2024/05/traits-destructors-higher-raii-and-exceptions/Thu, 23 May 2024 23:32:10 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/05/traits-destructors-higher-raii-and-exceptions/Assumed Audience: Programmers interested in Yao or programming language design. Or Rustaceans and anyone interested in Vale. Epistemic Status: Fairly confident, but not as confident as I’d like because I do not have much time to implement these ideas. Introduction Last time, I laid out how Rust could have had more static analysis. This time, I will talk about how Rust could have had more power. At the same time, I have been following the exploits of Evan Ovadia and his Vale programming language.What Rust Got Wrong on Formal Verificationhttps://gavinhoward.com/2024/05/what-rust-got-wrong-on-formal-verification/Wed, 22 May 2024 15:47:09 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/05/what-rust-got-wrong-on-formal-verification/Assumed Audience: Programmers, especially Rustaceans and those interested in static analysis. Epistemic Status: Fairly confident, but not as confident as I’d like because I do not have much time to implement these ideas. This post is partially an ad! Introduction On the ninth anniversary of Rust 1.0, its creator, Graydon Hoare, appeared and wrote a blog post expanding on another by without.boats. You see, these brilliant people are struggling with a problem: how do you maximize the static analysis capabilities and usability of a language?A Grateful Open Letter to JeanHeyd Meneidehttps://gavinhoward.com/2024/05/a-grateful-open-letter-to-jeanheyd-meneide/Wed, 22 May 2024 09:23:52 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/05/a-grateful-open-letter-to-jeanheyd-meneide/Assumed Audience: C and C++ programmers. Epistemic Status: Grateful and confident. Dear Mr. Meneide: My name is Gavin Howard. I am a C programmer, and I want to thank you for your post “Why Not Just Do Simple C++ RAII in C?” I’m so grateful that you explained to people the biggest differences between C and C++. I’m so grateful that you explained why RAII is undesirable in portable C.You Do Not Need Systemd to Replace Sudohttps://gavinhoward.com/2024/05/you-do-not-need-systemd-to-replace-sudo/Tue, 07 May 2024 00:03:48 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/05/you-do-not-need-systemd-to-replace-sudo/Assumed Audience: Hackers. Epistemic Status: Confident, but cautious. If you missed the news, systemd now has a sudo replacement called run0. And it blew up the Internet. Now, replacing sudo has been on my radar. For one, I already switched to the simpler doas a year ago. Second, I came across this comment on LWN, which begins like this: Another reason to be biased against SUID is that it’s a quick solution to the problem of users not having root access to the entire machine.What Computers Cannot Do: The Consequences of Turing-Completenesshttps://gavinhoward.com/2024/03/what-computers-cannot-do-the-consequences-of-turing-completeness/Tue, 26 Mar 2024 06:33:29 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/03/what-computers-cannot-do-the-consequences-of-turing-completeness/Assumed Audience: Programmers. All programmers. Discuss on Hacker News and Reddit. Epistemic Status: Confident with few doubts. Minor mistakes may exist, though. Corrections welcome. If you want to skip to the actual material, use this link. This post is meant to be informative, but it does have an ad at the end, which will be clearly marked. You have been warned! Introduction I used to think that my Bachelor’s Degree in Computer Science was useless, that I didn’t learn much that would help me in programming.Build System Schism: The Curse of Meta Build Systemshttps://gavinhoward.com/2024/03/build-system-schism-the-curse-of-meta-build-systems/Tue, 19 Mar 2024 05:24:26 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/03/build-system-schism-the-curse-of-meta-build-systems/Assumed Audience: Programmers and anyone who has used a build system. Discuss on Hacker News and Reddit. Epistemic Status: Confident. This post is meant to be informative, but it does have an ad at the end, which will be clearly marked. You have been warned! Introduction First there was nothing… …then there was make. As the legend goes, Stuart Feldman was working at Bell Labs, and he had a problem.How Yzena Versions Software and Interfaceshttps://gavinhoward.com/2024/02/how-yzena-versions-software-and-interfaces/Thu, 15 Feb 2024 23:24:22 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/02/how-yzena-versions-software-and-interfaces/Assumed Audience: Hackers and anyone interested in Yzena’s software. Epistemic Status: Confident because it’s my choice anyway. Introduction Yzena is my business. It’s a software business, obviously. In July 2022, I wrote about how Yzena will version software. I have made a few tweaks since then, so I am writing an update. I do repeat information in this post so that it stands alone and remains a reference document for Yzena versioning.Version Interfaces, Not Implementationshttps://gavinhoward.com/2024/02/version-interfaces-not-implementations/Thu, 15 Feb 2024 22:59:19 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/02/version-interfaces-not-implementations/Assumed Audience: Hackers, programmers, and code architects. Epistemic Status: Confident. Introduction There is a man I admire. His name is Dr. David Chisnall. Well, there was an article complaining about Semantic Versioning, and Dr. Chisnall decided to weigh in. He started like this: I should write a blog about this somewhere so I can cite it and stop repeating it… I have been waiting two months for that blog post.No, Tech Debt Is Not Malpracticehttps://gavinhoward.com/2024/01/no-tech-debt-is-not-malpractice/Thu, 18 Jan 2024 22:17:40 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2024/01/no-tech-debt-is-not-malpractice/Assumed Audience: Hackers and listeners of the Changelog podcast. Epistemic Status: Confident. So, apparently, the Changelog podcast thought that one of my blog posts was important enough to comment on. Cool! But they had a critique. They linked to another show of theirs with Kris Brandow who said: we should get rid of [the tech debt analogy], because I don’t think the thing that we’re talking about when we’re talking about tech debt is debt.Is "Source Available" Really That Bad?https://gavinhoward.com/2023/12/is-source-available-really-that-bad/Wed, 27 Dec 2023 23:38:54 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/12/is-source-available-really-that-bad/Assumed Audience: Hackers and tech-oriented lawyers. Discuss on Hacker News and Reddit. Epistemic Status: Mostly confident. Introduction Because of a couple posts, I was reminded of two semi-recent brouhahas. When I originally came across them, I saw the FOSS purist side with righteous indignation. But I had also just started building a business, so for the first time, I understood the business side. So despite my desire to post comments, I did not; I was uncomfortable with myself and my opinions.Code Is Not Technical Debthttps://gavinhoward.com/2023/12/code-is-not-technical-debt/Wed, 20 Dec 2023 23:38:08 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/12/code-is-not-technical-debt/Assumed Audience: Hackers and suits in the tech industry. Discuss on Hacker News. Epistemic Status: Confident. The Introduction So I saw a post today, and it’s so wrong I was about to post a ranty missive on Hacker News. But my ranty missives get long, so here’s a blog post instead. tl;dr: Code is an asset, and tech debt is when the software and its internal model do not match the problem and the mental model, or when the internal interfaces do not minimize assumptions.Am I a Good C Programmer?https://gavinhoward.com/2023/12/am-i-a-good-c-programmer/Wed, 13 Dec 2023 21:51:16 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/12/am-i-a-good-c-programmer/Assumed Audience: Hackers who like humble brags. 😛 Discuss on Hacker News. Epistemic Status: You decide. On Feb 5, 2023, I posted on Hacker News the article that became my most popular one on that site. It is called, “Why I Use C When I Believe in Memory Safety.” I will let you judge whether or not I justified the decision to use C. But one of my programmer idols, Daniel Stenberg, recently wrote about his experience writing C and how well he did.A Decade of Developing a Programming Language: A Response Responsehttps://gavinhoward.com/2023/12/a-decade-of-developing-a-programming-language-a-response-response/Fri, 01 Dec 2023 11:42:43 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/12/a-decade-of-developing-a-programming-language-a-response-response/Assumed Audience: Programmers. Discuss on Hacker News and Reddit. Epistemic Status: Confident-ish. Introduction So I saw “A Decade of Developing a Programming Language” and read it. Yeah, I changed the title capitalization. Deal with it. Then I saw “A Response to ‘A Decade of Developing a Programming Language’” and realized that such posts are hype right now. So I’ll hop on that train. History In late 2012, I was getting fed up with C++ in college, so I decided to develop my own language.How to Fund FOSS, Save It from the CRA, and Improve Cybersecurityhttps://gavinhoward.com/2023/11/how-to-fund-foss-save-it-from-the-cra-and-improve-cybersecurity/Tue, 28 Nov 2023 23:58:28 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/11/how-to-fund-foss-save-it-from-the-cra-and-improve-cybersecurity/Assumed Audience: Hackers, programmers, and anyone in the tech industry. But especially EU-level politicians who might vote on the CRA. Epistemic Status: Only somewhat confident, but absolutely confident that the ideas herein have some chance of improving the status quo. Discuss on Hacker News and Reddit. Please send this post to EU politicians. Introduction Programmers are terrified. And rightfully so. There is a monster, a colossus that may sweep into the shining City of Open Source and trample it all with less care than Godzilla.Your Loved Ones Are Prisoners, and You Made the Chainhttps://gavinhoward.com/2023/11/your-loved-ones-are-prisoners-and-you-made-the-chain/Sun, 05 Nov 2023 06:18:18 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/11/your-loved-ones-are-prisoners-and-you-made-the-chain/Assumed Audience: Programmers and anyone who works at least in a tech-adjacent job, including managers, project owners, HR, support personnel, and executives. Discuss on Hacker News. Epistemic Status: Confident, terrified, and enraged. Introduction Are you a programmer? Or a manager over programmers? Or an executive with programmers somewhere below you? If so, do you like free society? Then stop what you’re doing and feel ashamed. Because you are building the chains that will enslave your loved ones.An Open Letter to Cryptographers: Please Work Togetherhttps://gavinhoward.com/2023/10/an-open-letter-to-cryptographers-please-work-together/Thu, 26 Oct 2023 09:09:05 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/10/an-open-letter-to-cryptographers-please-work-together/Assumed Audience: Anyone with an interest in cryptography. Oh, and cryptographers themselves. Discuss on Hacker News. Epistemic Status: Ticked off, trying to calm down. Dear Cryptographers, You don’t know me, unless you’ve had the pleasure or misfortune of coming across me on the Internet. I’m not a cryptographer, so you shouldn’t listen to me. However, I am studying to become a Level 3 cryptographer. I’m nowhere near close yet, but, I now have enough knowledge to be dangerous.He Who Gives Up Correctness for Performance Deserves Neitherhttps://gavinhoward.com/2023/10/he-who-gives-up-correctness-for-performance-deserves-neither/Sun, 22 Oct 2023 00:57:15 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/10/he-who-gives-up-correctness-for-performance-deserves-neither/Assumed Audience: Hackers, programmers, anyone in a software-related job. Discuss on Hacker News. Epistemic Status: Extremely confident, even a little smug. Hey, I’m only human. I am angry. My anger took over, and I am writing a blog post, even though I tried to mellow out. So yeah, expect some verbal fire and brimstone; Sodom and Gomorrha are lonely. The Introduction Earlier today, I was on Hacker News. Strike one.Lessons Learned as a User 3: Prepare for the Futurehttps://gavinhoward.com/2023/09/lessons-learned-as-a-user-3-prepare-for-the-future/Mon, 25 Sep 2023 23:30:42 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/09/lessons-learned-as-a-user-3-prepare-for-the-future/Assumed Audience: Hackers and programmers. Discuss on Hacker News. Epistemic Status: Confident about the principle, confident that Wayland is the future, not confident in how long that will actually take. I prefer minimal distraction in my OS. So I run Gentoo with it set up exactly the way I want. And then get distracted watching compiles. It’s…mesmerizing…😵‍💫 One of my most notable departures from everyday Linux is that I run a tiling window manager.The Scourge of 00UBhttps://gavinhoward.com/2023/08/the-scourge-of-00ub/Fri, 18 Aug 2023 21:56:25 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/08/the-scourge-of-00ub/Assumed Audience: Programmers and hackers. Discuss on Hacker News. Epistemic Status: Confident. Introduction So I was part of the founding group of Stack Exchange’s Programming Language Design and Implementation site. I joined because I’m designing a language myself. At first, things were great. And then came one person. Now, I respected this person. I like several blog posts on this person’s blog, which are mostly on programming languages, their design, and how to make best use of them.I Have Blocked OpenAIhttps://gavinhoward.com/2023/08/i-have-blocked-openai/Fri, 18 Aug 2023 15:20:36 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/08/i-have-blocked-openai/Assumed Audience: Anyone with any opinion about “AI,” especially LLM’s. Discuss on Hacker News. Epistemic Status: Satisfied. So OpenAI recently revealed info about its spider. That information included its bot name (GPTBot) and its user agent string. But even more importantly, they revealed the IP address blocks that they would use. So I blocked them all. I also blocked their spider with robots.txt and my server; they’ve already added IP blocks, and this is a good backup.How Yzena Versions Softwarehttps://gavinhoward.com/2023/07/how-yzena-versions-software/Mon, 10 Jul 2023 21:53:12 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/07/how-yzena-versions-software/Assumed Audience: Hackers and anyone interested in Yzena’s software. Epistemic Status: Confident because it’s my choice anyway. This post has been superseded by this one. Introduction Yzena is my business. It’s a software business, obviously. I have long wondered what versioning system I should use for that software. SemVer (Semantic Versioning) is okay, but not great. It is standard, though. But there are other ways. There’s CalVer (Calendar Versioning), for example.How I Made a Monorepohttps://gavinhoward.com/2023/07/how-i-made-a-monorepo/Mon, 10 Jul 2023 16:08:22 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/07/how-i-made-a-monorepo/Assumed Audience: Hackers, Git users, code archeologists, and anyone who would need to do forensics on Yzena repositories. Epistemic Status: Not confident; I don’t have perfect memory of what I did, but this is the best I’ve got. Five months ago, I wrote about how I re-signed a few entire Git repos. One of the requirements for my process was this: It has to deal with a repo that is a bunch of combined repos.AI Evangelists Scare Mehttps://gavinhoward.com/2023/04/ai-evangelists-scare-me/Mon, 24 Apr 2023 21:10:10 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/04/ai-evangelists-scare-me/Assumed Audience: Artists, hackers, and anyone affected by “AI” models. If you are, and you want to do something, please fight back. One way to do so is to support Matthew Butterick’s two lawsuits. Discuss on Hacker News. Epistemic Status: Confident. I just had an email conversation with an AI evangelist. It opened my eyes. This particular evangelist, Romain Beaumont, came to my attention with a Hacker News post about a request for Beaumont to allow website operators to opt-in to his scraping tool.Programming Will Always Use Texthttps://gavinhoward.com/2023/02/programming-will-always-use-text/Sun, 26 Feb 2023 00:23:51 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/02/programming-will-always-use-text/Assumed Audience: Programmers, hackers, and their bosses. Discuss on Hacker News. Epistemic Status: Confident and willing to bet on it. Introduction When Reddit complains that a comment is too long, it’s time to write a blog post. The backstory is that I was having a discussion with someone over a previous post. That person, username Qweesdy, had a vision of what future programming languages should be like. This person had a few good ideas, like permissions and distributing binaries in a general form, to be specialized by the machine that would use it.Justifying a Backwards Design Decision for Yaohttps://gavinhoward.com/2023/02/justifying-a-backwards-design-decision-for-yao/Mon, 20 Feb 2023 23:55:56 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/02/justifying-a-backwards-design-decision-for-yao/Assumed Audience: Programmers and hackers. Discuss on Hacker News. Epistemic Status: Only slightly confident, but becoming more confident over time. Will update if that changes. tl;dr: Some complexity belongs in the language server, not the compiler. Also, Yao’s model requires it for ease-of-use. Introduction I’m building a programming language called Yao. Why? Because I hate every other language besides C, and C is not memory safe. Yao is designed to be the language that fits my brain, but it is also designed to be a language that anyone could use for anything.Why I Use C When I Believe in Memory Safetyhttps://gavinhoward.com/2023/02/why-i-use-c-when-i-believe-in-memory-safety/Sat, 04 Feb 2023 23:49:12 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/02/why-i-use-c-when-i-believe-in-memory-safety/Assumed Audience: Programmers, hackers, software engineers and technology executives. Discuss on Hacker News. Epistemic Status: Confident and maybe a little cocky. tl;dr: C is the only existing language I like to actually write. Introduction The NSA, bad as they are, released some good advice recently. It caused a major brouhaha. Which is stupid because it’s common sense advice at this point, and without a good reason, this advice should be followed by default.Make the Leap Second First-Class: An Open Letter to the International Telecommunication Unionhttps://gavinhoward.com/2023/02/make-the-leap-second-first-class-an-open-letter-to-the-international-telecommunication-union/Sat, 04 Feb 2023 01:24:14 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/02/make-the-leap-second-first-class-an-open-letter-to-the-international-telecommunication-union/Assumed Audience: The ITU, hackers, programmers, and anyone that cares about time and computing. Also, anyone that can tell me if I’m wrong. Discuss on Hacker News, but please don’t post on lobste.rs because I do not have an account. Epistemic Status: Confident, enough that I would be willing to help implement these ideas and will in my own code as much as possible even if they are not adopted.A Git Sin: Re-Signing an Entire Git Repohttps://gavinhoward.com/2023/02/a-git-sin-re-signing-an-entire-git-repo/Fri, 03 Feb 2023 00:47:36 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/02/a-git-sin-re-signing-an-entire-git-repo/Assumed Audience: Hackers, Git users, code archeologists, and anyone who would need to do forensics on Yzena repositories. Epistemic Status: Very sorry and repentant. Forgive me, for I have sinned. I had to create a new GPG key, separate from my personal one, and I had to re-sign every single commit in a few repos with the new key. This is rebase on a whole new level. These were my requirements:My Code Conquered Another OS!https://gavinhoward.com/2023/02/my-code-conquered-another-os/Fri, 03 Feb 2023 00:05:05 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2023/02/my-code-conquered-another-os/Assumed Audience: No one; this is just a celebration post! Epistemic Status: Happy! For legal reasons, I had to search GitHub for a previous email of mine, and by accident, I came across this. This is Apple’s Open Source Software Distributions. It appears to be Apple’s distribution of the software they ship with the default install because it links here, Apple’s Open Source releases. Well, if you dig into the bc/ directory in the first link, you see this.We Must Professionalize Programming to Preserve Society and Computing Freedomhttps://gavinhoward.com/2022/10/we-must-professionalize-programming-to-preserve-society-and-computing-freedom/Fri, 28 Oct 2022 00:41:24 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2022/10/we-must-professionalize-programming-to-preserve-society-and-computing-freedom/Assumed Audience: Hackers, programmers, users, and anyone that cares about computing freedom. Discuss on Hacker News, but please don’t post on lobste.rs because I do not have an account. Epistemic Status: Extremely confident, enough to bet my career on it. This post borrows heavily from “Uncle” Bob Martin’s “The Future of Programming” and Voxxed CERN 2019 Keynote. It even has some of the same things. I did this because those talks are excellent, and I largely agree with his points.Technical Debt Costs More Than You Think, or My Software Development Processhttps://gavinhoward.com/2022/10/technical-debt-costs-more-than-you-think-or-my-software-development-process/Mon, 24 Oct 2022 17:38:07 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2022/10/technical-debt-costs-more-than-you-think-or-my-software-development-process/Assumed Audience: Software Developers. Discuss on Hacker News, but please do not post this on lobste.rs. Epistemic Status: Confident in my opinions and extremely confident in my process. Introduction There are three things that caused me to write this post. I found this blog post. I just added three features to my bc. I’m about to write a post about professionalism in computing. And this post is the one thing those three things have in common.Windows Will Die: 90 Minutes to Do 5 Minutes of Workhttps://gavinhoward.com/2022/09/windows-will-die-90-minutes-to-do-5-minutes-of-work/Sat, 24 Sep 2022 00:10:05 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2022/09/windows-will-die-90-minutes-to-do-5-minutes-of-work/Assumed Audience: Programmers and those who use computers for work. Please do not post this on lobster.rs. Epistemic Status: 75% confident. I believe Windows is going to die. Windows has always been the OS for office workers to get stuff done. As long as it retains that, it will always be dominant. But I think it will lose it, and I believe it will happen sooner than people expect.I Believe Zig Has Function Colorshttps://gavinhoward.com/2022/04/i-believe-zig-has-function-colors/Sat, 09 Apr 2022 00:48:05 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2022/04/i-believe-zig-has-function-colors/Introduction The title is the thesis: the Zig programming language has function colors. And in the rest of this post, I will prove that and try to explain what it means for programmers using Zig. This post is not here to ascribe any intention to Zig proponents, especially the leadership and employees of the Zig Software Foundation. I did that once, and I regret it. Instead, the post is meant to be as objective as possible, while letting the chips fall where they may.I Am a Fool: First Adventures in Multi-Threadinghttps://gavinhoward.com/2022/03/i-am-a-fool-first-adventures-in-multi-threading/Tue, 15 Mar 2022 16:41:02 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2022/03/i-am-a-fool-first-adventures-in-multi-threading/So I just started writing a build system. Yes, a build system. Don’t @ me. It’s because I have a personal vendetta against CMake and need a build system that works on all platforms. Unfortunately, as in every endeavor I try, I make a lot of stupid mistakes. So it goes that I reported a bug to the musl mailing that was entirely my fault. I was called out publicly, and my response when I finally realized was,Goodbye, Kittyhttps://gavinhoward.com/2022/02/goodbye-kitty/Thu, 10 Feb 2022 12:52:15 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2022/02/goodbye-kitty/For the past two-ish years, I’ve used the Kitty terminal by Kovid Goyal, and I have been happy with it. I started using it because it’s fast and because otherwise, it was good enough. However, the latest version (0.24.2) has some bugs, or at least, the Gentoo packaging of it does. These bugs include: Failure to render text already on the screen when the size changes. Changing of the cursor to I-beam even though it’s explicitly set to block.The Law of Strict Licenseshttps://gavinhoward.com/2022/01/the-law-of-strict-licenses/Fri, 14 Jan 2022 12:48:12 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2022/01/the-law-of-strict-licenses/On Oct 25, 2018, the Hacker News user Illniyar, commenting on MongoDB’s Server Side Public License, said: Always consider license changes based on the possibility of the company being bought by oracle, there should be a law about it! The user gnulinux replied: Yes this also came up with my coworkers when we were discussing this. It’s better to treat every software license as strict and malicious as possible because everyone can be eventually bought by Oracle and Oracle can sue you for misusing “their” license.The Social Contract of Open Sourcehttps://gavinhoward.com/2022/01/the-social-contract-of-open-source/Sun, 09 Jan 2022 23:13:19 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2022/01/the-social-contract-of-open-source/Introduction I don’t know if you’ve seen it, but recently, a person named Marak, who makes faker.js, created some drama around faker.js. I do not condone a lot of what Marak has allegedly done. This post is not about most of that. It is just about his decisions regarding his Open Source projects. He is apparently in a tight financial situation, of his own making, and would like to be paid for his work.Is It Even Worth Working on FOSS Anymore?https://gavinhoward.com/2021/12/is-it-even-worth-working-on-foss-anymore/Fri, 24 Dec 2021 00:28:38 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2021/12/is-it-even-worth-working-on-foss-anymore/Introduction I don’t know how to introduce this post other than the question in the title: is it even worth working on Free and Open Source Software anymore? I have been asking myself this for the past week or two, and it’s uncomfortable for me; I believe in the power of Open Source to empower users and to give them control over their machines. Exploited FOSS But that belief of mine has been severely shaken by several things happened this week, things which also made me reconsider things that happened further in the past as well.My Whitepaper About GitHub Copilothttps://gavinhoward.com/2021/10/my-whitepaper-about-github-copilot/Wed, 27 Oct 2021 15:52:27 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2021/10/my-whitepaper-about-github-copilot/In July, the Free Software Foundation (FSF) put out a call for whitepapers about the “philosophical and legal questions” around GitHub’s Copilot. I wanted to write one, but decided not to until encouraged to do so by an employee of the FSF. By that time, I only had five days to write it, so the paper ended being subpar, but I got it in. As to be expected, my paper was not chosen for publication, and I don’t blame them."Static Linking Considered Harmful" Considered Harmfulhttps://gavinhoward.com/2021/10/static-linking-considered-harmful-considered-harmful/Fri, 01 Oct 2021 23:19:14 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2021/10/static-linking-considered-harmful-considered-harmful/Introduction In January, I wrote a post called “Dynamic Linking Needs to Die”. As should be evident from the title, it was too inflammatory. And by “too inflammatory,” I mean that it was inflammatory at all. Does dynamic linking need to die? Actually, no, I’m sure there’s a place for it somewhere. So just by that, that post was too inflammatory. This post will attempt to fix that. It will also take into account new sources that I have found since.Comments on Cosmopolitan and Culturehttps://gavinhoward.com/2021/09/comments-on-cosmopolitan-and-culture/Tue, 07 Sep 2021 22:04:01 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2021/09/comments-on-cosmopolitan-and-culture/Introduction There are some people who, when I have to interact with them on the Internet, I dread it. Usually, it’s because of one or both of these things: The person hates me. The person is a member of an “evangelism strike force” (ESF). The Rust Evangelism Strike Force was the first such strike force I met. It’s the reason I won’t touch Rust. The second evangelism strike force I met was the Zig Evangelism Strike Force.Projects in the Pipelinehttps://gavinhoward.com/2021/07/projects-in-the-pipeline/Wed, 28 Jul 2021 14:05:57 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2021/07/projects-in-the-pipeline/Introduction I’ve mentioned before that I have ideas for an operating system. Well, beyond that, I have a few other things in the pipeline. These are listed in the order I plan to do them (right now). Yao Yao is my programming language. Plenty has been said about it already, but you can also peruse the documentation I already have for it. Name I have already written an explanation of Yao’s name.Poisoning GitHub Copilot and Machine Learninghttps://gavinhoward.com/2021/07/poisoning-github-copilot-and-machine-learning/Wed, 07 Jul 2021 19:35:08 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2021/07/poisoning-github-copilot-and-machine-learning/Update, 08 July 2021: GitHub has confirmed that all public code that was on their servers was used to train Copilot. That means some of my code was used, though it was older versions. I suggest deleting all code off of GitHub if you can. GitHub has been on my radar before, and it wasn’t for a good reason. Well, it’s on my radar again, and it’s once again not for a good reason: Copilot.Software Developers Are the Problem and the Solutionhttps://gavinhoward.com/2021/06/software-developers-are-the-problem-and-the-solution/Mon, 07 Jun 2021 13:28:40 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2021/06/software-developers-are-the-problem-and-the-solution/Introduction “Software is eating the world.” “We [programmers] rule the world.” And we have run the world into the ground. We are in the process of destroying it. Examples How have we done this? Here are a few examples. Volkswagen Most people who pay attention are aware of the Volkswagen emissions scandal. “Uncle” Bob Martin said, …The CEO of Volkswagen North America…blamed a couple of software developers for cheating the EPA….Counting Words in C with Ychttps://gavinhoward.com/2021/04/counting-words-in-c-with-yc/Wed, 07 Apr 2021 20:42:33 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2021/04/counting-words-in-c-with-yc/Introduction Ben Hoyt wrote an excellent blog post comparing programming languages with a non-trivial program: counting the number of words in a text file. You can find his repo here. Of all of the languages, only C did not provide a hashmap out of the box, so Ben wrote a simple linearly probed map with a simple hash function for his version. As it turns out, I have already written what is supposed to be a production-ready hashmap for C, so I thought I would try it out.My First Programshttps://gavinhoward.com/2021/04/my-first-programs/Sat, 03 Apr 2021 08:01:55 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2021/04/my-first-programs/Introduction In my last post, I mentioned the first program I ever wrote. That, plus thinking about the calculators where I learned the basics of programming, made me feel nostalgic. So if you don’t mind, I would like to take a walk down memory lane. These programs were written by a teenager who was just learning how to program. Please don’t judge. The Calculator All of my first programs were written on a TI-84 Plus Silver Edition.A dc Script for Easterhttps://gavinhoward.com/2021/04/a-dc-script-for-easter/Fri, 02 Apr 2021 13:45:05 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2021/04/a-dc-script-for-easter/Introduction Oh, the irony! Merely hours after I posted my last post, in which I said, “I have found more bugs than users have,” I got an email from a FreeBSD user (where my bc and dc are default) reporting a bug in my dc. What I claimed in my previous post is still true; I found and fixed two bugs in the past two weeks after a month of inactivity.Lessons Learned as a User 2: Eat Your Own Dog Foodhttps://gavinhoward.com/2021/03/lessons-learned-as-a-user-2-eat-your-own-dog-food/Wed, 31 Mar 2021 16:10:07 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2021/03/lessons-learned-as-a-user-2-eat-your-own-dog-food/Introduction I am a programmer, and I approach software as such most of the time. On occasion, however, I approach it like an ordinary user would, and every time I do, I learn something. This is one of those things. Lesson Another lesson I learned recently was this: eat your own dog food. If you don’t, you have no idea what works on your software and what doesn’t. I wrote an implementation of bc, and even though it is not the best tool for the job, I use it.Lessons Learned as a User 1: Ease Mattershttps://gavinhoward.com/2021/03/lessons-learned-as-a-user-1-ease-matters/Wed, 31 Mar 2021 15:45:59 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2021/03/lessons-learned-as-a-user-1-ease-matters/Introduction I am a programmer, and I approach software as such most of the time. On occasion, however, I approach it like an ordinary user would, and every time I do, I learn something. This is one of those things. Lesson One lesson I learned recently is this: ease matters. This goes for everything. If it’s too hard to even start, the user gives up. If it’s too hard to get the software to do what the user wants done, the user gives up.Setting Aside an Idea: Decentralized Identitieshttps://gavinhoward.com/2021/03/setting-aside-an-idea-decentralized-identities/Wed, 31 Mar 2021 14:45:19 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2021/03/setting-aside-an-idea-decentralized-identities/Introduction On 03 July 2020, I published a post called “Decentralizing the Internet and Other Ideas,” and by far, the largest portion of that post was explaining my ideas for a decentralized identity system. I’ve had to admit that the idea won’t work, so I would like to talk more about it, how it’s changed, and why it won’t work. Purpose The purpose of the decentralized identity system, which I called IDSYS, was to break the network effects of centralized social media.Rust, Zig, and the Futility of "Replacing" Chttps://gavinhoward.com/2021/02/rust-zig-and-the-futility-of-replacing-c/Sat, 27 Feb 2021 16:52:08 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2021/02/rust-zig-and-the-futility-of-replacing-c/This post has been discussed on Hacker News, /r/rust, and lobste.rs. I should not have posted this to Hacker News on a Saturday night right before going to bed, but in my defense, this post blew up in a way I didn’t expect. Introduction There was a recent dust-up on GitHub surrounding the decision by the Cryptography library (which I will call cryptography for convenience) to switch to Rust.Adventures in Backing Up Data with ZFShttps://gavinhoward.com/2021/02/adventures-in-backing-up-data-with-zfs/Thu, 25 Feb 2021 14:25:04 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2021/02/adventures-in-backing-up-data-with-zfs/Introduction About 6-8 months ago, I decided to make the switch to ZFS to store all of my data, in hope of one day being able to back up remotely with ZFS encryption. That day has finally arrived; I have an off-site backup that I am dumping data to. Rationale for ZFS People may ask why I did not use BorgBackup or other like alternatives. There are several parts to the answer:Testing the Feasibility of Hardware Pipes 2: Exploring Designshttps://gavinhoward.com/2020/12/testing-the-feasibility-of-hardware-pipes-2-exploring-designs/Sat, 26 Dec 2020 12:44:56 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2020/12/testing-the-feasibility-of-hardware-pipes-2-exploring-designs/I was on IRC recently, and I had a bunch of people encourage me to continue testing the feasibility of hardware pipes, an idea I talked about in my “Computing Is Broken” post. So I am going to. I first tried to be more faithful to the design in my head. In my head, the data about the pipe was stored along with the pipe itself. Doing this yielded this code.My Development Environment and How I Got Therehttps://gavinhoward.com/2020/12/my-development-environment-and-how-i-got-there/Mon, 14 Dec 2020 14:33:13 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2020/12/my-development-environment-and-how-i-got-there/Introduction Jamie Brandon of scattered-thoughts.net recently put out a blog post called “Looking for Debugger”. In it, he goes through all of the debuggers and debugger frontends on Linux that he knew of and details their deficiencies from his perspective and asks for help finding a good set of tools. This is my answer, and here’s a sneak peek (click for full size): For those wondering, yes, I have a 4K screen.The Software Industry Is Brokenhttps://gavinhoward.com/2020/08/the-software-industry-is-broken/Thu, 20 Aug 2020 16:53:27 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2020/08/the-software-industry-is-broken/Introduction Once I discovered programming, I was so good at it that I knew that I would make a career out of it. I was wrong. I was recently let go from my job. While it hurt initially, I think it has actually been good for me because I have a chance to reinvent myself and leave an industry that I have begun to believe is fundamentally broken and full of perverse incentives.Decentralizing the Internet and Other Ideashttps://gavinhoward.com/2020/07/decentralizing-the-internet-and-other-ideas/Fri, 03 Jul 2020 22:20:10 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2020/07/decentralizing-the-internet-and-other-ideas/Introduction My life has changed recently; I have begun an important task. This means that I have to shift my focus away from implementing all of my ideas and toward running a campaign. Because of that and because I still want my ideas to be implemented, I am writing them down for anyone to do. So, what do I mean by “ideas”? Ideas to make money or to improve the software industry.Testing the Feasibility of Hardware Pipeshttps://gavinhoward.com/2020/07/testing-the-feasibility-of-hardware-pipes/Fri, 03 Jul 2020 22:18:25 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2020/07/testing-the-feasibility-of-hardware-pipes/The other day, I decided to test a theory of mine. I said, in “Computing Is Broken and How to Fix It,” that even with a microkernel, we could reduce the interaction with the kernel (and increase performance) if the hardware supported pipes (circular buffers) for passing data between processes. I decided to test this theory with a crude test on Linux, making use of shared memory between two processes.Software Engineer Body of Knowledgehttps://gavinhoward.com/2020/05/software-engineer-body-of-knowledge/Thu, 07 May 2020 09:56:52 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2020/05/software-engineer-body-of-knowledge/Expect more items to be added to this post over time, especially in the empty sections. Introduction Have you heard of the term “body of knowledge”? I hadn’t until recently. Even more important: did you know there is a body of knowledge for software engineers? It’s acronym is SWEBOK. I am studying the SWEBOK now, and I think it should be more widely known. However, I also think it is missing a lot of knowledge that is essential to the software engineer of today.I Am Moving Away from GitHubhttps://gavinhoward.com/2020/04/i-am-moving-away-from-github/Wed, 08 Apr 2020 22:43:17 -0600[email protected] (Gavin D. Howard)https://gavinhoward.com/2020/04/i-am-moving-away-from-github/As of today, I am moving all of my personal projects, including my Yzena projects, away from GitHub and onto a server that I administer. There are three reasons for this. First, GitHub will block access to projects because of trade sanctions. Second, GitHub will inexplicably block access to projects when an author calls someone a cruel, crude, and rude name. This is not sensitive; it is authoritarian. Third, GitHub’s server started not letting me push to my projects anymore.Computing Is Broken and How to Fix Ithttps://gavinhoward.com/2020/02/computing-is-broken-and-how-to-fix-it/Wed, 19 Feb 2020 12:34:44 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2020/02/computing-is-broken-and-how-to-fix-it/Introduction tl;dr: The way we do computing is fundamentally broken, but I have a vision for how to fix it, and this post contains that vision. Several months ago, a coworker asked me a question that most programmers would have struggled to answer. He asked, “Why do race conditions exist?” That quote may not be exact, but the gist is correct. I am not most programmers; I did not struggle to answer the question.Another Reason to Hate Patentshttps://gavinhoward.com/2020/02/another-reason-to-hate-patents/Wed, 19 Feb 2020 12:33:32 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2020/02/another-reason-to-hate-patents/In my next post, I talk about a new chip design that uses some ideas from the Mill architecture. Unfortunately, even if the design I have in that post is feasible, especially commercially, I cannot build it. That is because Mill Computing, Inc, the creators of the Mill architecture, have filed for, and been granted patents on, some aspects of its design, including some aspects that we are putting in this chip design.Head in the Hurricane: Securing a Web Serverhttps://gavinhoward.com/2020/02/head-in-the-hurricane-securing-a-web-server/Mon, 17 Feb 2020 09:41:01 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2020/02/head-in-the-hurricane-securing-a-web-server/Introduction The public internet is like a hurricane and your webserver is like sticking your head outside in the middle. This was what I was told by someone when I noticed that my fairly new server was getting hit by script kiddies. He was trying to assure me that everything was fine. Unfortunately, I had made a few mistakes when setting up the server, so I was vulnerable. He, and others, helped me fix the problems, and when I was done, he said,Designing the Hundred-Year Languagehttps://gavinhoward.com/2020/01/designing-the-hundred-year-language/Fri, 31 Jan 2020 23:05:18 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2020/01/designing-the-hundred-year-language/Introduction Paul Graham has an essay called The Hundred-Year Language in which he hypothesizes about what programming languages will look like in 100 years. He also comes to the conclusion that trying to build the Hundred-Year Language is feasible and useful enough to try doing now. I agree. If it wasn’t obvious, that is what I have been trying to do with Yao. I would like to explain a little bit of my thought process in the hope that the decisions I have made with Yao will start to make sense.Designing a Type Systemhttps://gavinhoward.com/2020/01/designing-a-type-system/Fri, 31 Jan 2020 08:17:14 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2020/01/designing-a-type-system/Introduction An article titled “What to Know Before Debating Type Systems” (capitalization fixed) appeared in one of my search results a while back, though I can’t remember what the search was. Needless to say, as a programming language nerd, I was interested, but I will spare you the boring details. Even though I won’t go into details, you should read that post in its entirety before reading this post. What does matter, though is this quote near the end:What Yzena Ishttps://gavinhoward.com/2020/01/what-yzena-is/Fri, 17 Jan 2020 21:54:50 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2020/01/what-yzena-is/I have mentioned the term “Yzena” a few times, so I should probably tell my readers what it is. As I said before, I have several ideas that I might turn into a business. When I first got those ideas, I came up with a name that I reserved so that I could use it. That name was Yzena. In other words, Yzena is the name of the business that I will use to commercialize my ideas.Values for Yaohttps://gavinhoward.com/2019/12/values-for-yao/Wed, 25 Dec 2019 19:07:46 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2019/12/values-for-yao/There are few videos that make me take notes, but this one is an exception. In fact, this post was massaged into prose from my original notes. The gist of the video is that every person, project, platform, and company has values. And in his opinion, the relevant values for the software industry are: Values Approachability Integrity Robustness Availability Maintainability Safety Compatibility Measurability Security Composability Operability Simplicity Debuggability Performance Stability Expressiveness Portability Thoroughness Extensibility Resiliency Transparency Interoperability Rigor Velocity This is a good list.Designing for Good Thoughtshttps://gavinhoward.com/2019/12/designing-for-good-thoughts/Wed, 25 Dec 2019 17:37:47 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2019/12/designing-for-good-thoughts/Introduction Every man-made thing in the world needs to be designed in order to be built. Of course, DIY projects are often designed as they are built, but other than that, most things are designed before they are built. And designing a thing is hard. But as it turns out, designing a thing is easy compared to what I do when I am building a programming language. At first glance, it seems that designing a programming language is easy; just decide on some easily parsed syntax that sort of conveys what a feature does and call it a day.Smart Devices Are Dangeroushttps://gavinhoward.com/2019/12/smart-devices-are-dangerous/Sun, 22 Dec 2019 21:35:12 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2019/12/smart-devices-are-dangerous/Have you heard about the Internet of Things (IoT)? It is basically about making devices “smart” and hooking them up to the Internet. And it’s a terrible idea. Don’t believe me? A hacker broke into a Google Nest and cranked up the heat. A baby monitor was hacked, and the hacker said that he was going to kidnap the baby. Another two hackers broke into Ring cameras and talked to young girls.Structured Concurrency Definitionhttps://gavinhoward.com/2019/12/structured-concurrency-definition/Mon, 16 Dec 2019 22:56:27 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2019/12/structured-concurrency-definition/In the software industry, three years is a long time, except in one area: paradigms. And I think the industry is about to experience a paradigm shift. The new paradigm is called Structured Concurrency. Why is it the next biggest paradigm? Well, let’s talk about that. According to that Wikipedia article, it was first named and formulated in 2016 by Martin Sústrik (creator of ZeroMQ) in a blog post and an update and then refined and championed by Nathaniel J.Performance Matters: Jekyll vs Hugohttps://gavinhoward.com/2019/12/performance-matters-jekyll-vs-hugo/Sun, 15 Dec 2019 22:41:11 -0700[email protected] (Gavin D. Howard)https://gavinhoward.com/2019/12/performance-matters-jekyll-vs-hugo/There has been at least one experience I had where performance mattered, and I recently ran into another one. I switched to Jekyll, a static site generator to streamline my website. And it worked pretty well. When writing a post, I had Jekyll running in debug mode, and it was fast enough. It took about three seconds to generate the site. Wait, what? Yes, three seconds. That is actually bad, but it was fast enough for writing a post.bc/dc Tips and Trickshttps://gavinhoward.com/2019/12/bc/dc-tips-and-tricks/Sun, 01 Dec 2019 10:00:00 +0000[email protected] (Gavin D. Howard)https://gavinhoward.com/2019/12/bc/dc-tips-and-tricks/Introduction After more than a year of working on an implementation of dc and POSIX bc, I have probably become one of few people in the world who can be considered bc experts. Two others are Philip A. Nelson, the author of the GNU bc, and Carl W. (last name unknown), aka Phodd, whose bc libraries are second-to-none. For anyone who thinks bc is not very powerful, look at Carl’s work; the amount of things he did is insane!bc PRNGhttps://gavinhoward.com/2019/11/bc-prng/Thu, 28 Nov 2019 10:00:00 +0000[email protected] (Gavin D. Howard)https://gavinhoward.com/2019/11/bc-prng/Introduction By this point, it should be well-known among my non-existent readership that I wrote an implementation of POSIX bc. It is less well-known that I work for SchedMD, LLC supporting Slurm, the number one supercomputer scheduler. When submitting a job to a Slurm “cluster,” we can either submit a normal executable or a shell script. When I am working with Slurm on a day-to-day basis, I usually use shell scripts.Finishing Softwarehttps://gavinhoward.com/2019/11/finishing-software/Sun, 24 Nov 2019 11:00:00 +0000[email protected] (Gavin D. Howard)https://gavinhoward.com/2019/11/finishing-software/It should be no secret now that I have written an implementation of dc and POSIX bc. What is definitely a secret is the fact that I do not actively work on it anymore. Just because I don’t actively work on it doesn’t mean I don’t maintain it. I do. Whenever a bug report comes in, I fix the bug and release a new version. I just don’t do active development anymore.Verifying a Safety Number in Signalhttps://gavinhoward.com/2019/11/verifying-a-safety-number-in-signal/Sat, 23 Nov 2019 10:00:00 +0000[email protected] (Gavin D. Howard)https://gavinhoward.com/2019/11/verifying-a-safety-number-in-signal/Introduction I am not a real cryptographer, so I have not verified the safety and security of the method of verifying safety numbers in Signal that I have described in this post. Use this method at your own risk. I welcome comments from real cryptographers. I needed to ask my mother a question the other day, but it was not just any question; it was a question with an answer that needed to be kept private.Shrinking a Websitehttps://gavinhoward.com/2019/11/shrinking-a-website/Thu, 21 Nov 2019 10:00:00 +0000[email protected] (Gavin D. Howard)https://gavinhoward.com/2019/11/shrinking-a-website/Update, 29 Nov 2019: Added the section Removing JavaScript and edited the Performance section to reflect the new performance. Introduction This blog used to be hosted on a WordPress installation. I did it that way because, while I had basic knowledge of HTML, CSS, PHP, and other website-building technologies, I couldn’t really be bothered to spend much time making my site better. About six months ago, an acquaintance pointed out that the blog platform I chose was inconsistent with my principles, as stated on the blog itself.Auditing Software Is Hardhttps://gavinhoward.com/2019/11/auditing-software-is-hard/Fri, 15 Nov 2019 10:00:00 +0000[email protected] (Gavin D. Howard)https://gavinhoward.com/2019/11/auditing-software-is-hard/Introduction tl;dr I was asked to audit 200k lines of code in a month. I turned them down because I would want to be more thorough than they expected. I was recently approached by a founder (who I will call TF for “The Founder”) of a startup (which I will call TS for “The Startup”) to audit their software in my spare time (for pay, of course). I was contacted on November 14 and told that the deadline was December 10.Pointers in Yaohttps://gavinhoward.com/2019/08/pointers-in-yao/Sat, 24 Aug 2019 11:00:00 +0000[email protected] (Gavin D. Howard)https://gavinhoward.com/2019/08/pointers-in-yao/Introduction Before I built my bc, I spent time trying to build a graphical programming language. While I have since learned the error of trying to do that, I learned a lot, and more importantly, I made some useful libraries in C. My most useful library is Dyna (which is now the container module of Yc), a library of dynamic data structures. I started this library because I missed the C++ STL, and I did not want to write in C++.Why Perfect Software Is Nearly Impossiblehttps://gavinhoward.com/2019/08/why-perfect-software-is-nearly-impossible/Sat, 24 Aug 2019 10:00:00 +0000[email protected] (Gavin D. Howard)https://gavinhoward.com/2019/08/why-perfect-software-is-nearly-impossible/Introduction tl;dr It takes a lot of work, but it’s still possible. For the past year and a half, I have built a bc as a résumé piece, and because it was meant to help me get a job, I wanted it to be as perfect as possible. And I learned a lot of lessons that I will take with me to my current job and beyond. This post is about those lessons and what it takes to make perfect, or nearly perfect, software.Link-Time Optimization vs Single-File Codehttps://gavinhoward.com/2019/08/link-time-optimization-vs-single-file-code/Tue, 13 Aug 2019 11:00:00 +0000[email protected] (Gavin D. Howard)https://gavinhoward.com/2019/08/link-time-optimization-vs-single-file-code/tl;dr: Link-time optimization is better. It produces faster code, and if you have more than one core, it is also faster. When you only have one core, it is not significantly slower, either. I had a conversation with an acquaintance on IRC recently about a blog post he wrote concerning SQLite and the decision by SQLite’s authors to put basically all of the C code into one file. The SQLite authors call it amalgamation.Code of Conduct for Yzenahttps://gavinhoward.com/2018/11/code-of-conduct-for-yzena/Mon, 05 Nov 2018 10:00:00 +0000[email protected] (Gavin D. Howard)https://gavinhoward.com/2018/11/code-of-conduct-for-yzena/I don’t like Codes of Conduct. They can be easily misused. So Yzena doesn’t have one and never will. But I do reserve the right to eject people from the community who, I believe, have behavior that is detrimental to the health of the project(s), community, and any other members of the community. In other words, I am BDFL, and I take direct responsibility for maintaining a healthy community.PL Design 1: Principleshttps://gavinhoward.com/2018/08/pl-design-1-principles/Thu, 16 Aug 2018 10:00:00 +0000[email protected] (Gavin D. Howard)https://gavinhoward.com/2018/08/pl-design-1-principles/Introduction As I said before, I am in the process of designing a programming language (PL). This is the beginning of a series about the principles that I use, as well as the design of the language itself. Name The name of the language is Yao. Cultural Appropriation!!! No. Just…no. First off, the same people that say I am bad simply because I am white are the very same people claiming that cultural appropriation exists and that whites are not allowed to “appropriate,” so they are basically saying that I suck and that I am not even allowed to attempt to learn how to not suck.Tech Criseshttps://gavinhoward.com/2018/08/tech-crises/Tue, 14 Aug 2018 10:00:00 +0000[email protected] (Gavin D. Howard)https://gavinhoward.com/2018/08/tech-crises/Introduction It should be no secret that I am trying to design a new programming language. What is probably less well-known is that I have been trying to do so, at least in some way, since late 2012. Why is it taking me so long? The short answer is that I am trying to save the world from a tech apocalypse. The long answer explains why I think that and why I believe that I might succeed.Programming Language Wish Listhttps://gavinhoward.com/2018/05/programming-language-wish-list/Thu, 31 May 2018 10:00:00 +0000[email protected] (Gavin D. Howard)https://gavinhoward.com/2018/05/programming-language-wish-list/Expect more items to be added in the future. Introduction tl;dr My dream programming language should be easy like a scripting language and fast and raw like low-level languages. It should be no secret, among people who know me even a little bit, that I like to work on programming languages. Why? I don’t know. I just do. But I have been feeling uncomfortable as of late because it seems like all of the good ideas are already taken by programming languages.