Programming Leftovers
-
Adding For Loops to an Interpreter
I’m in the middle of a programming retreat at the Recurse Center (W2’23), and one of the projects I’ve been working on is an interpreter for a language I designed called nodots.
It’s called nodots because I had some trouble in a previous language when it came to mutating via dot access. So I decided: no dots this time (okay, fine, you can use dots for floats).
It’s a dynamic language with strong types. It’s got variables, functions, logic, and a few more things — but no for loops (yet).
-
Origins, Sites and other Terminologies
In order to fully discuss security issues, their common root causes and useful prevention or mitigation techniques, you will need some common ground on the security model of the web. This, in turn, relies on various terms and techniques that will be presented in the next sections.
Feel free to skip ahead, if you are familiar with some of the following concepts.
-
10 C++ Programming Tricks That You Should Know
C++ Programming Language is a powerful, versatile, and compiled language, which means the source code is converted into machine language before the execution. In order to make your code as efficient and effective as possible, you should be aware of the following tricks and techniques. Hence, it’s better to know some C++ tricks and tips to reduce a few lines of code.
-
Reverse Engineering a Neural Network's Clever Solution to Binary Addition
Even if this particular solution was just a fluke of my network architecture or the system being modeled, it made me even more impressed by the power and versatility of gradient descent and similar optimization algorithms. The fact that these very particular patterns can be brought into existence so consistently from pure randomness is really amazing to me.
-
[Old] The Bitter Lesson
This is a big lesson. As a field, we still have not thoroughly learned it, as we are continuing to make the same kind of mistakes. To see this, and to effectively resist it, we have to understand the appeal of these mistakes. We have to learn the bitter lesson that building in how we think we think does not work in the long run. The bitter lesson is based on the historical observations that 1) AI researchers have often tried to build knowledge into their agents, 2) this always helps in the short term, and is personally satisfying to the researcher, but 3) in the long run it plateaus and even inhibits further progress, and 4) breakthrough progress eventually arrives by an opposing approach based on scaling computation by search and learning. The eventual success is tinged with bitterness, and often incompletely digested, because it is success over a favored, human-centric approach.
One thing that should be learned from the bitter lesson is the great power of general purpose methods, of methods that continue to scale with increased computation even as the available computation becomes very great. The two methods that seem to scale arbitrarily in this way are search and learning.
-
Why Rust's learning curve seems harsh, and ideas to reduce it
I've been thinking about the learning curve for Rust lately, and why it feels so hard to learn. I think the reason is because the complexity is all front-loaded, and the resources generally don't actively reduce that front-loading1.
There are two well-trod paths for learning Rust: read long books, or learn by example.
These work for some people, but they have harsh learning curves. The books are quite long and generally you have to get through all of it before you can do things that are generally useful2. On the other hand, learning by example generally works only if you're already quite familiar with low-level programming and just need to learn the syntax and other little Rust-y bits.
-
Feature Flags in a CI Pipeline
Reduce the risk of breaking a CI pipeline for all of a project’s developers by using the flagon CLI to query Feature Flags, opting developers into and out of new CI features and processes by targeting groups of developers or branch naming patterns.
-
Imputation in R: Top 3 Ways for Imputing Missing Data - Machine Learning, R programming
Real-world data is often messy and full of missing values. As a result, data scientists spend the majority of their time cleaning and preparing the data, and have less time to focus on predictive modeling and machine learning. If there’s one thing all data preparation steps share, then it’s dealing with missing data. Today we’ll make this process a bit easier for you by introducing 3 ways for data imputation in R.
-
Favorite compiler and interpreter resources
My personal path, a hobbyist, was focused at first on interpreters for Brainfuck, Scheme, lower-case forth, and lower-case lisp. I had a bit of "formal" undergraduate training in one PL course and one compilers course I took before I dropped out, but for the most part I hacked on stuff since then for fun and education.
-
In response to a frontend developer asking about database development
You write that you're a self-taught frontend developer who would like to be able to work on more complex systems like databases. You asked about my learning path (since my site mentions I started with jQuery and PHP).
First off, ambition/desire is a powerful thing! I was a manager for a while and I'd watch folks across all apparent experience and talent levels. When they said they wanted to do something I'd see it gnaw at them until they did it.
-
huff-duff
The history of HF radio and its many interesting military and intelligence aspects could fill a book, and probably will over time on this blog. I have mentioned, for example, HAARP. That of course means that ionospheric heaters and the military-intelligence mission of HAARP are now on my list of topics to address, along with the ubiquitous HAARP conspiracy theories. First, though, I had a reader email me in response to the OTH posts. They asked about CFS Masset: a Canadian Forces Station on Graham Island, off the west coast of BC and a good ways north of Vancouver Island. I've never been to Graham Island but it's on my list, and CFS Masset is one of the reasons. The CFS consists mostly of one of few operating examples of a fascinating artifact of HF radio and military intelligence: the CDAA or Wullenweber antenna.