B
Better Programming
betterprogramming.pub · Group blog · on HN since 2021
A Medium publication with articles by many authors on software engineering, programming languages, tooling and engineering management.
What HN saysHN links it for individual how-to and opinion articles, such as one on limiting GPU power consumption; commenters give no overall verdict on the publication.
319HN people shared it
45linked it in comments
540stories submitted
3.4Kstory points
2 years agolast shared
2021people per year2026
Most-shared posts
- 1GraphQL: From Excitement to Deception5 people · 6 points · first shared 2023 · 1 comments on HN
- 2You will always have more Problems than Engineers4 people · 22 points · first shared 2022 · discussion on HN
- 3Are pull requests holding back your team?4 people · 21 points · first shared 2021 · 3 comments on HN
- 4I Still ‘Lisp’ (and You Should Too)3 people · 23 points · first shared 2021 · discussion on HN
- 5Pandas Illustrated: The Definitive Visual Guide to Pandas3 people · 11 points · first shared 2023 · discussion on HN
- 6Techniques for Managing Your Time and Cognitive Load as a Senior Leader3 people · 7 points · first shared 2022 · discussion on HN
- 7Vim Best Practices For IDE Users (48 min read)3 people · 6 points · first shared 2023 · discussion on HN
- 8The Alternative to Performance Reviews for Software Engineers (2023)3 people · 3 points · first shared 2023 · 1 comments on HN
- 9Why Become a TypeScript Fan?2 people · 29 points · first shared 2021 · 78 comments on HN
- 10I Almost Got Fired for Choosing React in Our Enterprise App2 people · 22 points · first shared 2021 · 7 comments on HN
- 11Writing Code Is One Thing, Learning to Be a Software Engineer Is Another2 people · 21 points · first shared 2022 · 2 comments on HN
- 12Why Every Developer Should Start Programming with C2 people · 13 points · first shared 2021 · 4 comments on HN
- 13Mistakes to Avoid as a Software Development Manager2 people · 10 points · first shared 2021 · discussion on HN
- 14The Architecture of a Modern Startup2 people · 9 points · first shared 2022 · discussion on HN
- 15Stop Hiring Software Engineers2 people · 8 points · first shared 2022 · discussion on HN
What HN people wrote when they linked it
captn3m0 · 2023-12-14
I found it: https://jazzband.co/about/guidelines, but this is Python targeted.
https://adoptoposs.org/ is the next best thing to announce and find more maintainers. The announcement blog post has a few more links that might be of interest to you: https://betterprogramming.pub/how-to-keep-open-source-software-maintai…
anupamchugh · 2023-11-18
At least there's no accurate way for a search engine to check for originality. It's like asking a machine to evaluate other machines.
Here's the top-most featured snippet when I google if programming languages had honest slogans: https://medium.com/nerd-for-tech/if-your-favourite-programming-languag…
Half of the above post is plagiarised from my 2020 post: https://betterprogramming.pub/if-programming-languages-had-honest-slog…
syntaxing · 2023-10-01
Not OP, but you can limit the max wattage using nvidia-smi. Here's a good article with the instructions and how you would determine the best wattage.
https://betterprogramming.pub/limiting-your-gpu-power-consumption-migh…
MaxBarraclough · 2023-09-03
It's a standard phrase in the formal methods field, [0] emphasising that it's an alternative to the usual approach where we hope that our testing (which can never be complete) is enough to catch all the worrisome bugs.
Personally, this article didn't strike me as being very easy to follow, or as being the most compelling demonstration of the value of formal methods. At the risk of going off-topic: if you're not seeing the point, I recommend this example using SPARK, a non-functional language. [1]
[0] https://betterprogramming.pub/a-taste-of-coq-and-correct-code-by-const…
[1] https://docs.adacore.com/spark2014-docs/html/ug/en/tutorial.html#provi…
dangerlibrary · 2023-05-16
Because it follows the general principle of making it easier to change [0]. Fewer edits, cleaner diffs.
Useless from the perspective of a wire format, but nice for things like config files, which seem to be the use cases json5 is targeting.
[0] Bullet pt 3: https://betterprogramming.pub/5-essential-takeaways-from-the-pragmatic…
tbarn · 2023-03-23
I'd need to dig into the code, but it looks like someone has used PlanetScale with ent before: https://betterprogramming.pub/how-to-connect-ent-to-planetscale-in-a-g…
Did you follow that blog post already?
emredu · 2022-07-02
Highlights from the results:
1. Git Is the King: The Use of Git Is Increasing Year by Year
2. Version Control Universe: GitHub, GitLab, Bitbucket, Azure DevOps
3. Docker Usage Is Increasing Year by Year
4. Docker and Kubernetes Are in Every Developer’s Toolbox
5. Communication Matters: Developers Love Slack
6. You Probably Have Knowledge Silos As Productivity Killers
7. Smaller Organizations Often Tend to Be in the Office
8. Developer Experience: Processes, Tools, and Programs Within an Organization
Read More: https://betterprogramming.pub/stack-overflow-2022-developer-survey-whe…
rektide · 2023-04-24
Two core links,
"Why software engineering performance is hard to measure" shows a sample of dimensions we might assess developers on. It has some sample of dimensions we might perhaps use, just a starting place really, but not bad: high standards, delivery speed, reliability, team/company focus, open minded, & critical thinking. Ask yourself how many of these are easy to find good clear clean cut objective metrics we can assess people on.
https://betterprogramming.pub/software-engineering-performance-is-a-pr…
And my god, apennwarr's recent System designs 2: What we hope we know is such a wonderful lovely intimate post/ramble touching in a number of places around how we have to embrace real complexity. Science loves control & hard numbers, and in this quest it resists seeing things as they are, as an accrual of many factors: "scientists absolutely bloody despise emergent complexity → systems design → magical thinking."
Incredible post for a number of great reasons; this is just one. https://apenwarr.ca/log/20230415 https://news.ycombinator.com/item?id=35580776 (180 points, 9d, 27 comments)
Management like scientists wants nice neat objective tools to understand the world with, without ever having to deal with emergent complexity. Most performance metrics & OKRs end up being dehumanizing, shallow, low-context. (That said, I think they can be helpful for high-context folks to better understand situations near to them & how things change over…
thesuperbigfrog · 2022-08-24
You might want to consider how much Microsoft uses it in their own products before choosing to use it. This article describes the situation pretty well:
"not even Microsoft, literally the people who own Xamarin, use it in any of their big products like Teams, Outlook, and the list goes on. Instead, they reach for native development or Electron. So we can just tie a bow in it and have a minute's silence for another end-of-life cross-platform software development framework."
"None of These Problems Are Solved With MAUI. The poor developer experience, how apps look, XAML being a pain, and these other core issues won’t be resolved by MAUI. So, if you already know Xamarin Forms, and you’re waiting for MAUI to land, but you’re not 100% thrilled with the experience so far, then it’s a great opportunity to think about learning something else."
Source: https://betterprogramming.pub/xamarin-forms-is-dying-and-maui-may-not-…
0xbadcafebee · 2022-08-19
The best guide to using Bash is to read the manual (https://linux.die.net/man/1/bash).
Nobody who has ever used Bash has read the whole manual. It is actually good and useful, please read it. Yes, it is very big. But you will be using this shell for the rest of your life (even if you use Zsh, you will end up using other people's Bash scripts). Consider it an investment in your future.
...and now that I say that - try to restrict shell scripts to POSIX semantics (https://betterprogramming.pub/24-bashism-to-avoid-for-posix-compliant-… POSIX is very simple and most shells can run it. If you need a Bashism, try Bash v3 first so it works on a Mac without Homebrew. Simple is better/portabler than complex. If you need something Bash doesn't provide, use any language that the majority of your team knows well.
If you want to test a specific version of Bash, there's containers @ https://hub.docker.com/_/bash (Macs use v3.2.57). Test POSIX scripts with `bash --posix`. Definitely use Shellcheck.
sunny--tech · 2021-10-26
Are you talking about just people in the CS program or all university programs? My first pass through college was in oceanography and I definitely didn't treat it as a bootcamp. I had no idea what my job prospects would be like after graduation. I just knew I liked the ocean.
In terms of CS, I'm sure most of them are going for a job. But the fact that those who aren't isn't 0%, it makes it difficult to compare.
Also, the reasons for people not graduating college and not graduating from a 3-6 month bootcamp will likely differ as well. 4 years is a long time. There are many reasons why someone might drop out. So again, comparing graduation rates and job placement rates between uni and bootcamp won't really tell you much useful data, especially if you're trying to compare which one prepares students better.
And just to be clear, I'm not saying Uni is better or defending it. I have my own with college [1]. But I see too many people trying to deflect criticism from bootcamps when those criticisms are very well justified.
[1] Is a Computer Science Degree Worth It?: https://betterprogramming.pub/is-a-computer-science-degree-worth-it-8a…
ChrisMarshallNY · 2021-10-01
I feel as if the article is a bit of “tea leaf reading,” but it does make sense.
> A verifiable track record is overlooked, while CVs filled with adjectives top the stack.
This is not new, but I do believe it has reached a crisis point, in tech. I’ve often posted about my own travails with this.
The most annoying thing, to me, is, despite all the hoopla about “disruption,” companies hire for conformity. They always have, but the screeching about being “disruptive” is fairly recent.
Protip: you won’t “disrupt,” if you hire people that “won’t rock the boat.” Truly innovative workplaces aren’t necessarily comfortable (especially for management).
It’s like classic waterfall companies that claim to be “agile,” because they have daily meetings.
I thought this linked article was interesting: https://betterprogramming.pub/why-software-companies-often-reject-awes…
axelut · 2021-09-17
From a design perspective this looks really good, I like the components, the typography, the generated pages from Figma etc. Also the documentation seems to be clean and user-friendly. It's way better than most of the docs.
From the development perspective and from other comments that are here, and also from many articles like: https://dev.to/jaredcwhite/why-tailwind-isn-t-for-me-5c90 or https://dev.to/neophen/tailwind-is-bad-because-i-don-t-like-it-24eh or https://betterprogramming.pub/tailwind-css-is-probably-overhyped-5272e… you can see that there are still a lot of people who hate the way Tailwind work with classes. But in the same time you can see that they have a steady grow month over month since April 2019: https://www.similarweb.com/website/tailwindcss.com/ that means some people love the way Tailwind is working with utility classes.
So I think this is a really good extension that can speed up the development process of people who like Tailwind. For those who don't like Tailwind, there are many other alternatives. There is no such thing that can fit for everybody.
Some questions
1. What did you use to create the docs?
2. What are your next steps with this project?
sargstuff · 2025-01-03
Engineers log/blog!! and informal team interaction (documentation, notes, etc) : http://betterprogramming.pub/advices-from-a-software-engineer-with-8-y…
-----------
Leading Effective Engineering Teams : http://www.oreilly.com/library/view/leading-effective-engineering/9781…
The Pragmagic Engineer (various formats: youtube / news letter / book(s) ) : https://news.ycombinator.com/item?id=42584241
adastra22 · 2024-02-17
You don’t need the OSX SDK to make runnable Rust binaries from other OS: https://betterprogramming.pub/cross-compiling-rust-from-mac-to-linux-7…
BoorishBears · 2023-10-26
No they don't, hence projects like https://open-next.js.org/ and the multitude of stories of 3rd party serverless offerings being half-broken. They also keep breaking at time goes on since they're playing catch up on the build output:
https://www.reddit.com/r/nextjs/comments/1685dyr/avoid_aws_amplify_at_…
https://www.reddit.com/r/nextjs/comments/160ui01/is_aws_amplify_good_f…
https://betterprogramming.pub/beware-of-next-js-on-aws-amplify-5a1286d…
_
To actually use the build output format, you need an implementation that Vercel does not open source.
Compare that to Remix which maintains an open reference implementation for their adapter format, which in turn makes supporting additional platforms incredibly simple.
avastmick · 2023-09-17
My take is that it is attempting a similar “intervention” as the Agile Manifesto did, but less well thought through or phrased.
The data science/ engineering domain appears to often produce outcomes like a good deal of 1990s software projects - projects that don’t produce good or expected results [0].
I posted a counterpoint recently [1] that said we should stop approaching data engineering like software engineering. Given what appears to be an almost endless number of data projects that produce little to no value to businesses, what should data professionals do to address the problem? This manifesto at least attempts to make a statement.
[0] I contributed to many of these at the beginning of my career!
[1] https://betterprogramming.pub/data-engineering-is-not-software-enginee…
cleue · 2023-08-22
One of the design aspects is to make a distinction between functions with and without side effects (pure). In a way to tell these apart by looking at the function signature without having to read the function body.
The library uses a function signature without an input but with an output for this purpose. Aside from the trivial case of a constant function, such a signature can only mean that the function has side effects.
type IO[A any] func() A
If you consider this a valid approach, then the set of monadic helper functions make it easier to compose these effectful functions with pure functions.
This article https://betterprogramming.pub/investigating-the-i-o-monad-in-go-3c0fab… contains some more detailed reasoning.
andrewl · 2023-03-08
Yurii Rashkovskii, the developer, wrote a short intro last month:
https://betterprogramming.pub/what-happens-if-you-put-http-server-insi…
gerad · 2023-02-11
No. But sometimes goroutines have the opposite problem, where they don’t terminate and get cleaned up.
https://betterprogramming.pub/common-goroutine-leaks-that-you-should-a…
axi1 · 2023-01-27
The proper (free) link is https://betterprogramming.pub/pandas-illustrated-the-definitive-visual…
timdellinger · 2023-01-27
This seems to be getting the Hug of Death, but this looks like the content:
https://betterprogramming.pub/pandas-illustrated-the-definitive-visual…
hosh · 2023-01-27
I don't know Python or Rust well, but I think this is the problem:
https://betterprogramming.pub/the-dangers-of-async-in-python-and-how-t…
And this is how some people are solving it:
https://async.rs/blog/stop-worrying-about-blocking-the-new-async-std-r…
This is how it works in BEAM:
https://github.com/happi/theBeamBook/blob/master/chapters/scheduling.a…
The commonality is to limit execution time and yield (preempt) so something else can run too.
rbanffy · 2023-01-27
@dang can you replace the link with the original? https://betterprogramming.pub/pandas-illustrated-the-definitive-visual…
Kalanos · 2023-01-26
Python: SQLite ORM with PeeWee + realtime UI with DashPlotly
https://betterprogramming.pub/dash-is-deeper-than-dashboards-5ab7414f1…
henryfjordan · 2023-01-13
React at it's core is a function (or set of functions) that interpret strings like "h1" into DOM elements in a browser.
JSX is a shorthand for writing those function calls. <h1> becomes React.createElement("h1"). Sure you are still largely using HTML element names, but that's only because people don't really use JSX for anything else. The whole point is that it's easier to write JSX than the underlying function calls.
You can use JSX to target things other than DOM by supplying your own function instead of React.createElement(). Here's an example of an express web-server using JSX: https://betterprogramming.pub/how-to-create-a-web-server-with-jsx-1b3d…
revit12 · 2022-11-30
The URL redirects to a 404 page. Seems like this is the correct one:
https://betterprogramming.pub/the-ultimate-domain-language-declarative…
krapp · 2022-11-26
I don't know if C++ counts as a "GC language" per se, but you can write custom allocators for STL containers (eg here: https://betterprogramming.pub/c-memory-pool-and-small-object-allocator…
forgotpwd16 · 2022-09-10
Why shortened link? https://betterprogramming.pub/i-built-a-mix-between-youtube-and-visual…
theonemind · 2022-08-19
POSIX most definitely does not specify bash. People typically use the word "bashism" for POSIX-shell-incompatible bash behavior used in shell scripts.
random high result from googling "bashism":
https://betterprogramming.pub/24-bashism-to-avoid-for-posix-compliant-…