Abstract
This page contains a collection of links to various useful computer science and software engineering articles.
Software Engineering (SE)
- 15 Fundamental Laws of Software Development. This article is more of a food-for-thought thing than an actual guide for software development. It's interesting if you want to think a bit about the philosophy behind SE.
- 8 Reasons Why Code Breaks. A link that was shared by one of my C++ mentors at Amazon Lab126 - a very good overview of bad SE practices.
- Latency Numbers Every Programmer Should Know.
UI & UX
- 125 Easy Tweaks to Optimize Your Website’s UX/UI Today. A collection of some tips and simple diagrams that show you some minor tweaks you can apply to produce a better design. Although there are a lot of diagrams, they are all very easy to understand and will give you a good idea of how to improve UX for your users.
- Little UI Details. This page has a lot of neat tips about getting typography, space, and colors right. Personally, I think tweaks like this are what gives your design that "professional" look.
- 7 Practical Tips for Cheating at Design. This article compliments the link above - it covers the same topics, but from a slightly different perspective.
Git
This section will be useful for those who are new to Git. It might also serve as a nice refresher for some Git commands, but if you use Git every day you probably won't find it that useful.
- What is Git?. Brief technical introduction to what Git is and how it works.
- git - the simple guide. A dead simple introduction to Git commands. I like this guide, but it doesn't really tell you what Git is for (if you know nothing about it). I suggest you quickly Google what Git is and then refer to this link for some guidance.
- How to Write a Git Commit Message. Writing good Git commit messages helps other developers understand what you did. This article is a bit long but it tells you about all of the best practices in writing Git messages. If you want something nice and short instead, check out this post.
- Oh, shit, git!. This article covers different scenarios where working with Git can go wrong. It's very helpful if you're a beginner trying to understand how to fix common Git issues and mistakes.
- A successful Git branching model. This post is a bit more advanced. It talks about a branch structure that you can use for your repository to make developing large (team) projects easier.
Web development
This section talks about everything that can be called web design, including both frontend and backend development.
- The 2018 Web Developer Roadmap. Web design in 2018 looks nothing like it was 10 or even 5 years ago. This article has a lot of nice lists and diagrams that will help you understand what tools and technologies you need to learn for a particular task.
- Presentational and Container Components. An iconic post Dan Abramov which proposes a convenient way of thinking about different types of components in React. I found this very informative back when I first started using React. I don't always use these concepts in my code, but I find them useful to have in mind.
- How to NOT React: Common Anti-Patterns and Gotchas in React
- What makes a good frontend developer?
JavaScript
One could say that Node.js and general JavaScript development belong in the Web development section. Personally, JavaScript is my favourite language so I feel like it deserves a separate category.
- denysdovhan/wtfjs. This repository demonstrates some example of weird and unexpected JavaScript behaviour. It's a fun thing to read, but I wouldn't say it's particularly useful - some of the scenarios are quite extreme and are very unlikely to occur in actual code. Nevertheless, there are some interesting edge cases you might wanna check out.
Machine learning
Computer vision and image processing
- Camera Calibration and 3D Reconstruction. This page is a part of OpenCV documentation, but it gives a nice and quick introduction to the pinhole camera model and some types of distortion, which is useful even if you're not using OpenCV. Note that some conventions might vary in OpenCV vs. the rest of computer vision community.
- Camera Post-Processing Pipeline. A set of slides that talks about different techniques used to improve image quality on ISP level.
- Gamma Correction Explained. A pretty old article about gamma correction, but the concepts covered in it are relevant to this day.
- How to Convert Temperature (K) to RGB. Description of an algorithm for converting Kelvin temperatures for black body illumination into RGB values.
Accessibility
A lot of (hobby) web designers make websites that lack basic accessibility features. This section aims to help people understand what accessibility is about.
- 7 Things Every Designer Needs to Know about Accessibility. This post is a very good introduction to accessibility in web design. It tells you how people with disabilities use your websites and suggests several ways you can make your product more accessible.