127 private links
The most intuitive way of building and implementing Finite State Machines is by using Python Coroutines and in this article, we find how and why.
About 15 years ago, I mused about the idea of having a "desert island machine". This is where I'd put someone in a room with a box that has a couple of hard drives and a working network connection. HD #1 is blank. HD #2 has a few scraps of a (Linux) OS on it: bootloader, kernel, C library and compiler, that sort of thing. There's a network connection of some sort, and that's about it.
Now you see things like people managing to do the original Super Mario Bros game from the 80s in under five minutes, and I do mean people. There are actual humans frobbing plastic controllers doing this! Just dig around on your favorite giant video-streaming site if you need evidence of this happening.
So here's the pitch: Linux speedruns. By that, I don't mean "speedrunning a game on a Linux box" (like emulation, or something). Nope.
You can initialize Git repository, check its current status, add and commit changes and push all of that to remote? Great. Now time for these commands!
There are countless lists on the internet claiming to be the list of must-read programming books and it seemed that all those lists always recommended that same books minus two or three odd choices.
Finding good resources for learning programming is always tricky. Every-one has its own opinion about what book is the best to learn, and as we say in french, “Color and tastes should not be argued about”.
However I though it would be interesting to trust the wisdom of the crown and to find the books that appeared the most in those “Best Programming Book” lists.
If you want to jump right on the results go take a look below at the full results. If you want to learn about the methodology, bear with me.
An online roster and genealogy of 8945 programming languages from the 18th century to the present, featuring 7,800 influence links and over 11,000 citations.
The other day I read 20 most significant programming languages in history, a “preposterous table I just made up.” He certainly got preposterous right: he lists Go as “most significant” but not ALGOL, Smalltalk, or ML. He also leaves off Pascal because it’s “mostly dead”. Preposterous! That defeats the whole point of what “significant in history” means.
So let’s talk about some “mostly dead” languages and why they matter so much.
If you’re looking to get into ethical hacking, getting acquainted with Python is a great start. They discuss Python and ethical hacking and reveal the best online courses you can take to start training in the field.
The firmware of microcontrollers usually contains valuable data such as intellectual property and, in some cases, even cryptographic material.
I developed these programming exercises while working at 1010data. Each summer we’d put a batch of half a dozen or so interns through a week-long intensive K training program, including this set of puzzles, and then set them loose on the real codebase.
These problems vary in difficulty from trivial to moderately difficult (in non-escalating order), and are suitable for beginners or anyone wishing to brush a little rust off. A solution is provided for each problem in k3- click and hold on the gray area beneath each IO sample to reveal it. Most problems have at least one elegant solution, but many have multiple valid approaches- see how many ways you can satisfy the requirements!
How a Python function relates to a two thousand year old debate in philosophy
We describe the vision of being able to reason about the design space of data structures.
We break this down into two questions: 1) Can we know all data structures that is possible to design? 2) Can we compute the performance of arbitrary designs on a given hardware and workload without having to implement the design or even access the target hardware?
If those challenges are possible, then an array of exciting opportunities would become feasible such as interactive what-if design to improve the productivity of data systems researchers and engineers, and informed decision making in industrial settings with regards to critical ardware/workload/data structure design issues. Then, even fully automated discovery of new data structure designs becomes possible. Furthermore, the structure of the design space itself provides numerous insights and opportunities such as the existence of design continuums that can lead to data systems with deep adaptivity, and a new understanding of the possible performance trade-offs. Given the universal presence of data structures at the very core of any data-driven field across all sciences and industries, reasoning about their design can have significant benefits, making it more feasible (easier, faster and cheaper) to adopt tailored state-of-the-art storage solutions. And this effect is going to become increasingly more critical as data keeps growing, hardware keeps changing and more applications/fields realize the transformative power and potential of data analytics.
This paper presents this vision and surveys first steps that demonstrate its feasibility.
Why on earth would someone would pick C to start a new project in 2020? Surely there is a newer language with more shiny features that’s better right? Well I can’t speak for other people but I’ll tell you my reasons.
First of all let me preface this by saying that of course this is a biased opinion and the language I pick for something depends on the context it’s going to be used in. For example; I doubt I’ll ever be reaching for C when writing a web service simply because the ecosystem around that domain isn’t great and I’m not itching to write my http framework at this time.
But for games, more specifically cross-platform games C is a clear winner for me because it provides me with exactly the things I’m looking for which is reliability, simplicity and performance.
Vstr is a string library, it's designed so you can work optimally with readv()/writev()
for input/output. This means that, for instance, you can readv()
data to the end of the string and writev()
data from the beginning of the string without having to allocate or move memory. It also means that the library is completely happy with data that has multiple zero bytes in it.
This design constraint means that unlike most string libraries Vstr doesn't have an internal representation of the string where everything can be accessed from a single (char *)
pointer in C, the internal representation is of multiple "blocks" or nodes each carrying some of the data for the string. This model of representing the data also means that as a string gets bigger the Vstr memory usage only goes up linearly and has no inherent copying (due to other string libraries increasing space for the string via. realloc()
the memory usage can be triple the required size and require a complete copy of the string).
Like many developers, I have been interested in Rust for quite some time. Not only because it appears in so many headlines on Hacker News, or because of the novel approach the language takes to safety and performance, but also because people seem to talk about it with a particular sense of love and admiration. On top of that, Rust is of particular interest to me because it shares some of the same goals and features of my favorite go-to language: Swift. Since I've recently taken the time to do try out Rust in some small personal projects, I wanted to take a little time to document my impressions of the language, especially in how it compares to Swift.
The tradition of a "Hello, World" program goes back at least to 1978. But for modern coders, what's an appropriate "Hello, World"?
This is an easy to understand example based tutorial aimed at those who know nothing of awk
.