@mw50
formerly known as M
Nothing here yet.
Nothing here yet.
No blogs yet.
There are quite some things that can cause strange behaviour, I'm not familiar enough with Swift/Metal to know if they apply... Could you have allocated memory that wasn't initialized? I don't know that exists for Swift, but some compilers have flags to initialize all memory. You could initialize all floats as NaN to more quickly catch use of uninitialized memory. Could there be dangling references (accessing memory that is no longer used)? There are also compiler flags for that in some languages (mudflap). Maybe a problem with Swift's reference counting and a pointer still existing that isn't being counted? Is there any concurrency? That's a common cause of non-determinism. If it can be temporarily disabled, that'd be a good way to test if it's happening. If it's happening, I hear Go has a race detector, but I don't think that's commonplace... Or it could just be a bug where things are being modified that you didn't think were being modified. Some languages are better at preventing these problems than others (and prevention really is preferable for this), but I doubt you have the choice of rewriting in Rust or Haskell or something...
Well the not-so-useful answer is that it's a good idea to rewrite a codebase if it'll save effort in the long run, and the company is in a good position to make long term investments. So some considerations: Keeping terrible code and starting from scratch aren't the only two options; gradually fixing things is another one. If it's mainly maintenance without many new features, having better code probably won't save much time. How terrible it is, and in what way, affect the choice. I.e. code duplication can be solved gradually. Making columns unique can be tricky, but you probably couldn't throw away the data even if the code is rewritten, so might as well solve that gradually. Code that is badly written looks like it didn't take much time, but there's likely a large amount of bugfixing time in there. Some of the bugs are due to bad code, but others will pop up again if you start from scratch. This old article by Joel Spolsky is interesting.
I briefly looked into gRPC. But I wanted to do RPC requests in both directions (I guess maybe that's not really RPC but I wanted blocking request/response conversations). So I didn't end up using gRPC. But I did use protobuf, which is the schema specification used by gRPC. It's quite nice. The format is simple and clean and there are bindings for many languages. Not as expressive as XSDs but much more simple and fast. It has a strong focus on compatibility with old interfaces, which results in things like all fields being optional, which I'm not super fond of.
EDIT Sorry I missed the browser part, so this answer may be irrelevant. You should probably use some engine which already includes a lot of logic that many games use. You'll spend many months building it yourself, otherwise. Unity seems to be a popular one. I believe that for professional game development, C++ is the dominant language. But others are also used, especially for smaller projects. Open source is nice because people might help you. That is very unlikely until you have some working version though - there are a lot more aspiring game designers in need of help than there are programmers with too much time. Another advantage of open source is that others can reuse parts of your code (which is clearly an advantage for them more than for you).
I think it could have some use. I can usually make myself understood in English, but I noticed there are some topics I can hardly talk about, because I never learned the vocabulary for it (but can in my native language). Like cooking ingredients or vehicle maintenance. Maybe for others it's programming. That said, for me personally, I don't feel I need such a course, so I wouldn't attend. I learned all the programming stuff from English websites so I can express myself better in English than in my native language when it comes to programming.
I don't quite get the "do it all yourself" mentality on here. You're not writing your own memory allocator for a website, right? You don't actually need to understand everything you use all the way down to the bits going through the CPU. I'd say use the framework, it'll be done faster, and you'll still learn a lot. It'll just be different things, and you'll be learning them by example rather than by mistake.
I like to think I have only some customization, and it certainly looks that way in this thread. But I guess compared to 'normal' people (i.e. the type that doesn't parttake in threads like this one) it's still a lot. It's basically some configuration scripts, several dozen default softwares, 100-200 aliasses, a few browser extensions (some self-made) and a whole bunch of custom hotkeys. It doesn't seem like much to me, but it's apparently enough to make my computers nearly unusable to colleagues or family people.