Welcome to issue 1 of Programmer Weekly.


GitHub is now free for teams
Every developer and team can now get private repositories with unlimited collaborators at no cost with GitHub Free, and we reduced prices for some of our paid plans.

Remote Software Developers Earn 22% More Than Non-Remote Developers
Working remote even just a few days per month leads to higher pay.

10 developer skills on the rise and five on the decline
Developers remain in high demand, but the skills they need to succeed are in constant flux. Here is how to ensure your programming chops are on point and sharp.

Academics steal data from air-gapped systems using PC fan vibrations
Israeli researchers use vibrations from CPU, GPU, or PC chassis fans to broadcast stolen information through solid materials and to nearby receives, breaking air-gapped system protections.

New MDJS Markup Language Adds JavaScript to Markdown for Interactive Documentation
Thomas Allmer, founder of Open Web Components, released MDJS, a Markdown variant that allows developers to include runnable JavaScript code into their Markdown documents. MDJS can be interpreted as regular Markdown content or be progressively enhanced to produce interactive documentation including web components.

Rust Survey 2019 Results
Overall our users indicated that productivity is still an important goal for their work (with or without using Rust). The results show the overriding problem hindering use of Rust is adoption. The learning curve continues to be a challenge - we appear to most need to improve our follow through for intermediate users - but so are libraries and tooling.

IBM will offer free COBOL training to address overloaded unemployment systems
IBM is releasing a free training course to teach the 60-year-old programming language COBOL to coders. It is also launching a forum where those with knowledge of the language can be matched with companies in need of help maintaining their critical systems.

Articles,Tutorials and Talks

Things I Wished More Developers Knew About Databases
Even though it is impossible to ignore how databases work, the problems that application developers foresee and experience will often be just the tip of the iceberg. In this post, I am sharing a few insights I specifically found useful for developers who are not specialized in this domain.

The Devastating Decline of a Brilliant Young Coder
Lee Holloway programmed internet security firm Cloudflare into being. Then he became apathetic, distant, and unpredictable for a long time, no one could make sense of it.

Webcam Hacking
This post is a technical walkthrough of how I discovered several zero-day bugs in Safari during my hunt to hack the iOS/MacOS camera. 

How I made a basketball hoop that always goes in 
Imagine throwing a ball and if it hits the backboard it somehow gets directed into the hoop. Thanks to physics it isn't quite possible to make ALL possible shots go in though you can make a hoop where the ball goes in a lot more often. This video shows you how to write a program to calculate the optical backboard then machined and fabricated it. 

The Life of a Data Byte
A trip through time of various storage technologies.

Build your first LLVM Obfuscator
In this post we will briefly present LLVM, discuss popular obfuscation approaches and their shortcomings and build our own epic LLVM-based string obfuscator.

Patterns for Managing Source Code Branches
Modern source-control systems provide powerful tools that make it easy to create branches in source code. But eventually these branches have to be merged back together, and many teams spend an inordinate amount of time coping with their tangled thicket of branches. There are several patterns that can allow teams to use branching effectively, concentrating around integrating the work of multiple developers and organizing the path to production releases. The over-arching theme is that branches should be integrated frequently and efforts focused on a healthy mainline that can be deployed into production with minimal effort.

How to write a SQL database from scratch in Go
In this series we'll write a rudimentary database from scratch in Go. Project source code is available on Github.

A circuit board from the Saturn V rocket, reverse-engineered and explained
In the Apollo Moon missions, the Saturn V rocket was guided by an advanced onboard computer system built by IBM. This system was built from hybrid modules, similar to integrated circuits but containing individual components. Ken Shirriff reverse-engineered a circuit board from this system and determined its function: Inside the computer's I/O unit, the board selected different data sources for the computer. This post explains how the board worked, from the tiny silicon dies inside its hybrid modules to the board's circuitry and its wiring in the rocket. 

Immutable Infrastructure 
Reliability, consistency and confidence through immutability.

We Built a Plugin, but It is Not a Secret
The New York Times has open-sourced a Vault plugin that generates dynamic secrets.

The Computer Scientist Who Can't Stop Telling Stories
For pioneering computer scientist Donald Knuth, good coding is synonymous with beautiful expression.

Millions of Tiny Databases 
Starting in 2013, we set out to build a new database to act as the configuration master for a high-performance cloud block storage system (Amazon EBS). This database needs to be not only highly available, durable, and scalable but also strongly consistent. We quickly realized that the constraints on availability imposed by the CAP theorem, and the realities of operating distributed systems, meant that we didn't want one database. We wanted millions. Physalia is a transactional key-value store, optimized for use in large-scale cloud control planes, which takes advantage of knowledge of transaction patterns and infrastructure design to offer both high availability and strong consistency to millions of clients. Instead of being highly available for all keys to all clients, Physalia focuses on being extremely available for only the keys it knows each client needs, from the perspective of that client.

Customizing your shell
A deep dive into how to customize your terminal and shell, in order to make it yours and increase productivity.

Building a more accurate time service at Facebook scale
We've improved time precision within our infrastructure from 10 milliseconds to 100 microseconds, and released our own public NTP service.

Plugging Git Leaks: Preventing and Fixing Information Exposure in Repositories
Have you ever been neck-deep building a new feature? You're working at capacity. You need to test something out so you paste an API key into your source file with every intention of removing it later. But you forget. You push to GitHub. It's an easy mistake, and potentially a very expensive one. In this article, Julien Cretel explores the nuances of this kind of data leak, offers suggestions for recovery when leaks happen and gives us options for preventing them in the first place.

Building dark mode on Stack Overflow 
On March 30, 2020, we enabled folks to opt into a beta dark mode on Stack Overflow. Let's talk about the work that went into it.

Refactoring: This class is too large
An example of refactoring from a real (flawed) code base.

When did I run that command?
Update your Bash prompt with the command start time.

Beyond the Code: Mining Self-Admitted Technical Debt in Issue Tracker Systems

How I Reverse Engineered the LastPass CLI Tool

Setting up an email server in 2020 with OpenSMTPD and Dovecot


Building Secure and Reliable Systems
Can a system be considered truly reliable if it isn't fundamentally secure? Or can it be considered secure if it's unreliable? Security is crucial to the design and operation of scalable systems in production, as it plays an important part in product quality, performance, and availability. In this book, experts from Google share best practices to help your organization design scalable and reliable systems that are fundamentally secure.

Interesting Projects, Tools and Libraries

OpenAPI Generator
Generate clients, servers, and documentation from OpenAPI 2.0/3.x documents.

Is BGP safe yet? No.
On the Internet, network devices exchange routes via a protocol called BGP (Border Gateway Protocol). Unfortunately, issues with BGP have led to malicious actors being able to hijack and misconfigure devices leading to security problems which have the potential to cause widespread problems. BGP security can be greatly improved by using technologies such as RPKI to sign Internet routes. This website attempts to track the progress of major Internet players (ISPs, transit operators, and content providers) in their progress to adopt RPKI and other technologies.

Moloch is an open source, large scale, full packet capturing, indexing, and database system.

A fun platform for learning modern cryptography.

A Persistent Geospatial Database with Geofencing & Google Maps Support.

A sample app using Apple's soon-to-be-released contact tracing framework.

Peer to peer browser video calling platform with unmatched video quality and latency.

f-license is an open-source license creation and verification tool. You can quickly add license key verification to your application.

Things you can do with a browser in 2020.

Resource monitor that shows usage and stats for processor, memory, disks, network and processes.

A zero config distributed reverse-proxy especially for Docker Swarm (supporting multiple letsencrypt/https hosts). No dependencies.

Scuttlebot is an open source peer-to-peer log store used as a database, identity provider, and messaging system. It features global replication, file-syncronization, and end-to-end encryption.

A free API for generating social media images.

clikan is a super simple personal kanban board that runs in a CLI.

An algorithm to optimize database queries that run multiple times.
Our Other Newsletters
Python Weekly - A free weekly newsletter featuring the best hand curated news, articles, tools and libraries, new releases, jobs etc related to Python.

Founder Weekly - A free weekly newsletter for entrepreneurs featuring best curated content, must read articles, how to guides, tips and tricks, resources, events and more.