Skip to content

nathan-hook/programming-reminders

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 

Repository files navigation

Things to keep track of as a professional application developer and consultant...

A lightly currated list.

Programming is Hard

Write a corollary story to an Autobiography in Five Short Chapters, but add something about I'm facing a new software problem... And then at the end add a goto chapter 1.

Software Engineering Lessons from RCAs of world's greatest disasters, this article was amazing. It just takes everything from below and sums it up in terrible tragities and how those tragities could have been avoided.

Every Programmer Should Know, contains the following topics: Introduction, Falsehoods, Algorithms, Data Structures, Numbers, Strings, Latency, Time, Memory, Distributed Systems, Security, UX/Usability, SEO, Architecture, Code Design, Engineering Philosophy, Practices, Career, Fine-tune Your Resume, Open Source, Remote Work, Problem Solving, Soft Skills, Mental Health, Papers on Programming, Services, Licenses, Where To Look For Further Info, and Coding Practice Sites.

Curated list of falsehoods programmers believe in.

Let’s talk about usernames

Personal names around the world

Personal names around the world 1

Personal names around the world 2

Falsehoods Programmers Believe About Search

Why are the username and password on two different pages?

Everything you ever wanted to know about building a secure password reset feature

The Tech Lead’s New Project Checklist

The traits of a proficient programmer

The fine art of fast development

7 Skills of Highly Effective Programmers

Humility in Software Development

The mythical 10x programmer

Laws, Theories, Principles and Patterns that developers will find useful.

big-list-of-naughty-strings

All software advice is wrong

Money and Payments

Payments 101 for a Developer, Hacker News Discussion

Security

OWASP Top 10 Vulnerabilities

10 Java security best practices

Security Headers

HTTP Security Headers

SSL Server Test

Clean Code / Code Quality

How To Write Unmaintainable Code

Guide: Writing Testable Code

S.O.L.I.D. Software Development, One Step at a Time

Test-Driven Development: Really, It’s a Design Technique

Test-driven development: Theory and Practice

Emphasis is mine.

In fact, these two concerns (test coverage and product quality) are independent: one can easily imagine a high-quality system running in production, delivering a lot of value to its users, and not having a single automated test at all – just delete all the tests after deploying and completing extensive validation of the system. On the other hand, it is conceivable to achieve 100% test coverage and have an extremely brittle or unusable system; in this case the tests do not provide any value at all, and are just as useless as the system itself.

Technical Debt

Code Smells

A Taxonomy for "Bad Code Smells"

Refactoring Guru

Refactoring.Guru makes it easy for you to discover everything you need to know about refactoring, design patterns, SOLID principles, and other smart programming topics.

How to Write Code

Learning Writing and Coding from a Con Artist

Get something that works, no matter how silly and brittle. Don’t think too hard about it: don’t worry about it being DRY, or being as fast as possible, or properly encapsulated, or anything else. Just get something that works. If it’s garbage, throw it out and start over; you barely spent any time on it anyway. Once it’s mostly not garbage, begin a refactoring pass. Make sure that what the code is doing is clear, concise, efficient, and above all, makes sense to read — because you will forget where your head was at in six months when you inevitably have to do some maintenance on this code.

Consulting

Never say “no,” but rarely say “yes.”

So the principle is easy: Set the conditions of “yes” such that:

  1. If they say “yes,” you’re happy because the terms or money are so good, it more than compensates for the distraction, possibly even funding the thing you really want to do.
  2. If they say “no,” you’re happy because it wasn’t a great fit anyway, so it’s not worthwhile for a small return on your time and effort.

How to Get Lucky: Focus On The Fat Tails

Mike Monteiro: F*ck You, Pay Me - from CreativeMornings - YouTube

Mike Monteiro: 13 Ways Designers Screw Up Client Presentations - YouTube

UML / Database Design Tools

yUML

LucidChart

Documenting your relational database using SchemaSpy

This is kind of cool because there is a docker image that allows you to run all the tools without having to install any of the tools. https://tech.asimio.net/2020/11/27/Documenting-your-relational-database-using-SchemaSpy.html

Architecture Diagrams and Tools

draw.io

The 5 Types of Architecture Diagrams: The flow, service, persona, infrastructure, and developer diagram

Hibernate

Spring Transactional Pitfalls [Spring & JPA Pitfalls Series]

The @Transactional annotation is probably the most randomly used annotation in the whole Java development world - and it’s terrifying!

Caching is harder than expected to setup: Hibernate EhCache Configuration Tutorial

Caching

When and how to use hibernate second level cache?

Hibernate Second Level Cache

A database connection does not equal a hibernate session:

This stack overflow post states that there is one database connection per hibernate session, but I believe that is no longer true. The accepted answer was written in 2013. Number of Hibernate Sessions Per Request or Per User? https://stackoverflow.com/questions/19180358/number-of-hibernate-sessions-per-request-or-per-user

However, after 2013 hibernate introduced a more aggressive database release mode. AFTER_STATEMENT

hibernate.connection.release_mode

Scrum/Scrum Master/Agile

Backlog Grooming Bugs Me

How ICE Score Method Helps to Choose Better Product Features

RICE Scoring: Quick Prioritization for Product Managers

On the importance of a Team Manifesto

Failure on demand – Scenes from an agile transformation

The credo must be: Everything and everyone in the company must work toward enabling developers to work effectively and without disruption. Only then can developers focus on creating value for the company and advance the company’s product.

Retro Ideas

Uncovering Better Ways

Ambiguity

What’s the difference between a junior and a senior engineer

Mentoring

The Art of Scholarly Mentoring

10 Executive Functioning Skills: The Ultimate Guide

Executive Functioning Skills

Performance Metrics

HubSpot Engineering Performance Rubric

A Rubric for Evaluating Team Members’ Contributions to a Maintainable Code Base

Software Engineering Assessment Rubric

One Rubric Changed Box's Engineering Performance — Here's How, Box's SVP Engineering Sam Schillace on the rubric that has helped the company build and maintain a culture of high performance.

HTTP

HTTP headers for the responsible developer

HOW HTTPS WORKS

Web Development

Let's Encrypt Certificates for localhost

Do You Really Know CORS?

API Practices If You Hate Your Customers

Scaling to 100k Users

Web Architecture 101

Smart PNG and JPEG compression

Hemingway App makes your writing bold and clear.

Mock Data

mockaroo

Need some mock data to test your app? Mockaroo lets you generate up to 1,000 rows of realistic test data in CSV, JSON, SQL, and Excel formats.

Generate test data. Quickly.

Web Api Design

Web Design

Adobe Color

Color Brewer 2.0

Things I Wish I’d Known About CSS

Learn CSS

HTML 5 Cheat Sheet

API Design

Java API Design Checklist

API Design With Java 8

This article references the Java API Design Checklist above.

Java Flight Recorder

https://github.com/wkorando/taking-off-with-jfr (pdf)

Deployment

12 Factor Apps with Spring Boot

Java Microservices: A Practical Guide

Database

About Pool Sizing Hacker News Discussion

How to Manage Connections Efficiently in Postgres, or Any Database

MY ADVICE TO DEVELOPERS ABOUT WORKING WITH DATABASES: MAKE IT SECURE

Things I Wished More Developers Knew About Databases

Git

Github Markdown Cheatsheet

Basic writing and formatting syntax

Git rebasing: What is it and how can you use it?

Commit Often, Perfect Later, Publish Once: Git Best Practices

Tips for a disciplined git workflow

More productive Git

Oh shit, git!

Cheat sheet: How to use Git

Git Cheat Sheet

Git Cheat Sheet: Commands and Best Practices

https://rogerdudler.github.io/git-guide/files/git_cheat_sheet.pdf

Write good git commit message, Hacker News Discussion

XKCD: 1296, 1597

CI/CD

What Is Linting + When to Use Lint Tools

Docker

Broken by default: why you should avoid most Dockerfile examples

Intro Guide to Dockerfile Best Practices Hacker News Discussion

The Ultimate Docker Cheat Sheet

User Interface/User Experience

10 Usability Heuristics for User Interface Design

Fundamental design principles for non-designers

Dark Patterns: 10 Examples of Manipulative Consent Requests

Remove password masking

Rules for Autocomplete

Public Sans

Public Sans - Github

Javascript Charts

CHART.XKCD

roughViz - Reusable JavaScript library for creating sketchy/hand-drawn styled charts in the browser

Website Accessability

The easiest way to keep your web apps accessible: Just use text

Distributed Systems

Notes on Distributed Systems for Young Bloods, Hacker News Discussion

An Interactive Intro to CRDTs

CRDT stands for “Conflict-free Replicated Data Type”. That’s a long acronym, but the concept isn’t too complicated. It’s a kind of data structure that can be stored on different computers (peers). Each peer can update its own state instantly, without a network request to check with other peers. Peers may have different states at different points in time, but are guaranteed to eventually converge on a single agreed-upon state. That makes CRDTs great for building rich collaborative apps, like Google Docs and Figma — without requiring a central server to sync changes.

Cheat Sheets

Cheat Sheets to link to:

Resume Building

What we look for in a resume, Hacker News Discussion

A well written article that talks about how to write a resume that can be read by humans, showing true impact with your work and how you get work done.

Improve Your Résumé by Turning Bullet Points into Stories

How to use numbers to make your resume more impressive to potential employers

Being Interviewed

Interview Cake

The two questions I ask every interviewer Harker News Discussion

Ask a Manager

Why I Don't Prepare For Job Interviews Harker News Discussion

How candidates are evaluated in coding interviews at top tech companies

Ask HN: What are good software architecture interview questions?

Hacker Rank

HackerRank-Solutions

Job negotiation for programmers: the basic principles

Contracts you should never sign, Hacker News Discussion

Pramp - An interview prep website.

How to Talk About Yourself in an Interview

Interviewing Others

The Science Behind Making Software Engineering Interviews Truly Predictive of Job Performance

Refactoring Backend Engineering Hiring at Slack

Hacker News Discussion

How NOT to hire a software engineer

How to Hire

What we've learned about hiring engineering managers

How we interview engineers at CircleCI

Why we re-designed our engineering career paths at CircleCI

Send interview questions about 1 hour to 1/2 hour before the interview.

Interview Rubrics

How to hire great software engineers with interview rubrics

Interview rubrics are a great way to reduce bias. Here's how to build a rubric for any technical role.

Engineering interviews: grading rubric, Part three of a three part guide to conducting engineering interviews at Medium. Beginning article Engineering interviews: refining our process

The Golden Rubric for Technical Interviews

Management Interaction

Ask HN: What do you talk about in 1-on-1s with your managers?

Work Life Balance

It is perfectly OK to only code at work, you can have a life too

The Seven Levels of Busy

Quick Company Links

My Brand New Logo

HOW TO REGISTER A COMPANY IN THE USA: COMPREHENSIVE GUIDE FOR FOUNDERS

Have I Been Squatted? Check if your domain has been squatted

Links to Other Folk's Curated Links

My Personal Linklog

The Motherboard Guide to Not Getting Hacked

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published