What I think about when I edit — Eva Parish
A good overview of what to look out for when writing, technical or otherwise.
Recent content on peanball.net
A good overview of what to look out for when writing, technical or otherwise.
A good guide to gain small and big wins.
First off, if you can have a real network cable, use that. As temporary measure I set up a powerline connection between the apartment and basement. Connection speeds vary quite a bit and I wanted to be able to monitor reported network speeds.
An interesting view of how the world changes from solving problems to supporting others in solving problems.
There’s nothing more powerful than a developer with a good debugger and the knowledge of how to use it.
A detailed breakdown of my OpenWRT Router setup on a Raspberry Pi 4. Alternative titles for this project could be: Over-Engineering a Router , or My Home Server runs on OpenWRT .
Admittedly, I’m often too positive on assumptions and not sceptical enough. This is a good article to help fix that or change the approach.
Another article of why Microservices might not be the right solution to your problem.
I aspire to at least have a pull request with those features. Generous use of git rebase make it possible for very commit. This requires some planning ahead and cleanup but makes reviews now or later so much easier.
In my career I’ve been all these roles at one point or another, but at smaller sizes. My current role fits neatly into the Team Lead . There are aspirations for Architect though.
A short overview for strategies on how to get better at debugging. In short: know the code know your tools know yourself know how to approach problems
A guide on how to share the network namespace with another container. This is how a Pod in Kubernetes contains multiple containers. If you’re not working with Kubernetes but e.g. with Docker or docker-compose , this works in the same way pretty much.
TDD often makes your design better! My point is that it can also make your design worse. Some TDD is better than no TDD, but no TDD is better than excessive TDD. TDD is a method you use in conjunction with other methods. Sometimes you’ll listen to the methods and they’ll give conflicting advice. Sometimes, TDD’s advice will be right and sometimes it will be wrong. Sometimes it’ll be so wrong that…
Finally I found the missing link to set up EDID overrides on Big Sur and later, where System Integrity Protection (SIP) is enabled. In short, MacOS also takes overrides from the path /Library/Displays/Contents/Resources/Overrides , which is admin writable.
Most companies and projects are by far not big enough to benefit from microservices, and not good enough to deal with the implications and repercussions. There’s a reason “distributed systems” are hard: it’s the next difficulty level after multi-threaded concurrency — harder to observe, harder to reason about.
The aspect of “transaction cost” for doing a particular thing once or multiple times is interesting. Starting a bunch of things in parallel will often lead to many being finished at a similar point in time, often all at once and leading to the dreaded ‘big bang integration’, which even in short sprints may be painful enough already. That said, I love starting multiple things at once. Sometimes…
A follow-up to the question whether we do REST wrong that provides examples of what constitutes a fully RESTful service.
And here I thought I knew full well what RESTful APIs had to look like. The constraint in my head was that individual resources (e.g. items in a database) should have their own URL and you used the HTTP verbs ( GET , POST , DELETE , etc.) correctly. What was missing from that is the Hypermedia aspect, where each response defines the appropriate URLs for the possible next steps.
“Be an engineer, not MacGyver.”
Always work at a place where you and your colleagues give a shit about the product(s), the work, and the people around them.
An interesting look at how long lead times from idea to specification to implementation to release can cause waste in the software development process.
A deep dive into the protocol powering HTTP/3 and others, implementing a lot of TCP and supporting encryption at all steps.
An excellent guide I found via Tim Bray’s blog ‘ongoing’ - Making Code Faster .
At work I develop in Go and this is a good list of things to look out for and avoid.
I‘m learning about eBPF. It’s an absolutely fascinating technology.
“The only purpose of a plan is to ensure better results, it has no value in itself. And as James wrote, we must know what to overlook, as sometimes it is better to have no plan at all.” I value knowledge and being able to respond or adapt when it’s needed over obsessive planning of details that will be wrong the second you get to working on something. Many people are able to adapt and figure out…
An interesting and apt breakdown of team types. I work in neither a product nor a feature team at the moment but am trying to add more product thinking into my own work and then my team’s.
Grep doesn’t handle capturing groups, but with lookaround you can match and exclude prefixes. This leaves you with the part of the pattern that you needed.
Getting back to a defined and known state is a great way to recover. I found the concept of ‘crash-only-software’ very interesting, and the described approach of inevitable improvement and resilience from software that rather crashes than being in an unknown state. If it keeps crashing and you depend on it, you will get to understanding and fixing the issues quicker.
For a long time I’ve had the domain codedesigner.de but went by the name peanball everywhere else. Now I’ve registered peanball.net .
I use the macOS proxy icon all the time. For me it is one of the most useful features on day-to-day use of macOS. Having it available at all times, not after hovering and an animation is great.
At work I help maintain a platform used for microservices. This article helps ask the question whether microservices are the right approach for that particular application or system at all.
I’m using omxplayer on the Raspberry Pi for video playback because it utilizes the Raspberry Pi’s hardware video decoding. Because the front-end is a separate application, I just need to remote control OMX Player to start and stop the video and figure out how far the video has played back already.
In one of my hobby projects I needed to display additional information on top of a running video. The whole project is based on the Raspberry Pi and Python. This article describes the approach I’ve taken to display arbitrary content over the video with the help of the very flexible (and admittedly awesome) Kivy framework.
I’m working at a software company. One of our side projects is the integration of new control concepts and input devices to robotic control. We’ve integrated a couple of input devices and can control different rovers. One of them is the one I built.
While browsing for different breakout boards for the Rover I’ve discovered a nice little board that has a push button and logic pin to control a MOSFET. This little contraption allows switching on and off the power, say through a USB cable.
The Raspberry Pi has only a single PWM output. The Dagu Rover 5 chassis has 4 motors and 4 optical encoders that need reading as well. So my approach was to get a PWM servo/logic controller that could control the Dagu Motor Controller and additionally some servos for the camera pan/tilt.
I’ve updated the skin on the web site for something better looking. It’s based on the UP skin.