One year ago I looked around for existing tech that would provide me with compile-time guarantees for a REST-ish API interface. With full-stack TypeScript web applications reaching a level of maturity where I, a previously die-hard Rails developer, felt comfortable taking the dive - it seemed like the Node ecosystem was lacking in ties between the front end and back end.
What is BrainFuck? BrainFuck is an esoteric programming language designed specifically to be easy to compile. The environment provides the programmer with an “infinite” array of bytes (traditionally just 30,000) and a data pointer. There are only 8 single character commands:
A common riddle-like question for programmers asks them to swap the values of two integers without a temporary intermediate value. There are two common solutions that I’m aware of, addition swap and XOR swap. Here’s what each looks like in C:
Shaders provide programmers with a beautiful combination of art and math. Most other throwaway projects are devoid of any artistic value. In less than a dozen lines of code you can draw fractals. A few more and you can start creating intricate animations. The most interesting part is the unique perspective they force you into.
Say you want to draw a circle in an imperative programming language. You need to break out a for loop and calculate the sin
and cos
of different angles until you have points all around the circumference of a circle.
The intention is to force myself to get a small taste of a bunch of new programming languages and programming paradigms. Since I was late to the party I rushed through the first 4 problems in languages I’m familiar with. But for day 5 I solved the daily problem with MIPS assembly. I look forward to learning and writing Common Lisp, Haskell, Prolog, and many more languages.
One hope I have is to complete a problem in GLSL. I’m already somewhat familiar with GLSL, but given its intended purpose it should be a true feat if it works.
After a stroke of inspiration earlier this evening I hacked together this tool. It produces a stacked time-series graph of GitHub commit data. The commit data is organized by language and uses the same colors as GitHub for each corresponding language.
It’s very common for high-school students to learn the geometry of a circle.
Trigonometric functions (sin()
, cos()
, etc.) are required knowledge for
high-school graduates, and they have a close relationship to circles. This means
that most students have seen the equation for a unit circle:
How images are rendered
Imagine your computer is rendering an image of a tomato on top of a table. In order to render the image each of the 1920 * 1080 pixels on your screen needs to have colors assigned to them. This isn’t as easy as viewing a video or an image. The tomato can be viewed from any angle, and the pixels will need to be recalculated many times every second to produce a smooth animation.