On not writing project requirements down

There was a project the customer provided only very vague requirements for. They were also prone for an unexpected changes and the customer was absolutely reluctant to provide a write-up of them after multiple requests. I wanted to ditch the project entirely, but the client persi…

Wiring is an art too

I've spent last two days wiring a machine, so no programming post today. I do not do this work too often, but when I do, it is a relief. It is a form of art. It is not the same kind of art as programming is, though. With the wiring, the results are far more palpable and far less …

Using long commit message description

I have stumbled upon the short post that contained the following: ~200 lines of commit message for +5/-8 change @ #FreeBSD: https://freshbsd.org/freebsd/src/commit/9a2fac6ba65fbd14d37ccedbc2aec27a190128ea This obviously made me think. Is such a long description necessary? And i…

Rotating QR codes in Zebra ZPL

I have discovered a strange behavior when instructing Zebra GK420t printer to make stickers containing some text and a QR code. Consider the following example: Both QR codes are perfectly fine. They both can be printed with moth printers, including the trusty GK420t and they bot…

Thoughts on the bee weighter project

I was able to put the bee weighter project to some tests. Some thoughts and insights from the process. Three rechargeable AA batteries gave out 4V under the minuscule load the electronics represent, even including the load from the internal voltage regulator. I was expecting them…

Unexpected naming conventions

In IEC 61131-3 compatible programming environments, string manipulation have many inbuilt functions. Unfortunately, sometimes the routines are a little bit hard to find. Even though it is possible to do a search through available functions, just searching by name sometimes won't …

How many bytes does time and weight need?

In my previous article I have explained how to divide the memory into equal parts, so called blocks. I have concluded that to utilize the entire memory, I could divide it into 256 blocks of 16 bytes or maybe even 128 blocks for 32 bytes. Having full 32 bytes seem like the overkil…