Book Review: A Philosophy of Software Design
Jimmy Koppel's in-depth review of John Ousterhout's A Philosophy of Software Design, with case studies on specs, simple APIs, names, and types.
How Does React Tell a Class from a Function?
We talk about classes, new, instanceof, prototype chains, and API design.
“Modern” C++ Lamentations
“ Standard Ranges ” blog post by Eric Niebler – about C++20 ranges feature – was doing rounds in the game development twitterverse lately, with many expressing something like a “dislike” (mildly said) about the state of modern C++.
JavaScript is Good, Actually
The subtext of many discussions around building software in Electron and React/Native involve this assumption that JavaScript is bad. There is a kind of unspoken understanding that JavaScript developers are stuck writing it, that either:
Lessons Learned from Writing Over 300k Lines of Infrastructure Code
Infrastructure code lessons from a HashiConf 2018 talk by Gruntwork, with the video, the slides, and a condensed written version of five key takeaways.
A Road to Common Lisp
I've gotten a bunch of emails asking for advice on how to learn Common Lisp in the present day. I decided to write down all the advice I've been giving through email and social media posts in the hopes that someone might find it useful.
Low Level Bit Hacks You Absolutely Must Know
I decided to write an article about a thing that is second nature to embedded systems programmers – low level bit hacks. Bit hacks are ingenious little programming tricks that manipulate integers in a smart and efficient manner. Instead of performing operations (such as counting the number of 1 bits in an integer)…
We are rewriting CodeMirror
In-browser code editor
7-Zip: From Uninitialized Memory to Remote Code Execution
Blog about anti-virus software vulnerabilities.
Elixir v1.6 released: code formatter, dynamic supervisors, and more
Elixir v1.6 includes a code formatter, defguard, dynamic supervision and new module attributes that improves code quality and the developer experience.
Python in Visual Studio Code
We are pleased to announce that the August 2018 release of the Python Extension for Visual Studio Code is now available. In this release we have closed a total of 38 issues including the stable release of our ptvsd 4 debugger, improvements to the language server preview, and other fixes.
Some obscure C features
Date: 2018-01-25 Git: https://gitlab.com/mort96/blog/blob/published/content/00000-home/00010-obscure-c-features.md
Microservices Are Something You Grow Into, Not Begin With
Let's talk about when it might be a good or bad idea to start using microservices. SPOILER ALERT: it's not the same for every project.
Git log – The good parts
If you’re managing a complex git codebase with multiple developers, then you may well be using a tool like GitHub or BitBucket to delve into the history and figure out branch and merge issues.
Why the New V8 Is So Damn Fast
The entire V8 compiler pipeline was overhauled and shipped with Node.js version 8. This post investigates what speed improvements we can expect as a result.
Go += Package Versioning
More precisely, we need to add the concept of package versions to the working vocabulary of both Go developers and our tools, so that they can all be precise when talking to each other about exactly which program should be built, run, or analyzed. The go command needs to be able to tell developers exactly which…
TinyWM – A tiny window manager in around 50 lines of C
TinyWM is a tiny window manager that I created as an exercise in minimalism. It is also maybe helpful in learning some of the very basics of creating a window manager. It is only around 50 lines of C. There is also a Python version using python-xlib.
SQLite Release 3.25.0 adds support for window functions
A complete list of SQLite releases in a single page and a chronology are both also available. A detailed history of every check-in is available at SQLite version control site .
Headless Chrome support in Cloud Functions and App Engine
News, updates, and best practices for developing apps on Google Cloud Platform.
Scrum disempowers developers
Last time, we looked at how Scrum has become the de facto definition of Agile, and how it is uniquely lacking in technical practices compared to the other methodologies that were involved in creating the Agile manifesto. This lack of technical good practices and craft causes some obvious
Using Java 9 Modularization to Ship Zero-Dependency Apps
When Java was first introduced, mainstream programming languages mostly either compiled to standalone executables (e.g. C/C++, COBOL), or else ran in an interpreter (e.g. Perl, Tcl). For many programmers, Java’s need for both a bytecode compiler and a runtime interpreter was a shift in thought. The compilation model…
How The New York Times Uses Software to Recognize Members of Congress
Even if you’ve covered Congress for The New York Times for a decade, it can be hard to recognize which member you’ve just spoken with…