41554 blogs · [
{
"id": "01a0d49f-58a7-72c6-ad5f-c6a2858b0b0d",
"title": "Linux programs look at things in /proc more than you'd expect",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/ProcGetsUsedByPrograms",
"published_at": "2026-09-24T02:13:21+00:00"
},
{
"id": "01a0d49f-58a8-73db-bef8-e0d9b74cf423",
"title": "Ubuntu 26.04 has made the Apache systemd service unit fairly restricted",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/Ubuntu2604ApacheRestrictions",
"published_at": "2026-09-23T02:32:01+00:00"
},
{
"id": "01a0d49f-58a8-73db-bef8-e0d9b8412d89",
"title": "At a university, you have to accept that people are going to do stuff",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/UniversityPeopleDoStuff",
"published_at": "2026-09-22T02:23:25+00:00"
},
{
"id": "01a0d49f-58a8-73db-bef8-e0d9b8f245d2",
"title": "Python settings for Flycheck in GNU Emacs (as of September 2026)",
"url": "https://utcc.utoronto.ca/~cks/space/blog/python/PythonEmacsFlycheckSettings",
"published_at": "2026-09-21T02:50:20+00:00"
},
{
"id": "01a0d49f-58a8-73db-bef8-e0d9b97a129c",
"title": "I'm eventually going to want a \"casual\" browser passkey system",
"url": "https://utcc.utoronto.ca/~cks/space/blog/web/BrowserCasualPasskeyDesire",
"published_at": "2026-09-20T01:48:45+00:00"
},
{
"id": "01a0d49f-58a8-73db-bef8-e0d9b97ee558",
"title": "Exim's feature of \"tainted\" strings is a heuristic",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/EximTaintingIsAHeuristic",
"published_at": "2026-09-19T02:37:34+00:00"
},
{
"id": "01a0d49f-58a8-73db-bef8-e0d9ba617383",
"title": "Having an Exim test plan for a server saved me",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/EximTestPlanSavedMe",
"published_at": "2026-09-18T03:09:04+00:00"
},
{
"id": "01a0d49f-58a8-73db-bef8-e0d9bb2cb7f2",
"title": "Serious editors are a commitment (at least for me)",
"url": "https://utcc.utoronto.ca/~cks/space/blog/tech/EditorsAreACommitment",
"published_at": "2026-09-17T01:26:10+00:00"
},
{
"id": "01a0d49f-58a8-73db-bef8-e0d9bb6035cf",
"title": "Think about your goals and threat models for MFA authentication",
"url": "https://utcc.utoronto.ca/~cks/space/blog/tech/MFAConsiderGoalsAndThreatModels",
"published_at": "2026-09-16T01:54:13+00:00"
},
{
"id": "01a0d49f-58a8-73db-bef8-e0d9bba0c4e0",
"title": "Some feed readers don't ever react to permanent HTTP redirections",
"url": "https://utcc.utoronto.ca/~cks/space/blog/web/FeedReadersAndRedirectsII",
"published_at": "2026-09-15T01:45:32+00:00"
},
{
"id": "01a0d49f-58a8-73db-bef8-e0d9bc339c3f",
"title": "University MFA authentication has some unusual challenges",
"url": "https://utcc.utoronto.ca/~cks/space/blog/tech/UniversityMFAUnusualChallenges",
"published_at": "2026-09-14T02:07:47+00:00"
},
{
"id": "01a0d49f-58a8-73db-bef8-e0d9bc372238",
"title": "One possible future for websites is less features",
"url": "https://utcc.utoronto.ca/~cks/space/blog/web/OneWebFutureLessFeatures",
"published_at": "2026-09-13T02:41:59+00:00"
},
{
"id": "01a0d49f-58a8-73db-bef8-e0d9bcfbfa2c",
"title": "Notes on debugging standard and third-party Emacs code",
"url": "https://utcc.utoronto.ca/~cks/space/blog/programming/EmacsDebuggingStandardBits",
"published_at": "2026-09-12T02:42:09+00:00"
},
{
"id": "01a0d49f-58a8-73db-bef8-e0d9bd879bdb",
"title": "The many load averages of Unix(es) in 2026",
"url": "https://utcc.utoronto.ca/~cks/space/blog/unix/ManyLoadAveragesOfUnixII",
"published_at": "2026-09-11T02:44:09+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b97a9a3e0e",
"title": "Some (mostly historical) issues with the Unix load average",
"url": "https://utcc.utoronto.ca/~cks/space/blog/unix/LoadAverageHistoricalIssues",
"published_at": "2026-09-10T03:08:11+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b97ad5a149",
"title": "Polkit insists on there always being administrative users",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/PolkitAlwaysAnAdmin",
"published_at": "2026-09-09T03:45:47+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b97b619217",
"title": "Always remember to restart daemons and programs after changes",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/RestartAfterChangesLesson",
"published_at": "2026-09-08T02:07:05+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b97bb2cc7d",
"title": "Thinking about models: authorization versus capabilities",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/AuthorizationVsCapabilities",
"published_at": "2026-09-07T03:28:00+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b97c865dc3",
"title": "The prospect for language independent tooling for making code changes",
"url": "https://utcc.utoronto.ca/~cks/space/blog/programming/LanguageIndependentCodeChanges",
"published_at": "2026-09-06T02:34:21+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b97d5384b4",
"title": "Our authentication versus authorization problem",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/OurAuthVsAccessProblem",
"published_at": "2026-09-05T03:33:56+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b97d849697",
"title": "Sorting out a DNF \"transaction failed\" during my upgrade to Fedora 44",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/Fedora44DNFTransactionFailed",
"published_at": "2026-09-04T03:09:12+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b97db3c388",
"title": "Status reports and indicators are untrustworthy, UPS battery edition",
"url": "https://utcc.utoronto.ca/~cks/space/blog/tech/UPSBatteryReportingIssue",
"published_at": "2026-09-03T03:16:09+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b97e5e8ec1",
"title": "We're no longer using Linux's strict memory overcommit mode",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/StrictOvercommitNoLongerUsing",
"published_at": "2026-09-02T02:08:21+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b97ed15892",
"title": "Getting LSP servers and other tools to work in venvs in GNU Emacs",
"url": "https://utcc.utoronto.ca/~cks/space/blog/python/VenvsAndToolsInEmacs",
"published_at": "2026-09-01T03:07:17+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b97f10ce72",
"title": "There's a difference between a technology being ineffective and being uneconomical",
"url": "https://utcc.utoronto.ca/~cks/space/blog/tech/UneconomicalVsNotWorking",
"published_at": "2026-08-31T02:33:17+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b97fcfbbbe",
"title": "Our slow move toward boring (server) host names",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/ChoosingBoringHostNames",
"published_at": "2026-08-30T01:50:26+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b97fed88b9",
"title": "Blocking SSH logins with PAM (at least on Linux)",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/SSHBlockLoginsWithPAM",
"published_at": "2026-08-29T03:02:29+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98082635e",
"title": "Using Polkit to prevent people from doing 'loginctl enable-linger'",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/PolkitDisableLoginctlLinger",
"published_at": "2026-08-28T02:49:42+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b9811b494b",
"title": "A surprise with systemd user service units and special shells",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/SystemdUserServicesAndShell",
"published_at": "2026-08-27T03:46:08+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b981fd8dd8",
"title": "Making a bytes/Unicode confusion in email parsing in Python",
"url": "https://utcc.utoronto.ca/~cks/space/blog/python/EmailParsingUnicodeFumble",
"published_at": "2026-08-26T03:32:50+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b9820e65dd",
"title": "Considering how much RAM system.slice and the kernel need",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/SystemMemoryNeedQuestion",
"published_at": "2026-08-25T03:23:12+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b9823b5956",
"title": "I should write more shell scripts than I do",
"url": "https://utcc.utoronto.ca/~cks/space/blog/unix/WriteMoreShellScripts",
"published_at": "2026-08-24T02:46:03+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b982d5fe55",
"title": "Some notes on taming ruff (and mypy) so they're useful for me",
"url": "https://utcc.utoronto.ca/~cks/space/blog/python/TamingRuffAndMypy",
"published_at": "2026-08-23T01:48:31+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b9834a6500",
"title": "I've become more optimistic about my someday future on Wayland",
"url": "https://utcc.utoronto.ca/~cks/space/blog/unix/WaylandOptionsOptimism",
"published_at": "2026-08-22T02:39:00+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b983d4adeb",
"title": "We should re-check our local settings every so often",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/RecheckSettingsEverySoOften",
"published_at": "2026-08-21T02:49:09+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b984bef4ff",
"title": "Why one of our systems had very slow systemd session starts",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/SystemdSlowSessionStartProblemII",
"published_at": "2026-08-20T00:58:40+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b9852d5efb",
"title": "A systemd mystery with a very slow session start",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/SystemdSlowSessionStartProblem",
"published_at": "2026-08-19T03:04:31+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b9859508df",
"title": "Some notes on rectangle regions in GNU Emacs",
"url": "https://utcc.utoronto.ca/~cks/space/blog/programming/EmacsRectangleRegionNotes",
"published_at": "2026-08-18T03:02:44+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b985c1db74",
"title": "Some thoughts on (not) using GNU Emacs' Tramp remote editing system",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/EmacsTrampSomeThoughts",
"published_at": "2026-08-17T03:48:43+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98636747a",
"title": "Stopping a systemd service when a filesystem is unmounted",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/SystemdStopOnFSUnmount",
"published_at": "2026-08-16T02:05:00+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b986978387",
"title": "Grafana dashboards are a marvel of the modern web environment",
"url": "https://utcc.utoronto.ca/~cks/space/blog/web/GrafanaModernWebMarvel",
"published_at": "2026-08-15T02:45:35+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b986fa4a27",
"title": "It helps to keep track of and investigate your clever ideas",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/ActuallyInvestigateIdeas",
"published_at": "2026-08-14T02:57:12+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98721f390",
"title": "Revisiting Flymake and Flycheck in GNU Emacs (as of Flycheck v39)",
"url": "https://utcc.utoronto.ca/~cks/space/blog/programming/EmacsFlymakeFlycheckII",
"published_at": "2026-08-13T02:45:59+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b987b0f2e7",
"title": "Modern (x86) firmware can be really slow to boot, which can be painful",
"url": "https://utcc.utoronto.ca/~cks/space/blog/tech/SlowFirmwareBootPainful",
"published_at": "2026-08-12T03:09:07+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b988878cd1",
"title": "URLs aren't strings, and my recent encounter with this",
"url": "https://utcc.utoronto.ca/~cks/space/blog/web/URLsAreNotStringsMyCase",
"published_at": "2026-08-11T03:21:03+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98895a167",
"title": "Where I put default values for options in Python's argparse and why",
"url": "https://utcc.utoronto.ca/~cks/space/blog/python/ArgparseDefaultsWhere",
"published_at": "2026-08-10T03:02:09+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b988e85a9b",
"title": "Sometimes we do clean up network oddities",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/RealNetworkEvolutionII",
"published_at": "2026-08-09T02:08:31+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b9895e6f61",
"title": "An irritating incompatible change in Python 3.14's argparse",
"url": "https://utcc.utoronto.ca/~cks/space/blog/python/ArgparseHelpValidationChange",
"published_at": "2026-08-08T02:50:09+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b989bc8223",
"title": "Some ways to navigate through 'git blame' over time in GNU Emacs",
"url": "https://utcc.utoronto.ca/~cks/space/blog/programming/EmacsGitBlameOverTime",
"published_at": "2026-08-07T02:44:49+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98a124f09",
"title": "Looking at the memory map of a Go 1.27 program on Linux",
"url": "https://utcc.utoronto.ca/~cks/space/blog/programming/GoProgramMemoryUseII",
"published_at": "2026-08-06T02:46:15+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98a28dbbe",
"title": "Where a Linux kernel memory allocation error comes from",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/KernelNotEnoughMemoryError",
"published_at": "2026-08-05T02:27:19+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98a479507",
"title": "What 'sh -x' mostly doesn't tell you about a shell script",
"url": "https://utcc.utoronto.ca/~cks/space/blog/programming/ShXWhatYouMiss",
"published_at": "2026-08-04T02:08:46+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98a557416",
"title": "Bug reports are hard, minor details matter edition",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/BugReportsMinorDetailsCanMatter",
"published_at": "2026-08-03T03:26:49+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98a68d5f2",
"title": "Some reasons why my phone's alarm clock is so good",
"url": "https://utcc.utoronto.ca/~cks/space/blog/tech/SmartphoneAlarmClockWhyGood",
"published_at": "2026-08-02T03:27:46+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98b4660c3",
"title": "The Ubuntu 26.04 server installer and reusing existing data filesystems",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/Ubuntu2604InstallerExistingDisks",
"published_at": "2026-08-01T03:22:05+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98c1541bd",
"title": "My misunderstanding about tabs in Python 3",
"url": "https://utcc.utoronto.ca/~cks/space/blog/python/Python3TabsMisunderstanding",
"published_at": "2026-07-31T02:30:34+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98ca19a79",
"title": "Solving my problem with the Emacs Lisp byte compilation checker",
"url": "https://utcc.utoronto.ca/~cks/space/blog/programming/EmacsLispCheckerAndPackageMacros",
"published_at": "2026-07-30T03:00:17+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98d5a41a0",
"title": "Getting access to the /tmp of a systemd service with PrivateTmp=yes",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/SystemdPrivateTmpWhere",
"published_at": "2026-07-29T03:29:51+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98ddf8255",
"title": "Trying to stress Apache to 10,000 connections (with no answer yet)",
"url": "https://utcc.utoronto.ca/~cks/space/blog/web/Apache10KNoAnswerYet",
"published_at": "2026-07-28T03:07:48+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98e0b8e06",
"title": "Getting a minimal environment for a third party GNU Emacs package",
"url": "https://utcc.utoronto.ca/~cks/space/blog/programming/EmacsMinimalEnvForPackage",
"published_at": "2026-07-27T03:25:04+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98ee327de",
"title": "An unfortunate limitation of the Apache server status page",
"url": "https://utcc.utoronto.ca/~cks/space/blog/web/ApacheServerStatusLimitation",
"published_at": "2026-07-26T00:42:46+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98efa15f4",
"title": "How you wind up with switches above your office's false ceiling",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/HowYouGetCeilingSwitchs",
"published_at": "2026-07-25T03:02:44+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b98f73f3c7",
"title": "Maybe assigning TCP connection to Linux traffic control 'flows'",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/TcAssignFlowsMaybe",
"published_at": "2026-07-24T03:14:15+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99036a77f",
"title": "The story of how we (eventually) found our missing firewall rule",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/FindingOurMissingFirewallRule",
"published_at": "2026-07-23T01:36:34+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99101e603",
"title": "Making sense of diskless workstations through two models of them",
"url": "https://utcc.utoronto.ca/~cks/space/blog/tech/DisklessWorkstationsTwoModels",
"published_at": "2026-07-22T02:20:45+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b991c61272",
"title": "Ubuntu 26.04 has broken shutdown announcements and wall doesn't work",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/Ubuntu2604ShutdownAndWall",
"published_at": "2026-07-21T03:28:49+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b991d03c8f",
"title": "Changes in how something behaves are a signal (but can be hard to notice)",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/SurpriseChangesAreASignal",
"published_at": "2026-07-20T03:11:51+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b992563381",
"title": "The Rust coreutils (uutils) are sticky in Ubuntu 26.04 LTS",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/Ubuntu2604BuildEssentialAndUutils",
"published_at": "2026-07-19T02:08:48+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b992b0cfc2",
"title": "How my desktops wound up with multiple D-Bus user session instances",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/HowMyMultipleDBusInstances",
"published_at": "2026-07-18T02:02:00+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b993681b60",
"title": "Argc and argv in early Research Unix",
"url": "https://utcc.utoronto.ca/~cks/space/blog/unix/EarlyUnixArgcAndArgv",
"published_at": "2026-07-17T02:59:36+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b9941a1037",
"title": "The early Research Unix exec(2) argv size limit",
"url": "https://utcc.utoronto.ca/~cks/space/blog/unix/EarlyUnixExecArgvSizeLimit",
"published_at": "2026-07-16T02:47:55+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b994ba4f21",
"title": "Systemd and your user D-Bus session bus",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/SystemdAndUserDBusSessionBus",
"published_at": "2026-07-15T01:59:10+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b995437ac6",
"title": "Prometheus 3.14's (likely) duration functions, especially step()",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/PrometheusDurationFunctions",
"published_at": "2026-07-14T02:18:35+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b995b9b6c4",
"title": "How early SunOS did diskless workstations before NFS",
"url": "https://utcc.utoronto.ca/~cks/space/blog/solaris/SunOSDisklessWithoutNFS",
"published_at": "2026-07-13T02:39:41+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99657ef22",
"title": "Finding an outdated Git mirror host",
"url": "https://utcc.utoronto.ca/~cks/space/blog/programming/GitFindingOutdatedMirrorHost",
"published_at": "2026-07-11T23:27:41+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99756267b",
"title": "A mistake I've made with the Apache IfModule directive",
"url": "https://utcc.utoronto.ca/~cks/space/blog/web/ApacheIfModuleMistake",
"published_at": "2026-07-11T02:15:00+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99801c9e2",
"title": "An unusual way for your DHCP server to run out of dynamic IPs",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/DHCPServerAndScreamingHost",
"published_at": "2026-07-10T03:00:59+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99864b646",
"title": "BMCs and a surprising USB network device on your server",
"url": "https://utcc.utoronto.ca/~cks/space/blog/tech/BMCsAndUSBEthernetDevices",
"published_at": "2026-07-09T01:41:15+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b9988da419",
"title": "Notes on pulling from multiple upstream Git mirrors",
"url": "https://utcc.utoronto.ca/~cks/space/blog/programming/GitPullingFromMirrors",
"published_at": "2026-07-08T02:35:03+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b998c5e420",
"title": "Our mixed building network wiring and its consequences",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/OurMixedBuildingWiring",
"published_at": "2026-07-07T22:53:39+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b999737ac8",
"title": "Using Linux tc to limit the outgoing bandwidth of a web server",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/TcLimitServiceBandwidth",
"published_at": "2026-07-07T03:05:39+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99a057f48",
"title": "Sometimes it actually is the network: a war story",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/SometimesItIsTheNetwork",
"published_at": "2026-07-06T02:13:18+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99a73be82",
"title": "What buffer size (OpenSSH) ssh seems to use for streaming output",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/OpenSSHStdoutIOSize",
"published_at": "2026-07-04T23:27:08+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99a82808a",
"title": "Go maps, hashes of map keys, and pointers: a little surprise",
"url": "https://utcc.utoronto.ca/~cks/space/blog/programming/GoMapsHashesAndPointers",
"published_at": "2026-07-04T02:01:44+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99b1eb4d3",
"title": "Discovering rsync's -W option and our use for it",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/RsyncWOptionUse",
"published_at": "2026-07-03T02:41:01+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99bebbbe7",
"title": "I'm only interested in \"native\" installation systems",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/NativeInstallersOnly",
"published_at": "2026-07-02T01:33:46+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99cc8fdba",
"title": "Our long path from IPMI remote installs to network installs",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/IPMIToNetworkInstalls",
"published_at": "2026-07-01T02:52:24+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99d82eb5a",
"title": "As expected, using kexec to switch to a new Ubuntu kernel works",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/UbuntuKexecRestartWorks",
"published_at": "2026-06-30T03:10:12+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99dcd9938",
"title": "There's a plague of Googlebot impersonation going on (in June 2026)",
"url": "https://utcc.utoronto.ca/~cks/space/blog/web/GooglebotImpersonatorPlague",
"published_at": "2026-06-29T03:18:27+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99e3a6929",
"title": "Go interfaces, reflection, and binary size",
"url": "https://utcc.utoronto.ca/~cks/space/blog/programming/GoInterfacesReflectAndBinarySize",
"published_at": "2026-06-28T02:16:31+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99eb335c2",
"title": "How your Ubuntu 26.04 server boots with a software RAID array root filesystem",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/Ubuntu2604ServerSoftwareRaidBoot",
"published_at": "2026-06-27T03:28:54+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99f6d6a06",
"title": "You can't always trust a BMC's inventory of the server's hardware",
"url": "https://utcc.utoronto.ca/~cks/space/blog/tech/BMCDontTrustHardwareInventory",
"published_at": "2026-06-26T03:25:57+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99fc1781c",
"title": "Some things on 'systemctl kexec' as compared to 'kexec -e'",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/SystemctlKexecVsKexec",
"published_at": "2026-06-25T02:42:00+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99fd596ab",
"title": "Two versions of a 'is SSH up on a machine' check",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/SshupTwoVersions",
"published_at": "2026-06-24T02:18:14+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b99fda97d4",
"title": "The quiet issue of lurking settings (and how it bit me)",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/LurkingSettings",
"published_at": "2026-06-23T02:30:47+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b9a0309b3c",
"title": "Configuration is a liability, just like code",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/ConfigurationIsALiability",
"published_at": "2026-06-22T03:08:03+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b9a0f1784a",
"title": "PyPy and Python 3 for us",
"url": "https://utcc.utoronto.ca/~cks/space/blog/python/PyPyAndPython3ForUs",
"published_at": "2026-06-21T03:13:32+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b9a1050ae6",
"title": "Limiting web server bandwidth the brute force way",
"url": "https://utcc.utoronto.ca/~cks/space/blog/web/ServerBruteForceBandwidthLimit",
"published_at": "2026-06-20T02:59:49+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b9a1cf04d6",
"title": "Some reasons why your server may not be doing a UEFI network boot",
"url": "https://utcc.utoronto.ca/~cks/space/blog/sysadmin/WhyServerNotUEFINetworkBoot",
"published_at": "2026-06-19T03:30:09+00:00"
},
{
"id": "01a08c5b-3cf0-706e-bddb-32b9a270dca0",
"title": "How to correctly not wait for network carrier in Netplan",
"url": "https://utcc.utoronto.ca/~cks/space/blog/linux/UbuntuNetplanWaitForCarrierII",
"published_at": "2026-06-18T02:02:05+00:00"
}
] posts Claim your blog