C++ includes useful generic functions like
std::transform, which can be very handy. Unfortunately they can also be quite cumbersome to use, particularly if the functor you would like to apply is unique to the particular function.
Source: What is a lambda expression in C++11?
C++11 introduces lambdas allow you to write an inline, anonymous functor to replace the
struct f. For small simple examples this can be cleaner to read (it keeps everything in one place) and potentially simpler to maintain,
Going from declarative programming to functional programming has been a powerful paradigm shift for us to think about financial processing and accounting. We can now think of this system as a straightforward actor/handler system rather than getting mired in complicated SQL-join logic.
Source: Tracking the Money — Scaling Financial Reporting at Airbnb – Airbnb Engineering & Data Science – Medium
This third edition of the publication has contributions from all the agency’s centres on data processing/storage, business systems, operations, propulsion and aeronautics. It includes many of the tools NASA uses to explore space and broaden our understanding of the universe. Each catalogue entry is accompanied with a plain language description of what it does.
Source: NASA grants free access to its technologies in latest software release
The key to getting people to at least appreciate logical data models is to just do them as part of whatever modeling effort you are working on. Don’t say “stop”. Just model on. Demonstrate, don’t tell your teams where the business requirements are written down, where they live. Then demonstrate how that leads to beautiful physical models as well.
Source: Is Logical Data Modeling Dead? | InfoAdvisors Blog
The loop abstractions examined here are just one type of parallel or concurrent programming abstraction available. There is a whole universe out there, Actor Models, Async/Await, Tasks, Thread Pools, and so on. Be sure to understand what you are using, and measure whether it will really be useful, or whether you should focus on fast single threaded algorithms or look for third party tools with better performance.
Source: Think Before You Parallelize
Ken describes how he injected a virus into a compiler. Not only did his compiler know it was compiling the login function and inject a backdoor, but it also knew when it was compiling itself and injected the backdoor generator into the compiler it was creating. The source code for the compiler thereafter contains no evidence of either virus.
Ken wrote, In demonstrating the possibility of this kind of attack, I picked on the C compiler. I could have picked on any program-handling program such as an assembler, a loader, or even hardware microcode. As the level of program gets lower, these bugs will be harder and harder to detect. A well installed microcode bug will be almost impossible to detect.
Source: The Ken Thompson Hack
Security is a massive topic, even if we reduce the scope to only browser-based web applications. These articles will be closer to a “best-of” than a comprehensive catalog of everything you need to know, but we hope it will provide a directed first step for developers who are trying to ramp up fast.
Source: The Basics of Web Application Security
In this article, I will go through some basic building blocks of image processing, and share some code and approaches to basic how-tos.
Source: Image Processing 101
But before you embark on that shiny blockchain project, you need to have a very clear idea of why you are using a blockchain. There are a bunch of conditions that need to be fulfilled. And if they’re not, you should go back to the drawing board. Maybe you can define the project better. Or maybe you can save everyone a load of time and money, because you don’t need a blockchain at all.
Source: Avoiding the pointless blockchain project | MultiChain
Blockchains are a technology for shared databases.
Blockchains are a technology for databases with multiple writers.
blockchains are a technology for databases with multiple non-trusting writers.
I get a lot of questions from aspiring programmers on what’s the best tool or languages to learn. It’s almost always a premature question to ask. I used to come up with answers like “depending on what you’re building” or “pick a beginner friendly community” or “invest in a growing language”. I think all of these are good answers, but it doesn’t really matter that early on in a programmer’s learning journey. It’s all the same when you’re essentially learning how to compute. Furthermore, these sort of answers enable the culture of tooling obsession.
Source: Overcoming Intuition in Programming