Like many, I get annoyed by subscription pricing that doesn't accurately reflect my needs. I don't want to spend $5 a month for a color picker app. I don't really want to spend $4/month on ControlD for ad-blocking and custom internal DNS hosting, and NextDNS is worth $20/month until I hit the five or six times a month it's completely unresponsive and kills all my internet connectivity.
(I recognize I departed from the mainstream on the specifics there, but my point is still valid.)
I've self-hosted this blog and several other websites for more than a decade now; not only is it a way to keep up my Linux/sysadmin chops, it's also freeing on a personal level to know I have control and important to me on a philosophical level to not be dependent on corporations where possible, as I've grown increasingly wary of any company's motivations the older I get.
So I started looking at options that might take care of it, and over the last few months I've really started to replace things that would have previously been a couple bucks a month with a VPS running four such services for $40 a year.
Quick aside: I use RackNerd for all my hosting now, and they have been rock-solid and steady in the time I've been with them (coming up on a year now). Their New Year's Deals are still valid, so you can pay $37.88 for a VPS with 4GB of RAM for a year. Neither of those links are affiliate links, by the way - they're just a good company with good deals, and I have no problem promoting them.
AdGuard Home - Ad-blocking, custom DNS. I run a bunch of stuff on my homelab that I don't want exposed to the internet, but I still want HTTPS certificates for. I have a script that grabs a wildcard SSL certificate for the domain that I automatically push to my non-public servers. I use Tailscale to keep all my devices (servers, phones, tablets, computers) on the same VPN. Tailscale's DNS is set to my AdGuard IP, and AdGuard manages my custom DNS with DNS rewrites.
This has the advantages of a) not requiring to me to set the DNS manually for every wireless network on iOS (which is absolutely a bonkers way to set DNS, Apple), b) keeping all my machines accessible as long as I have internet, and c) allowing me to use the internal Tailscale IP addresses as the AdGuard DNS whitelist so I can keep out all the random inquiries from Chinese and Russian IPs.
The one downside is it requires Tailscale for infrastructure, but Tailscale has been consistently good and generous with its free tier, and if it ever changes, there are free (open-source, self-hosted) alternatives.
MachForm - Not free, not open-source, but the most reliable form self-hosting I've found that doesn't require an absurd number of hoops. I tried both HeyForm and FormBricks before going back to the classic goodness. If I ever care enough, I'll write a modern-looking frontend theme for it, but as of now it does everything I ask of it. (If I ever get FU money, I'll rewrite it completely, but I don't see that happening.)
Soketi - A drop-in Pusher replacement. Holy hell was it annoying to get set up with multiple apps in the same instance, but now I have a much more scalable WebSockets server without arbitrary message/concurrent user limits.
Nitter - I don't like Twitter, I don't use Twitter, but some people do and I get links that I probably need to see (usually related to work/dev, but sometimes politics and news). Instead of giving a dime to Elon, Nitter acts as a proxy to display it (especially useful with threads, of which you only see one tweet at a time on Twitter without logging in). You do need to create a Twitter account to use it, but I'm not giving him any pageviews/advertising and I'm only using it when I have to. When Nitter stops working, I'll probably just block Twitter altogether.
Freescout - My wife and I used Helpscout to run our consulting business for years until they decided to up their subscription pricing by nearly double what we used to pay. Helpscout was useful, but not that useful. We tried to going to regular Gmail and some third-party plugins, but eventually just went with a shared email account until we found Freescout. It works wonderfully, and we paid for some of the extensions mostly just to support them. My only annoyance is the mobile app is just this side of unusable, but hard to complain about free (and we do most of our support work on desktop, anyway).
Sendy - Also not free, but does exactly what's described on the box and was a breeze to set up. Its UI is a little dated, and you're best served by creating your templates somewhere else and pasting the HTML in to the editor, but it's a nice little workhorse for a perfectly reasonable price.
Calibre-web - I used to use the desktop version of Calibre, but it was a huge pain to keep running all the time on my main computer and too much of a hassle to manage when it was running on desktop on one of the homelab machines. Calibre web puts all of the stuff I care about from Calibre available in the browser. I actually run 3-4 instances, sorted by genre.
Tube Archivist - I pay for YouTube premium, but I don't trust that everything will always be available. I selectively add videos to a certain playlist, then have Tube Archivist download them if I ever want to check them out later.
Plex - I have an extensive downloaded music archive that I listen to using PlexAmp, both on mobile devices and various computers. I don't love Plex's overall model, but I've yet to find an alternative that allows for good management of mobile downloads (I don't want to stream everything all the time, Roon).
I have been playing around with Soketi as a self-hosted Pusher alternative and, while the software is great, boy is its documentation and error messaging lacking. If you're trying to run it and get the error
There was an error while parsing the JSON in your config file. It has not been loaded.
This is, as near as I can tell, the minimum required set of keys to get an app working:
{
"debug": true,
"port": 6001,
"appManager.array.apps": [
{
"id": "id",
"key": "key",
"secret": "secret",
"webhooks" : []
}
]
}
Without the empty webhooks array, it kept failing on me.
I still have not gotten a pm2 instance to accept a config file đď¸. I gave up on the Docker instance because it doesn't allow more than one app per instance and I want something more flexible.
I'm sure it's great and super easy if you're just spinning up a single app, though!
Peloton will start charging people a one-time $95 "used equipment activation fee" for used bikes purchased from outside of Peloton and its official distribution partners.
...
During the call, Peloton's interim CEO, Christopher Bruzzo, said that the activation fee "will be a source of incremental revenue and gross profit" and support Peloton's "investments in improving the fitness experience for our members." Peloton also claimed in a letter to shareholders that the fee is related to ensuring that the subscription customers that Peloton gains through used bike sales "receive the same high-quality onboarding experience."
Right as I was getting out of newspapers I was talking with our circulation manager, who had just heard of a revolutionary new idea that was going to save the industry. As a baseline, let's say the paper cost 75¢ per issue (I worked at a moderate-sized daily). You buy it from one of the little metal newspaper houses, 75¢. Grocery store, 75¢. Buy a subscription, you get a little discount, but there's one flat rate you pay.
Then, one day, some economic geniuses from high atop the mount gazed into their scrying balls and noted, "Hey, rich people have more money." From this fact, they extrapolated a theory that rich people would be more likely to spend more money than non-rich folks. Thus was born our new Model for Journalismâ˘: income-based pricing.
As you might have guessed by even a passing knowledge of the current state of the journalism industry, this did not solve the problem. Now, they rolled this out with a modicum of sense. They didn't just suddenly jack up the rates on everybody; when subscription renewals came up, they just modified the increase so it was higher for some people than others. Because they lacked detailed demographic information on individual customers (I shudder to think what they would have done had this initiative been launched in 2024), they based it loosely on Zip codes. (This had the added benefit of making sure that neighbors wouldn't be discussing the price of the newspaper and find out they were paying vastly different rates.)
It worked, kinda? For a little bit, anyway. Some people were willing to pay more, and the sales people were instructed that if customers put up too much of a fight, they could resub at the new standard rate. But there are two crucial flaws to this approach; I won't name them yet, because first I want to talk about how this idea has absolutely exploded across the entire American marketplace.
Anyone who's been to the grocery store knows that prices have gotten significantly higher since COVID. As have fast food prices, concert ticket prices, and streaming service subscription fees.
Some will point to the laws of supply and demand, which is a) facile, b) not relevant in industries like streaming, and c) not nearly enough to account for the rate of increases we've been seeing in consumables. The real reason, of course, is greed: Those selling think they can make more money by raising prices and enough consumers will continue to fork over the money to offset those who don't.
Here's where we get to the issue: This economic model ignores how people actually work.
In our newspaper example, raising rates did two things: First, it made people reconsider their model of what a newspaper is. For a long time, getting the newspaper was just what you did: it's how you stayed informed and, as a teacher of mine once put it, "It's what cultured people do."
But by significantly raising the price, you force people to think of the thing they're purchasing's overall utility to their lives. What was once an automatic, "Yes, of course we pay for the paper," now gets framed, internally, as "Does the paper provide $x amount of value to me?"
The second thing that raising prices does is increase awareness of the competition. In newspapers' case, this was pretty broadly known, but there was a significant percentage of people even in the early 2010s for whom getting the news via a single source delivered to their house every morning was more convenient than seeking out online or TV news sources.
But once that price goes up? Suddenly the hassle of trying to sift through information on the internet doesn't seem so daunting. You're more willing to experiment, because you're saving so much money. And now the newspaper has to stand on its own as a value proposition, which isn't a good strategy for a medium that is objectively and definitively slower, more expensive and less adaptable than its direct competition.
And we're seeing the same thing happen now in real-time, in a variety of industries. Subway jacked up its prices 39% 2014-2024; a week ago, they had to hold a corporate emergency meeting because sales are so low. McDonalds announced its first quarter-to-quarter sales drop since 2020. These and other companies assumed they could jack up the price and enough people would cover at the new high to offset those who bailed. And, worst-case scenario, if it's too high, they can always drop the prices back down.
But that's not how people work. When people feel like they're being screwed, they get bitter and hold a grudge. When people are forced to confront and try new alternatives, sometimes it turns out they liked the new option better than the old one, anyway. And any brand loyalty they may have once held is completely obliterated, so you're not only starting from scratch, you're actually digging yourself out of a hole.
Such is life when you're focused solely, maniacally on the short-term. You might find yourself with no long-term options back to success.
Without any central leader or governing body, every decision is being made with only short-term gains in mind.
The big problem there is that no one cares about minor-league anything. The people who now run this sport are gutting everything that makes it special: history, tradition, underdogs, parity, surprises, personalities, regional flavor, and vigor. Theyâre replacing all that with matchups of big-name brands in an effort to appeal to the sort of casual fan who doesnât really care about college football anyway. College football is well on its way to eating itself alive
A quick note about the Alphabet of Accessibility issues: It was originally posted on The Pastry Box Project in 2014. At the time of writing, the TPBP website terms of service explicitly stated, "Unless otherwise noted, all content on this site is licensed under a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0 License. This is the Website default license, but authors can use a license of their own. So you may want to check the list of our contributors to see if they are using another license."
Neither the work in question nor the author's page indicated otherwise at the time of writing, so the work was licensed under CC BY-NC-ND 4.0, which is why I reproduce that version here. It's too valuable to be left as a dead, unreachable link.
Note: This content, by Anne Gibson, was originally published at the Pastry Box Project, under a Creative Commons (CC BY-NC-ND 4.0) license. I am reposting it here so that it might remain accessible to the wider web at large.
A is blind, and has been since birth. Heâs always used a screen reader, and always used a computer. Heâs a programmer, and heâs better prepared to use the web than most of the others on this list.
B fell down a hill while running to close his car windows in the rain, and fractured multiple fingers. Heâs trying to surf the web with his left hand and the keyboard.
C has a blood cancer. Sheâs been on chemo for a few months and, despite being an MD, is finding it harder and harder to remember things, read, or have a conversation. Itâs called chemo brain. Sheâs frustrated because sheâs becoming more and more reliant on her smart phone for taking notes and keeping track of things at the same time that itâs getting harder and harder for her to use.
D is color blind. Most websites think of him, but most people making PowerPoint presentations or charts and graphs at work do not.
E has Cystic Fibrosis, which causes him to spend two to three hours a day wrapped in respiratory therapy equipment that vibrates his chest and makes him cough. As an extension, it makes his arms and legs shake, so he sometimes prefers to use the keyboard or wait to do tasks that require a steady touch with a mouse. He also prefers his tablet over his laptop because he can take it anywhere more conveniently, and itâs easier to clean germs off of.
F has been a programmer since junior high. She just had surgery for gamerâs thumb in her non-dominant hand, and will have it in her dominant hand in a few weeks. Sheâs not sure yet how it will affect her typing or using a touchpad on her laptop.
G was diagnosed with dyslexia at an early age. Because of his early and ongoing treatment, most people donât know how much work it takes for him to read. He prefers books to the Internet, because books tend to have better text and spacing for reading.
H is a fluent English speaker but hasnât been in America long. Sheâs frequently tripped up by American cultural idioms and phrases. She needs websites to be simple and readable, even when the concept is complex.
I has epilepsy, which is sometimes triggered by stark contrasts in colors, or bright colors (not just flashing lights). I has to be careful when visiting brightly-colored pages or pages aimed for younger people.
J doesnât know that heâs developed an astigmatism in his right eye. He does know that by the end of the day he has a lot of trouble reading the screen, so he zooms in the web browser to 150% after 7pm.
K served in the coast guard in the 60s on a lightship in the North Atlantic. Like many lightship sailors, he lost much of his hearing in one ear. He turns his head toward the sound on his computer, but that tends to make seeing the screen at the same time harder.
L has lazy-eye. Her brain ignores a lot of the signal she gets from the bad eye. She can see just fine, except for visual effects that require depth perception such as 3-D movies.
M canât consistently tell her left from her right. Neither can 15% of adults, according to some reports. Directions on the web that tell her to go to the top left corner of the screen donât harm her, they just momentarily make her feel stupid.
N has poor hearing in both ears, and hearing aids. Functionally, sheâs deaf. When sheâs home by herself she sometimes turns the sound all the way up on her computer speakers so she can hear videos and audio recordings on the web, but most of the time she just skips them.
O has age-related macular degeneration. Itâs a lot like having the center of everything she looks at removed. She can see, but her ability to function is impacted. She uses magnifiers and screen readers to try to compensate.
P has Multiple Sclerosis, which affects both her vision and her ability to control a mouse. She often gets tingling in her hands that makes using a standard computer mouse for a long period of time painful and difficult.
Q is ninety-nine. You name the body part, and it doesnât work as well as it used to.
R was struck by a car crossing a busy street. Itâs been six months since the accident, and his doctors think his current headaches, cognitive issues, and sensitivity to sound are post-concussion syndrome, or possibly something worse. He needs simplicity in design to understand what heâs reading.
S has Raynaudâs Disease, where in times of high stress, repetitive motion, or cold temperatures her hands and feet go extremely cold, numb, and sometimes turn blue. She tries to stay warm at her office desk but even in August has been known to drink tea to keep warm, or wear gloves.
T has a learning disability that causes problems with her reading comprehension. She does better when sentences are short, terms are simple, or she can listen to an article or email instead of reading it.
U was born premature 38 years ago â so premature that her vision was permanently affected. She has low vision in one eye and none in the other. She tends to hold small screens and books close to her face, and lean in to her computer screen.
V is sleep-deprived. She gets about five hours of bad sleep a night, has high blood pressure, and her doctor wants to test her for sleep apnea. She doesnât want to go to the test because they might âput her on a machineâ so instead she muddles through her workday thinking poorly and having trouble concentrating on her work.
W had a stroke in his early forties. Now heâs re-learning everything from using his primary arm to reading again.
X just had her cancerous thyroid removed. Sheâs about to be put on radioactive iodine, so right now sheâs on a strict diet, has extremely low energy, and a lot of trouble concentrating. She likes things broken up into very short steps so she canât lose her place.
Y was in a car accident that left her with vertigo so severe that for a few weeks she couldnât get out of bed. The symptoms have lessened significantly now, but that new parallax scrolling craze makes her nauseous to the point that she shuts scripting off on her computer.
Z doesnât have what you would consider a disability. He has twins under the age of one. Heâs a stay-at-home dad who has a grabby child in one arm and if heâs lucky one or two fingers free on the other hand to navigate his iPad or turn Siri on.
=====
This alphabet soup of accessibility is not a collection of personas. These are friends and family I love. Sometimes Iâm describing a group. (One can only describe chemo brain so many times.) Some people are more than one letter. (Yay genetic lottery.) Some represent stages people were in 10 years ago and some stages we know they will hit â we just donât know when.
Robin Christopherson (@usa2day) points out that many of us are only temporarily able-bodied. Iâve seen this to be true. At any given moment, we could be juggling multiple tasks that take an eye or an ear or a finger away. We could be exhausted or sick or stressed. Our need for an accessible web might last a minute, an hour, a day, or the rest of our lives. We never know.
We never know who. We never know when.
We just know that when itâs our turn to be one of the twenty-six, we will want the web to work. So today, we need to make simple, readable, effective content. Today, we make sure all our auditory content has a transcript, or makes sense without one. Today, we need to make our shopping carts and logins and checkouts friendly to everyone. Today, we need to design with one thought to the color blind, one thought to the photosensitive epileptic, and one thought to those who will magnify our screens. Today we need to write semantic HTML and make pages that can be navigated by voice, touch, mouse, keyboard, and stylus.
Tomorrow, itâs a new alphabet.
Forgive the lack of posts recently, a back injury has mostly confined me to bed, and I get a little sick of staring at computer screens.
But while I've been out of it I caught up on Aaron Sorkin's The Newsroom, which I had never seen. As a fan of The West Wing and yes, even Studio 60, I thought, as a former journalismo myself, this would be right up my alley.
And it definitely inspired me ... to get back into writing code. It was so bad. I was surprised at how bad it was. It made me question my own taste and wonder whether I'd misjudged Sorkin's talent.
Don't get me wrong, he has some good scripts, and some of his meaty monologues and dialogues in various things he's written are an absolute delight.
But he's also written the same show at least three times now? Including similar (in some cases, identical) plot points, themes, specific jokes, even a reference to using too much back medicine as an excuse for why a white man said something dumb.
In case you couldn't tell from my recipe intro up top there, this is a post about how I reworked Newslurp, a little app I coded four years ago (right before the Big Newsletter Boom thanks to Covid!). I switched RSS services at one point and was using a "subscribe to the newsletter from the service's email" feature, but the lack of polish in the app (and severe degredation of basic feed-reading) means I'm back on the market.
And rather than tying all my content to another proprietary app, I decided revive Newslurp so I could keep better control of everything. The app had a significant overhaul, with most of the email heavy lifting now being done in Google Apps Script (thus removing the need for Google API integration and the PECL mailparse extension, which is not readily available on shared hosts).
I also switched from MySQL to SQLite (because this is not really an application that needs a whole MySQL DB), and updated the code/dependencies to run on PHP 8.2
My biggest takeaway from the whole thing is that while I really love types, PHP does not make it easy to use them properly with collections or array-like objects. Yikes.
As always, I hope this is in some way helpful to others, but mostly it's helpful to me! Enjoy.
Sadly, I had to cancel my talks at both concerences due to a back injury. Hopefully I'll be able to get back out there once it's all healed up.
I'm headed back to the Midwest to do some speakerizing again in August 2024.
Beer City Code 24 is in Grand Rapids, MI, on Aug 2-3. I'm super excited to present a workshop, Improv for Developers, which is where we'll do actual improv training and then talk about how those skills translate to software development. It's 6 hours (!!), but it should be a lot of fun!
I'll also talk about greenfield development: specifically, that it doesn't really exist anymore. There are always preexisting considerations you're going to have to take into account, so I'll give some hard-won tips on sussing them out.
DevUp will be held in St. Louis on Aug. 14-16. I'll be talking about greenfields again, as well as reasons scrum-based development tends to fail, and how we can measure developer productivity.
Hope to see you this summer!
Though I am no great fan of AI or its massively over-hyped potential, I also do not think it's useless. As Molly White put it:
When I boil it down, I find my feelings about AI are actually pretty similar to my feelings about blockchains: they do a poor job of much of what people try to do with them, they can't do the things their creators claim they one day might, and many of the things they are well suited to do may not be altogether that beneficial.
I wholeheartedly agree with those claims, and don't want to get into the specifics of them too much. Instead, I wanted to think out loud/write about why there's such a wide range of expectations and opinions on the current and future states of AI.
To get the easy one out of the way: Many of the most effusive AI hype people are in fit for the money. They're raising venture capital by saying AI, they're trying to get brought in as consultants on AI, or they're trying to sell their AI product to businesses and consumers. I don't think that's a particularly new phenomenon when it comes to new technology, though perhaps there is some novelty in how many different ways people are attempting to get their slice of the cake (companies cooking up AI models, apps trying to sell AI generation to consumers, hardware and cloud providers selling the compute necessary to do all of the above, etc.).
But once we take pure profit motive out of the way, there are I think two key areas of difference in people who believe in AI wholeheartedly and those who are neutral to critical.
The first is software development experience. Those who understand what it actually means when people say "AI is thinking" tend to have an overall more pessimistic view of the pinnacle of current AI generation strategies. In a nutshell, all of the current generative models try to ingest as much content of whatever thing they're going to be asked to output. Then, they are given a "prompt," and they are (in simplistic terms) trying to piece together an image/string of words/video that looks most likely based on what came for.
This is why these models "hallucinate" - they don't "know" anything specifically in the way you know that Washington, DC is the capital of the United States. It just knows that when a sentence starts "The capital of the United States is" it usually ends with the words "Washington, DC."
And that can be useful in some instances! This is why AI does very well on low-level coding tasks - a lot of the basics of programming is pretty repetitive and pattern-based, so an expert pattern-matcher can do fairly well at guessing the most likely outcome. But it's also why AI developer assistants produce stupid mistakes, because it doesn't "understand" the syntax or the language or even the problem statement as a fundamental unit of knowledge. It simply reads a string of text and tries to figure out what would most likely come next.
The other thing you learn from experience are edge cases, and specifically what doesn't work. This type of knowledge tends to accumulate only through having worked on a product before, and understanding how different pieces come together (or don't). AI lacks this awareness of context, focusing only what immediately surrounds the section it's working on.
But the other primary differentiator is for the layperson, who can best be understood as a consumer and it can be condensed to a single word: Taste.
I'm reminded of a quote from Ira Glass I heard on some podcast:
... all of us who do creative work ⌠we get into it because we have good taste. But itâs like thereâs a gap, that for the first couple years that youâre making stuff, what youâre making isnât so good, OK? Itâs not that great. Itâs really not that great. Itâs trying to be good, it has ambition to be good, but itâs not quite that good. But your taste â the thing that got you into the game â your taste is still killer, and your taste is good enough that you can tell that what youâre making is kind of a disappointment to you ...
I think this is true, and I think it's the biggest differentiator between people who think what AI is capable of right now is perfectly fine and those that think it'll all wind up being a waste of time. People who can't or are unwilling create text/images/videos on their own think that AI is a great shortcut. This is either because the quality of what the AI can produce is better than what they can do unassisted, or they don't have the taste to see the difference in the first place.
I don't know that I think there's a way to bridge that gap any more than there is to explain to people who think that criticism of any artform is "unfair" or that "well, could you do any better?" is a valid counterpoint to cultural criticism. There are simply those people whose taste is better than that what can be created only through an amalgamation of data used to train a model, and those who think that a simulacrum of art is indistinguishable (or better) than the real thing.
Hopefully your organization has excellent legal representation. Also hopefully, those lawyers are not spending their days watching you code. That's not going to be fun for them or you. You should absolutely use lawyers as a resource when you have questions or aren't sure if something would be covered under a specific law. But you have to know when to ask those questions, and possess enough knowledge when your application could be running afoul of some rule or another.
It's also worthwhile to your career to know these things! Lots of developers don't, and your ability to point them out and know about them will make you seem more knowledgeable (because you are!). It will also make you seem more competent and capable than another developer who does not â again, because you are! This stuff is a skillset just like knowing Django.
Let's dive inBy far, the biggest reason I see scrum failing to deliver is when the ceremonies or ideas or data generated by scrum gets used for something other than delivering value to the end users.
Itâs completely understandable! Management broadly wants predictability, the ability to schedule a release months out so that marketing and sales can create content and be ready to go.
But thatâs not how scrum works. Organizations are used to being able to dictate schedules for large releases of software all at once (via waterfall), and making dev deliver on those schedules. If youâre scheduling a featureset six months out, itâs almost guaranteed youâre not delivering in an agile manner.
So how do we fix scrum?The Game is a mind game in which the objective is to avoid thinking about The Game itself. Thinking about The Game constitutes a loss, which must be announced each time it occurs.
The programming version of The Game has the same rules, but you lose if you think about David Heinemeier Hansson (aka DHH).
And no, I'm not linking to why I lost today.
It took me a long time to read this book. Not because of the quality (it was softly mesmerizing, to no surprise), but because it's the second in what I assume is to be a trilogy. I kept seeing it in my TBR pile and would go to read it, before remembering that, once I finished it, there would only be one more chance to enter this world for the first time. So I put it off.
It was worth the wait.
Katia Rose's remote Vancouver (BC) campground â where these stories take place â even makes me, an avowed inside-only kitty, want to drive out and pitch a tent in the wilderness. Though perhaps there was a touch too much romanticism in the wild's seduction of the main character city girl, it's described with such loving detail that it's impossible not to get swept away.
The characters, as is always the case with Rose, are painstakingly crafted with realistic backstories, baggage, fears and doubts. But even grounded in realism, the sparks between the two main characters (Kennedy and Trish) are more than enough to convince of the romance catching hold, sweeping them away.
I thoroughly enjoyed this book, and wait with some trepidation for the last entry. It can't come soon enough and yet, I know, I'll have to wait to read it.
I can't explain how this feels.
Athletics bans don't affect me, personally, in terms of preventing me from playing sports - I'm well beyond the age or ability for it to matter.
But that fact doesn't make it feel any less like another punch to the head, another hit to the gut, another in a long line of kicks when I already feel so beaten down.
I can't explain this feeling.
It's yet another way of being told that we're different, separate from, less than. Trans women are women except. Trans men are men but.
It's especially disheartening when so many struggle to have even the basic aspects of their dignity respected (names, pronouns, getting an education, not getting fired for existing while trans). Time and again, the only concrete actions taken are to strip more from us.
I can't feel.
It's a systematic desecration of our humanity, a systemic approach to telling us not only do we not belong, but that we shouldn't exist.
A cistem built on our destruction.
I can't.
I grew up on Clean Code, both the book and the concept. I strove for my code to be âclean,â and it was the standard against which I measured myself.
And I donât think I was alone! Many of the programmers Iâve gotten to know over the years took a similar trajectory, venerating CC along with Code Complete and Pragmatic Programmer as the books everyone should read.
But along the way, âcleanâ started to take on a new meaning. Itâs not just from the context of code, either; whether in interior design or architecture or print design, âcleanâ started to arise as a synonym for âminimalism.â
I wanted to find an approach, a rubric, that allowed for more specificity. When I get feedback, I much prefer hearing the specific aspects that are being praised or need work on - someone telling me âthat codeâs cleanâ or not isnât particularly actionable.
We call it CPM nowWhen I gave my talk, "That's not real scrum: Measuring and managing productivity for development teams" at MiTechCon 2024 in Pontiac, MI, there were a number of great questions, both in-person and from the app. I collected them here, as a supplement to the accessible version of the talk.
Q: What are best practices on implementing agile concepts for enterprise technology teams that are not app dev (e.g., DevOps, Cloud, DBA, etc.)?
A brief summary: 1) Define your client (often not the software's end-user; could be another internal group), and 2) find the way to release iteratively to provide them value. This often requires overcoming entrenched models of request/delivery â similar to how development tends to be viewed as a "service provider" who gets handed a list of features to develop, I would imagine a lot of teams trying to make that transition are viewed as providers and expected to just do what they're told. Working back the request cycle with the appropriate "client" to figure out how to deliver incremental/iterative value is how you can deliver successfully with agile!
Q: How do I convince a client who wants stuff at a certain time to trust the agile process?
There's no inherent conflict between a fixed-cost SOW and scrum process. The tension that tends to exist in these situations is not the cost structure, but rather what is promised to be delivered and when. Problems ensue when you're delivering a fixed set of requirements by a certain date - you can certainly do that work in a somewhat agile fashion and gain some of the benefits, but you're ultimately setting yourself up to experience tension as you get feedback through iterations that might ultimately diverge from the original requirements.
This is the "change order hell" that often comes with client work â agile is by definition flexible in its results, so if we try to prescribe them ahead of time, we're setting ourselves up for headaches. That's not to say it's not worth doing (the process may be beneficial to the people doing the work if the waterfall outcome is prescribed), but note (to yourself and the client) that a waterfall outcome (fixed set of features at a fixed date) brings with it waterfall risk, even if you do the work in an agile fashion.
It is unfortunately very often difficult, but this is part of the "organizational shift" I spoke about. If the sales team does not sell based on agile output, it's very difficult to perform proper agile development in order the reap all its benefits.
Q: We're using Agile well; How do we dissuade skip-level leadership from demanding waterfall delivery dates using agile processes?
This is very similar to the previous answer, with the caveat that it's not on you to convince a level of leadership beyond your own manager of anything. You can and should be providing your manager with the information and advice mentioned in the above answer, but ultimately that convincing has to come from the people they manage, not levels removed. Scrum (and agile, generally) requires buy-in up and down the corporate stack.
Q: What are best practices for ownership of the product backlog?
Best practices are contextual! Ownership of the product backlog is such a tricky question.
In general, I think product backlogs tend to have too many items. I am very much a fan of expiring backlog items â if they haven't been worked on in 30 days (two-ish sprints), they go away (system-enforced!) until the problem they address comes up again.
The product owner is accountable for the priority and what's included or removed from the product backlog.
I kind of think teams should have two separate stores of stories: One is the backlog, specific ideas or stories that are going to be worked on (as above) in the next sprint or two), which is the product owner's responsibility. The second is a brainstorming pool â preferably not even in the same system (because it is NOT the case that you should be just be plucking from the pool and plopping on the backlog). Rather, these are just broad ideas or needs we want to capture so we don't lose sight of them, but from them, specific problems are identified and stories written. This should be curated by the product owner, but allow for easier/broader access to add to it.
Q: Is it ever recommended to have the Scrum Master also be Product Manager?
(I am assuming for the sake of this question that Product Manager = Product Owner. If I am mistaken, apologies!)
I would generally not recommend the product owner and the scrum master be the same person, though I am aware by necessity it sometimes happens. It takes a lot of varied skills to do both of those jobs, and in most cases if it happens successfully it's because there's a separate system in place to compensate in one or both areas. (e.g., there's a separate engineering manager who's picking up a lot of what would generally be SM work, or the product owner is in name only because someone else/external is doing the requirements- gathering/customer interaction). Both positions require a TON of work to perform properly - direct customer interaction, focus groups, metrics analysis and stakeholder interaction are just some of a PM's duties, while the SM should be devoted to the dev team to make sure any blocks get cleared and work continues apace.
But even more than time, there's a philosophical divide that would be difficult to resolve in one person. The SM should be looking at things from a perspective of what's possible now, whereas the PM should have a longer-term view of what should be happening soon. Rare is the individual who can hold both of those things in their head with equal weight; usually one is going to be prioritized over the other, to the detriment of the process overall.
Q: What is the best (highest paying) Scrum certification?
If your pay is directly correlated with the specific certification you have, you are very likely working for the company that provides it. Specific certifications may be more favored in certain industries or verticals, but that's no more than generally indicative of pay than the difference between any two different companies.
More broadly, I view certifications as proof of knowledge that should be useful and transferable regardless of specific situation. Much like Agile, delivering value (and a track record of doing same) is the best route to long-term career success (and hence more money).
Q: Can you use an agile scrum approach without a central staffing resource database?
Yes, with a but! You do not need a formal method of tracking your resourcing, but the scrum master (at the team level) needs to know their resourcing (in terms of how many developers are going to be available to work that sprint) in order to properly plan the sprint. If someone is taking a vacation, you need to either a) pull in fewer stories, b) increase your sprint length, or c) pull in additional resources (if availble to you).
Even at the story level, this matters. If you have a backend ticket and your one BE developer is out, you're not gonna want to put that in the sprint. But it doesn't need to be a formal, centralized database. It could be as simple as everyone noting their PTO during sprint planning.
I keep seeing the iPhoneâs popularity and sales numbers thrown around as proto-defenses against allegations of flexing monopolistic power in one category to dominate others.
âPopularityâ is an argument IN FAVOR of the the government, not a defense. The argument is that the iPhone is very popular and sold a lot, and Apple is using that position of strength to stifle innovation and hamper the growth of competitors in related categories (payments, apps, music services, etc.).
You can disagree with the suit all you want, just know what youâre arguing for and against.