Getting code to work on Windows as well as Linux absolutely butchers what was previously simple, elegant code.
All the messing about with different commands, with different dir seperators, hell, with different bloody paths even through SFTP – “/tmp” on Linux, “/C/Tmp” on bloody Windows. Vomit.
Winodws also totally ballsed up its build config. On Linux, build config is completely within the makefile; you need to have the compiler on the path, but that’s it. On Windows, you have to run a special batch file first, where the arguments to that batch file *depend on the type of build* – debug, release, which CPU, which Windows version…
So the platform code needs to know what the target is, to configure itself properly. Vomit.
In other news, at work today, I spent nine hours failing to set up Go with Protobuffers. I had the feeling I didn’t like Go, because it forces opening braces on the same line as the if/while/etc, which I can’t read and which should *NOT* be forced on the coder. Today I discovered, after nine hours of utter frustration, that indeed, I do *not* like Go. Now I know for sure. I never did get it working with protobufs. Slogged through idiotic problem after problem and in the end, protoc was producing output which contained circular dependencies (the output file imported itself).