Software Development
7 Habits I've Picked Up From Senior Software Developers #video - "In this video I explain the 7 habits of successful software developers from my interactions and observations with some very skilled developers."
10x engineers #thread - "Founders if you ever come across this rare breed of engineers, grab them. If you have a 10x engineer as part of your first few engineers, you increase the odds of your startup success significantly." Article in case thread is taken down.
Bayesian Methods for Hackers: Probabilistic Programming and Bayesian Inference #book
Think Bayes: Bayesian Statistics in Python #book
Biggest Challenge You'll Face Learning to Code (Plus How to Overcome It!) #video - "Learning any new skill is challenging and I've definitely noticed a recurring theme that most everybody faces: how to stay motivated when progress seems to be non-existent (also know as the intermediate plateau). There's is no easy answer or magic pill but I definitely laid out a few pieces of advice of how to overcome it."
Convention over configuration - Wikipedia
Database normalization #article - Wikipedia. "Database normalization is the process of structuring a relational database in accordance with a series of so-called normal forms in order to reduce data redundancy and improve data integrity. It was first proposed by Edgar F. Codd as part of his relational model."
FOSSA - "Scalable, end-to-end management for third-party code, license compliance and vulnerabilities."
frp - "frp™ is a reliable Enterprise level face recognition system for commercial use"
GoodReads: Genre > Computer Science > Software - A collection of the most-read and most-popular books on software development on GoodReads.
How to write Pseudocode: A beginner’s guide #article - "Pseudocode is an informal high-level description of a computer program or algorithm. It is written in symbolic code which must be translated into a programming language before it can be executed."
Hyper #software - "The goal of the project is to create a beautiful and extensible experience for command-line interface users, built on open web standards. In the beginning, our focus will be primarily around speed, stability and the development of the correct API for extension authors."
Increment - "Increment is a print and digital magazine about how teams build and operate software systems at scale."
Lepton #software - "A Lean GitHub Gist Client"
Lobsters - "Lobsters is a computing-focused community centered around link aggregation and discussion, launched on July 1st, 2012. The administrator is Peter Bhat Harkins ("pushcx"), contact him with any support issues. Lobsters was created by joshua stein with some specific design goals in mind to avoid problems faced by other link aggregation sites." Site code on GitHub.
Local Composer Package Development #article - "When developing a package for say, Laravel, you’d want to incorporate that package into your vendor folder so that you can test its integration into the project and how it would behave as if someone had pulled it from Packagist."
Monorepo #article - Wikipedia. "In revision control systems, a monorepo ("mono" from Greek μόνος, mónos, 'single, alone' and "repo" short for repository) is a software development strategy where code for many projects is stored in the same repository. As of 2017 some forms of this software engineering practice were over a decade old, but the general concept had only recently been named.[1] Many attempts have been made to differentiate between monolithic applications and other, newer forms of monorepos. [2][3][4]"
Paper is dead, long live Paper Programming #article - "It should come as no surprise to anyone who reads this blog that I love to program "by hand." I happen to practice a degree of ascetical programming practices, and I believe that they help me to more deeply internalize and understand problems, ultimately delivering higher quality solutions. One of the ways that I do this is the use of paper programming."
“Show a man a program and frustrate him for a day. Teach a man to program and you frustrate him for a lifetime” (via phi's forum profile).
SREcon20 Americas - 9 Years of Failure: How Racing Crappy Cars Made Me a Better SRE #video - Great advice on running an effective site reliability team and software teams in general.
swimlanes.io #webapp - "**swimlanes.io** is a simple online tool for creating _sequence diagrams_."
WakaTime - "The developer dashboard . Open source editor plugins for metrics about your programming."
Why My Teenage Code Was Terrible: Sorting Algorithms and Big O Notation #video - "When I was a teenager, I wrote some terrible code. Here's why." #algorithms
Yagni #article - "Yagni originally is an acronym that stands for "You Aren't Gonna Need It". It is a mantra from ExtremeProgramming that's often used generally in agile software teams. It's a statement that some capability we presume our software needs in the future should not be built now because "you aren't gonna need it"."
Abstract Syntax Trees
Abstract syntax tree #article - Wikipedia. "In computer science, an abstract syntax tree (AST), or just syntax tree, is a tree representation of the abstract syntactic structure of source code written in a programming language. Each node of the tree denotes a construct occurring in the source code."
AST Explorer #webapp - "Paste or drop some JavaScript here and explore the syntax tree created by chosen parser. You can use all the cool new features from ES6 and even more. Enjoy!" List of parsers.
Deciphering Python: How to use Abstract Syntax Trees (AST) to understand code #article - "Because Python is a “batteries included” language, the tools you need to use ASTs are built into the standard library."
jscodeshift #software - "jscodeshift is a toolkit for running codemods over multiple JavaScript or TypeScript files."
Python AST module - "The ast
module helps Python applications to process trees of the Python abstract syntax grammar. The abstract syntax itself might change with each Python release; this module helps to find out programmatically what the current grammar looks like."
recast #software - "Recast exposes two essential interfaces, one for parsing JavaScript code (require("recast").parse
) and the other for reprinting modified syntax trees (require("recast").print
)."
Analytics
Amplitude #webapp - Product intelligence. "See how Amplitude helps you use customer data to build great product experiences that convert and retain users."
Chartio - "Create powerful dashboards from your company’s data and quickly discover insights with Chartio."
API Design
mockAPI #webapp - "The easiest way to mock REST APIs! (Check out docs)"
Postman #software - "Simplifies API Development. Get easy, API-First solutions with the industry's only complete API Development Environment."
Slate - "Beautiful static documentation for your API"
Swagger - "Swagger open source and pro tools have helped millions of API developers, teams, and organizations deliver great APIs."
Cloud Services
Amazon Web Services
Dashbird - "Monitor serverless apps on AWS."
Google Cloud Platform
Community
Codidact - "The Open Source Q&A Platform." Communities. Software Development community.
IndieHackers - "Learn from the founders behind hundreds of profitable online businesses, and connect with others who are starting and growing their own companies."
Makerlog - "The home of the maker community. Makerlog is where 4,000+ indie hackers & makers get things done together."
Spectrum - "Spectrum makes it easy to grow safe, successful online communities that are built to last." Has a lot of developer communities.
WIP - "We are a community of makers"
Continuous Deployment
Continuous deployment with CircleCI - "Automate deployments with CircleCI orbs A fast, out-of-the-box solution for integrating with AWS Lambda, GCP, Kubernetes, and other deployment services."
Continuous Integration
AWS CodePipeline - "AWS CodePipeline is a fully managed continuous delivery service that helps you automate your release pipelines for fast and reliable application and infrastructure updates. CodePipeline automates the build, test, and deploy phases of your release process every time there is a code change, based on the release model you define. This enables you to rapidly and reliably deliver features and updates. You can easily integrate AWS CodePipeline with third-party services such as GitHub or with your own custom plugin. With AWS CodePipeline, you only pay for what you use. There are no upfront fees or long-term commitments."
CONTINUOUS INTEGRATION - "Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. ❡ By integrating regularly, you can detect errors quickly, and locate them more easily."
Continuous Integration - What's the point? - Continuous Integration P1 - Fun Fun Function #video - "Continuous Integration is when a software development team has a habit of doing multiple merges per day and have an automated verification system that checks those merges for problems. Our team does this in order to waste less time hunting down problems in monster merges."
Semgrep - "Static analysis at ludicrous speed. Find bugs and enforce code standards"
Deep Work / Deliberate Practice
Bountysource - "Support for Open Source Software. A community with 75,087 members hunting for bounties and earning rewards"
Build in public
CodeKata - "Code Kata is an attempt to bring this element of practice to software development. A kata is an exercise in karate where you repeat a form many, many times, making little improvements in each. The intent behind code kata is similar. Each is a short exercise (perhaps 30 minutes to an hour long). Some involve programming, and can be coded in many different ways. Some are open ended, and involve thinking about the issues behind programming. These are unlikely to have a single correct answer. I add a new kata every week or so. Invest some time in your craft and try them."
CodeWars - "Improve your skills by training with others on real code challenges"
How to Read Confusing Code #video - Most practical stuff starts 30 minutes in. She talks about different exercises for practicing how to read and understand confusing code. These practices could be done in a deep manner.
Kata (programming) #article - Wikipedia.
Project Euler
StackOverflow
The Ultimate Code Kata #article - "Effortful study means constantly tackling problems at the very edge of your ability. Stuff you may have a high probability of failing at. Unless you're failing some of the time, you're probably not growing professionally. You have to seek out those challenges and push yourself beyond your comfort limit." #deep_work
Write a blog
Error Handling
GOTO 2016 • The Error of Our Ways • Kevlin Henney #video - "What happens when things break? What happens when software fails? We regard it as a normal and personal inconvenience when apps crash or servers become unavailable, but what are the implications beyond the individual user?"
GOTO 2018 • The Do's and Don'ts of Error Handling • Joe Armstrong #video - "Handling errors in programs is tricky. We want to write systems that work reasonable well even if there are errors in the code. This is possible, and the results have been used in production systems for many years. This talk outlines the do's and don'ts of error handling. Things you should do if you want to write fault tolerant code, and things you should not do."
Sentry - "Sentry provides self-hosted and cloud-based error monitoring that helps all software teams discover, triage, and prioritize errors in real-time."
Feature Flags
FeatureFlags.io - "The Hub for Feature Flag Driven Development"
LaunchDarkly - "Fast and reliable feature management for the modern enterprise."
Security
ATT&CK AWS Matrix - "Below are the tactics and technique representing the MITRE ATT&CK Matrix™ for Enterprise covering cloud-based techniques. The Matrix contains information for the AWS platform."
ATT&CK Enterprise Matrix - "Below are the tactics and technique representing the MITRE ATT&CK Matrix™ for Enterprise. The Matrix contains information for the following platforms: Windows, macOS, Linux, AWS, GCP, Azure, Azure AD, Office 365, SaaS."
National Vulnerability Database - "The NVD is the U.S. government repository of standards based vulnerability management data represented using the Security Content Automation Protocol (SCAP). This data enables automation of vulnerability management, security measurement, and compliance. The NVD includes databases of security checklist references, security-related software flaws, misconfigurations, product names, and impact metrics."
STRIDE (security) #article - Wikipedia. "STRIDE is a model of threats developed by Praerit Garg and Loren Kohnfelder at Microsoft[1] for identifying computer security threats.[2] It provides a mnemonic for security threats in six categories.[3]"
Threat model #article - Wikipedia. "Threat modeling is a process by which potential threats, such as structural vulnerabilities or the absence of appropriate safeguards, can be identified, enumerated, and mitigations can be prioritized. The purpose of threat modeling is to provide defenders with a systematic analysis of what controls or defenses need to be included, given the nature of the system, the probable attacker's profile, the most likely attack vectors, and the assets most desired by an attacker. Threat modeling answers questions like “Where am I most vulnerable to attack?”, “What are the most relevant threats?”, and “What do I need to do to safeguard against these threats?”."
State Machines & Statecharts
Let’s learn state machines with David K. Piano! — Learn With Jason #video - "What are state machines? How are they helpful? In this episode, David Khourshid (https://twitter.com/DavidKPiano) walks us through refactoring a React component to use xstate, which helps us clear up some bugs and add more predictability."
Sketch.systems - "Explore how your product should work, before building it. Sketch.systems helps software designers think about complex product behavior. Sketch out states, add prototypes, and clarify questions quickly."
spectrum.chat/statecharts - "Statecharts are a precise, visual way of modeling the behaviour of complex reactive systems. They describe how things work, and can help you get your code doing exactly what you want."
StateCharts - "Put simply, a statechart is a beefed up state machine. The beefing up solves a lot of the problems that state machines have, especially state explosion that happens as state machines grow. One of the goals of this site is to help explain what statecharts are and how they are useful."
XState - "JavaScript State Machines and Statecharts"
Sources
The Clean Code Blog #blog - "by Robert C. Martin (Uncle Bob)"
Clean Coders #video - "Write code that sings. Elevate your skill with software training videos for impassioned developers."
Coding Horror #blog - by Jeff Atwood. "Programming and human factors"
Derek Banas #video #channel - “I make tutorials based on your requests. I will cover any topic you can imagine. I upload new programming videos on Saturday and Wednesday morning. I Live Stream at 8PM EST on Monday and at 7PM EST on Tuesday, Thursday and Friday.”
Dev.to - "DEV is a community of software developers getting together to help one another out. The software industry relies on collaboration and networked learning. We provide a place for that to happen."
Felienne - "Hi there! I am Felienne. I am associate professor at the Leiden Institute of Advanced Computer Science at Leiden University, where head the PERL group that researches programming education. I am fascinated by the question how we can teach all people to program. In my PhD dissertation I studied how we can help people working with spreadsheets better, by repurposing methods from software engineering." Author of The Programmer's Brain.
GitNews - "Trending repositories from GitHub, HackerNews & Reddit"
if/else #podcast - "A career in technology is full of choices. We’re here to help you make smart ones. In each episode, we meet a software developer who needs to make an if/else choice. From important technical decisions to sticky career challenges, we cover the hard and soft skills you need for a sustainable and rewarding career in tech… at any stage of your career. Hosted by Mayuko Inoue, if/else is an original podcast from CTO.ai, the makers of The Ops Platform."
Increment - "Increment is a print and digital magazine about how teams build and operate software systems at scale. Learn more"
Martin Fowler - "Software development is a young profession, and we are still learning the techniques and building the tools to do it effectively. I've been involved in this activity for over three decades and in the last two I've been writing on this website about patterns and practices that make it easier to build useful software. The site began as a place to put my own writing, but I also use it to publish articles by my colleagues."
Robert Heaton #blog
Robert Martin #article - Blog. "Robert Cecil Martin, colloquially known as "Uncle Bob",[2] is an American software engineer and instructor. He is best known for being one of the authors of the Agile Manifesto[3][4] and for developing several software design principles. He was also the editor-in-chief of C++ Report magazine and served as the first chairman of the Agile Alliance" (Wikipedia).
Software Engineering Daily #podcast - "The World Through the Lens of Software"
Software Engineering Radio #podcast - "Software Engineering Radio is a podcast targeted at the professional software developer. The goal is to be a lasting educational resource, not a newscast. Three to four times per month, we publish a new episode talking to experts from the software engineering world about the full range of topics that matter to professional developers."
Syntax #podcast - "A Tasty Treats Podcast for Web Developers."
ThoughtWorks Insights #blog
zudochkin/awesome-newsletters - "A curated list of awesome newsletters."
Last updated