I've always wondered, why ASCII codes were designed like this. But after I learned it originated in punch cards and low bit computers back in 1960s, it started to make sense.
The best punch card design demonstration is Null and Delete. Null in 7-bit binary is “0000000” (no hole punched) and Delete is “1111111” (all holes punched, as an ultimate replacement for whatever was there before).
Latin alphabet starts at 65 for “A”, which is “1000001”. Looking at it, you just put away the first/leftmost “1” and you end up with a binary number for your letter: 1 for A, 5 (binary 101) for E etc. It's really clever and as simple as that.
The reason there are some other characters in between uppercase and lowercase letters is there are only 26 letters, but 32 places. The design allows binary difference of just a single bit between letter cases: “A” is “1000001”, while “a” is “1100001”. The principle stays for lowercase letter the same, with the only difference you put away leftmost “11”.
Similarly, dollar sign is “100100” and number 4 is “110100”. But why those two? Well, look at your keyboard... ;-)
So the “Shift” key is often just shifting one bit in the underlying binary code for the altered key.
Some earlier variants of the ASCII table allowed to be cropped for six-bit computers, which would only use uppercase letters - either using codes from 32 to 95, coded as 0-63 (DEC SIXBIT), or keeping those at 32-63 and subtracting 64 from higher values. Because this also removed control characters, it wasn't suitable for text processing.
Fun Fact 1: I realized, that Morse code is actually a five bit encoding.
Fun Fact 2: UTF-8 is even more brilliant and amazing.
I was hired to create an integration platform between custom backend and WordPress, PrestaShop, Moodle and payment gateway. The idea was to create an e-learning platform, where users can publish content, shop for on-line courses and study, using video lectures, reading materials and tests.
In fact, I was hired to take over from two other guys, who failed to deliver. I honestly didn't understand how they could be so incompetent! I offered Qedy and managers agreed to further extend and expand it, which was really tempting for me, so I took the opportunity.
I was waiting for specifications and in the meantime I was working hard on a middleware, that will be flexible enough to catch whatever they throw at me. I had a complete freedom, which was truly magnificent. During the time I was briefed about the concept to get an idea what I'm building the middleware for.
I finished API integrations with all four systems and when I presented an early version, I was told there's no need to integrate WordPress. Ok, never mind, it was the easiest one to do anyway.
When I finished all workflows and was ready to tailor it, I was asked, how to create a booking for a real-life course. Umm, what? The original premise was all courses are on-line! “No, we already have a client, who wants to do a real-life courses”, the manager said.
So I tried to customize PrestaShop to include dates for that, but the integration was too complex, with double-nested entities. E-shop is simply not a reservation system.
Therefore I proposed I'll use Qedy to create a custom reservation system instead, which will dub as an e-shop as well. They understood there's no other way, so they agreed.
In the following months I worked more closely with the management and on almost every weekly meeting they either altered the specification, described the system in the way I heard numerous times before, or asked for a feature which was out of scope.
I started to understand, why those guys didn't deliver.