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."
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."
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."
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."
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.
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. Many attempts have been made to differentiate between monolithic applications and other, newer forms of monorepos. "
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."
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 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."
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."
Amazon Web Services
Google Cloud Platform
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."
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."
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.
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
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."
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."
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?”."
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."
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.
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."
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 Martin #article - Blog. "Robert Cecil Martin, colloquially known as "Uncle Bob", is an American software engineer and instructor. He is best known for being one of the authors of the Agile Manifesto 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 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."